脑裂问题

RabbitMQ 集群的网络分区容错性并不高,在网络质量较差的环境中会比较容易出现问题,其中最明显的就是脑裂问题

所谓的脑裂问题,就是在多机热备的高可用 HA 系统中,当两个节点心跳突然断开,就分裂为了两个独立的个体,由于互相失去联系,都认为对方出现了故障,因此都会去争抢对方的资源,争抢启动,由此就会发生严重的后果

举个形象的例子,A 和 B 作为一个双机热备集群的两个节点,各自持有集群的一部分数据 -- a 和 b,这时,两机器之间突然无法通信,A 认为 B 已经挂掉,B 认为 A 已经宕机,于是会出现:

  1. 如果 A 拥有 b 数据的备份,则 A 将以完整数据运行,B 也同样以完整数据运行,这将很可能导致两个节点同时读写共享数据造成数据损坏
  2. 如果 A、B 各自仅拥有 a、b 数据,那么两个节点要么均无法启动,要么以瓜分完整共享数据的方式启动

总之,无论是哪一种,都不是我们希望见到的

因此,在 RabbitMQ 官方文档中,明确建议了,不要在广域网环境下使用,否则,应该使用 federation 或者 shovel 插件

脑裂问题的解决

当然,我们不能要求集群的可用性或网络的健康达到 100%,即使在局域网中,发生故障的可能性也是存在的

RabbitMQ 3.1 以上版本提供了配置来解决这个问题:

[{rabbit,[{tcp_listeners,[5672]},{cluster_partition_handling, ignore}]}]

RabbitMQ 提供了三种配置:

  1. ignore:默认配置,发生网络分区时不作处理,当认为网络是可靠时选用该配置
  2. autoheal:各分区协商后重启客户端连接最少的分区节点,恢复集群(CAP 中保证 AP,有状态丢失)
  3. pause_minority:分区发生后判断自己所在分区内节点是否超过集群总节点数一半,如果没有超过则暂停这些节点(保证 CP,总节点数为奇数个)

使用 pause_minority 可以有效解决脑裂问题,但是会让集群在出现问题后无法使用

参考资料

RabbitMQ Clustering and Network Partitions -- http://www.rabbitmq.com/partitions.html

高可用方案之脑裂问题探讨(原创) -- http://czmmiao.iteye.com/blog/1180851

RabbitMQ 网络分区问题 -- http://88250.b3log.org/rabbitmq-network-partition

文章来源:https://techlog.cn/article/list/10183027

RabbitMQ脑裂问题相关推荐

  1. RabbitMQ脑裂问题解决方案调查

    RabbitMQ脑裂问题解决方案调查 参考文章: (1)RabbitMQ脑裂问题解决方案调查 (2)https://www.cnblogs.com/liyongsan/p/9640361.html 备 ...

  2. RabbitMQ脑裂

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  3. rabbitmq实战指南_RabbitMQ之脑裂

    点击上方蓝色字体,选择"设为星标" 9 10 本文总结<RabbitMQ实战指南>网络分区章节,并亲自实践才有这篇文章,手动处理章节详细记录了操作过程中的注意事项.如果 ...

  4. mysql 脑裂的问题,DRBD脑裂问题故障处理

    环境:Mysql+heartbeat+drbd 架构 问题:mysql-主 宕机 mysql-从接替之后,再恢复Mysql-主之后,发现主的drbd启动不了,而且从上面也无法辨识对方,从的状态是Pri ...

  5. 解决keepalived脑裂问题

    检测思路:正常情况下keepalived的VIP地址是在主节点上的,如果在从节点发现了VIP,就设置报警信息 脚本如下: #!/bin/bash # 检查脑裂的脚本,在备节点上进行部署 LB01_VI ...

  6. zookeeper脑裂

    出现: 在搭建hadoop的HA集群环境后,由于两个namenode的状态不一,当active的namenode由于网络等原因出现假死状态,standby接收不到active的心跳,因此判断activ ...

  7. 【Zookeeper】Zookeeper集群“脑裂”问题处理大全

    本文重点分享Zookeeper脑裂问题的处理办法.ZooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调内核,用户可以在此之上构建更多复杂的分布式协调功能. 脑裂通常会出现在 ...

  8. 说说Keepalived的脑裂

    1. 工作场景 Keepalived提供了Loadbalancing和High-Availability的功能, 本文说的是其为2个Mycat节点提供HA功能的场景. 2. 关键配置如下, 为主备非抢 ...

  9. Elasticsearch之集群脑裂

    集群脑裂是什么? 所谓脑裂问题(类似于精神分裂),就是同一个集群中的不同节点,对于集群的状态有了不一样的理解. 由于某些节点的失效,部分节点的网络连接会断开,并形成一个与原集群一样名字的集群,这种情况 ...

最新文章

  1. 福音!微信个人公众号可以改名了!
  2. 技术面试问项目难题如何解决的_技术创新 | 降本增效,青海农信社项目小伙刻苦钻研解决联合支架设计难题!...
  3. VS2008中对.Net 3.5 sp1程序打安装包的前提系统环境的配置
  4. 爆破linux密码 $6$3uwqC9JI$d9iPRmTDAoXs/IbsplxS3iyeErHqw7fUycacXNHyZk1UCSwFEydl515/zXN7OEwHnyUaqYcNG...
  5. 在众多编程语言中,你可知哪种语言的安全性更高,安全漏洞最少?
  6. Muse-UI +Vue2.0框架开发环境搭建
  7. sql 除以_避免SQL除以零错误的方法
  8. Alphabet旗下Sidewalk Labs试图通过比赛来打造智慧城市
  9. 130242014057 周陈清 实验一
  10. opencv-python学习一--人脸检测
  11. 2022 Java面试题
  12. 大学生数学建模竞赛心得(提高篇) 转
  13. 日记、2021/9/30
  14. 【manjaro安装最新的搜狗输入法】2022年1月4号有效测试
  15. 电容式压力传感器分类与原理
  16. 解读中国版新资本协议
  17. Pyspark获取hdfs上多个文件
  18. 电视显示通路故障或服务器不可用,我家的华为机顶盒连不上网,显示50%通路故障或AAA认证失败,这是怎回事?...
  19. ps在html中的应用程序,Photoshop在网页设计中的应用
  20. JPA Criteria Query

热门文章

  1. RK3588平台开发系列讲解(内核调试篇)CPU Hotplug 调试
  2. 编程如何修改磁盘上的一个族文件(*.rfa)文件中的参数值
  3. 95后自述,00后都这么卷了吗?
  4. 多vlan实现互访,使用NAT、DHCP、ACL等技术实现公司组网
  5. ESXI 7.0U3c添加网卡驱动到ISO
  6. 关于关税和汇率传导的文献综述概论-根据余智著作概括
  7. vm16.1安装macOS Big Sur 11.6
  8. java gc g1_Java 分代式GC与G1算法
  9. 李明顺:互联网金融最需要正能量
  10. Tre树(字典树)数据结构详解(图解)及模板