首页 > 关于RabbitMQ同步失败

关于RabbitMQ同步失败

问题背景:
项目中使用到了RabbitMQ作为消息队列,采用的方式是两台机器做镜像,配置数据同步策略到两台机器。双机都采用了磁盘节点。

问题:
在机房的两次交换机问题中,内网通讯断开链接了一段时间,RabbitMQ自动shutdown,不能再接收和获取消息,通过List queues 发现两边数据不一致,打开RabbitMQ的日志发现在heart beat一段时间后,RabbitMQ自动shutdown,网络恢复后不会重启,手动重启后生效数据恢复一致。
如果是手动stop掉镜像中的其中一台机器,RabbitMQ不会进入这样的模式,而是仍然对外提供服务,请问一下为什么会这样?怎样避免网路出问题的时候RabbitMQ不会自动shutdown或者有什么机制保证网络恢复后自动重启?

如果遇到过同样问题的同学留下联系方式一起交流。


问题在于网络异常断开,状态无法同步(未知状态)。手动stop不会出现问题是因为关掉的时候,状态是已知的,因此能够恢复。

RabbitMQ的文档就有说不稳定的网络Cluster不稳定。

所以我觉得主要是引入一个监控->恢复的反馈机制(Roll your own):

EDIT: 你也可以看看这篇文档(For RabbitMQ 3.1+):

https://www.rabbitmq.com/partitions.html

有autoheal和pause_minority两种模式


与其这么麻烦,踩那么多坑,不如直接用云服务啊。阿里云的MNS消息服务:
https://yq.aliyun.com/articles/6372

【热门文章】
【热门文章】