Rabbitmq集群状态检查

  • 通过后台检查集群状态:

image.png

partitions正常是[],出现网络分区时会有{分区节点1,[节点2,节点3]}的状态。(网络分区可以理解为“脑裂”)

running_nodes正常显示是: 集群的所有节点信息都会有,上图就只有02节点,说明02这个节点出现网络分区,只看到自己运行的节点


  • 通过web端检查集群状态:

web端是mq服务地址的15672端口,通过用户名密码即可进入。下图可以看出rabbitmq集群出现了“Network partition”网络分区的问题了。

image.png


  • 网络分区修复

出现了网络分区,需要重启分区节点的rabbitmq服务,恢复网络分区

image.png

在所有rabbitmq节点的配置文件中加入防脑裂参数(重启服务后生效):

# vi /etc/rabbitmq/rabbitmq.conf  (无该配置文件则新增)

cluster_partition_handling = pause_minority

然后需要修改属组权限:

# chown rabbitmq. /etc/rabbitmq/rabbitmq.conf

重启rabbitmq-server服务:

# systemctl restart rabbitmq-server


  • 重点:最后还需要注意的一点,出现网络分区后,虽然修复了rabbitmq集群的网络分区问题,但是在网络分区期间在分区节点创建的队列消息需要去检查是否同步到其他节点。如下图,同步正常是“+2”,(集群节点数-1),即成功同步到其他节点上了。如下图:

image.png

"D ha-allqueue" 队列: D表示持久化,ha-allqueue表示所有消息都镜像复制


image.png

"AD Excl":AD表示自动删除(auto delete),Excl表示独占(exclusive),这种队列我们就不用关心是否 "+2"了。


除了这种AD Excl状态的队列,其他如果没有"+2"的话,该队列需要手动进行同步(可以点击进入该队列信息,然后有个synchronous的按钮,点一下即可)


所属分类
推荐知识