网络分区原因
网络分区出现的原因是集群节点之间通信出现异常,导致各节点之间数据不同步,节点之间通信异常恢复后集群会分裂成多个网络分区(小集群)各自为政。
网络分区模拟
配置文件包含中cluster_partition_handling的配置为ignore
一个正常运行的3节点集群,集群状态如下
[root@test-192-168-1-41 ~]# rabbitmqctl cluster_status
Cluster status of node 'rabbit@test-192-168-1-41' ...
[{nodes,[{disc,['rabbit@test-192-168-1-41',
'rabbit@test-192-168-1-47',
'rabbit@test-192-168-1-48']}]},
{running_nodes,['rabbit@test-192-168-1-48',
'rabbit@test-192-168-1-47',
'rabbit@test-192-168-1-41']},
{cluster_name,<<"rabbit@test-192-168-1-41">>},
{partitions,[]},
{alarms,[{'rabbit@test-192-168-1-48',[]},
{'rabbit@test-192-168-1-47',[]},
{'rabbit@test-192-168-1-41',[]}]}]
关闭41节点的25672端口(集群间通信使用的端口),在41节点查看集群状态,发现集群不可用。
[root@test-192-168-1-41 ~]# iptables -I INPUT -p tcp --dport 25672 -j REJECT
[root@test-192-168-1-41 ~]# rabbitmqctl cluster_status
Cluster status of node 'rabbit@test-192-168-1-41' ...
Error: unable to connect to node 'rabbit@test-192-168-1-41': nodedown
DIAGNOSTICS
=&