RabbitMQ脑裂问题
脑裂问题
RabbitMQ 集群的网络分区容错性并不高,在网络质量较差的环境中会比较容易出现问题,其中最明显的就是脑裂问题
所谓的脑裂问题,就是在多机热备的高可用 HA 系统中,当两个节点心跳突然断开,就分裂为了两个独立的个体,由于互相失去联系,都认为对方出现了故障,因此都会去争抢对方的资源,争抢启动,由此就会发生严重的后果
举个形象的例子,A 和 B 作为一个双机热备集群的两个节点,各自持有集群的一部分数据 -- a 和 b,这时,两机器之间突然无法通信,A 认为 B 已经挂掉,B 认为 A 已经宕机,于是会出现:
- 如果 A 拥有 b 数据的备份,则 A 将以完整数据运行,B 也同样以完整数据运行,这将很可能导致两个节点同时读写共享数据造成数据损坏
- 如果 A、B 各自仅拥有 a、b 数据,那么两个节点要么均无法启动,要么以瓜分完整共享数据的方式启动
总之,无论是哪一种,都不是我们希望见到的
因此,在 RabbitMQ 官方文档中,明确建议了,不要在广域网环境下使用,否则,应该使用 federation 或者 shovel 插件
脑裂问题的解决
当然,我们不能要求集群的可用性或网络的健康达到 100%,即使在局域网中,发生故障的可能性也是存在的
RabbitMQ 3.1 以上版本提供了配置来解决这个问题:
[{rabbit,[{tcp_listeners,[5672]},{cluster_partition_handling, ignore}]}]
RabbitMQ 提供了三种配置:
- ignore:默认配置,发生网络分区时不作处理,当认为网络是可靠时选用该配置
- autoheal:各分区协商后重启客户端连接最少的分区节点,恢复集群(CAP 中保证 AP,有状态丢失)
- 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脑裂问题相关推荐
- RabbitMQ脑裂问题解决方案调查
RabbitMQ脑裂问题解决方案调查 参考文章: (1)RabbitMQ脑裂问题解决方案调查 (2)https://www.cnblogs.com/liyongsan/p/9640361.html 备 ...
- RabbitMQ脑裂
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- rabbitmq实战指南_RabbitMQ之脑裂
点击上方蓝色字体,选择"设为星标" 9 10 本文总结<RabbitMQ实战指南>网络分区章节,并亲自实践才有这篇文章,手动处理章节详细记录了操作过程中的注意事项.如果 ...
- mysql 脑裂的问题,DRBD脑裂问题故障处理
环境:Mysql+heartbeat+drbd 架构 问题:mysql-主 宕机 mysql-从接替之后,再恢复Mysql-主之后,发现主的drbd启动不了,而且从上面也无法辨识对方,从的状态是Pri ...
- 解决keepalived脑裂问题
检测思路:正常情况下keepalived的VIP地址是在主节点上的,如果在从节点发现了VIP,就设置报警信息 脚本如下: #!/bin/bash # 检查脑裂的脚本,在备节点上进行部署 LB01_VI ...
- zookeeper脑裂
出现: 在搭建hadoop的HA集群环境后,由于两个namenode的状态不一,当active的namenode由于网络等原因出现假死状态,standby接收不到active的心跳,因此判断activ ...
- 【Zookeeper】Zookeeper集群“脑裂”问题处理大全
本文重点分享Zookeeper脑裂问题的处理办法.ZooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调内核,用户可以在此之上构建更多复杂的分布式协调功能. 脑裂通常会出现在 ...
- 说说Keepalived的脑裂
1. 工作场景 Keepalived提供了Loadbalancing和High-Availability的功能, 本文说的是其为2个Mycat节点提供HA功能的场景. 2. 关键配置如下, 为主备非抢 ...
- Elasticsearch之集群脑裂
集群脑裂是什么? 所谓脑裂问题(类似于精神分裂),就是同一个集群中的不同节点,对于集群的状态有了不一样的理解. 由于某些节点的失效,部分节点的网络连接会断开,并形成一个与原集群一样名字的集群,这种情况 ...
最新文章
- 福音!微信个人公众号可以改名了!
- 技术面试问项目难题如何解决的_技术创新 | 降本增效,青海农信社项目小伙刻苦钻研解决联合支架设计难题!...
- VS2008中对.Net 3.5 sp1程序打安装包的前提系统环境的配置
- 爆破linux密码 $6$3uwqC9JI$d9iPRmTDAoXs/IbsplxS3iyeErHqw7fUycacXNHyZk1UCSwFEydl515/zXN7OEwHnyUaqYcNG...
- 在众多编程语言中,你可知哪种语言的安全性更高,安全漏洞最少?
- Muse-UI +Vue2.0框架开发环境搭建
- sql 除以_避免SQL除以零错误的方法
- Alphabet旗下Sidewalk Labs试图通过比赛来打造智慧城市
- 130242014057 周陈清 实验一
- opencv-python学习一--人脸检测
- 2022 Java面试题
- 大学生数学建模竞赛心得(提高篇) 转
- 日记、2021/9/30
- 【manjaro安装最新的搜狗输入法】2022年1月4号有效测试
- 电容式压力传感器分类与原理
- 解读中国版新资本协议
- Pyspark获取hdfs上多个文件
- 电视显示通路故障或服务器不可用,我家的华为机顶盒连不上网,显示50%通路故障或AAA认证失败,这是怎回事?...
- ps在html中的应用程序,Photoshop在网页设计中的应用
- JPA Criteria Query
热门文章
- RK3588平台开发系列讲解(内核调试篇)CPU Hotplug 调试
- 编程如何修改磁盘上的一个族文件(*.rfa)文件中的参数值
- 95后自述,00后都这么卷了吗?
- 多vlan实现互访,使用NAT、DHCP、ACL等技术实现公司组网
- ESXI 7.0U3c添加网卡驱动到ISO
- 关于关税和汇率传导的文献综述概论-根据余智著作概括
- vm16.1安装macOS Big Sur 11.6
- java gc g1_Java 分代式GC与G1算法
- 李明顺:互联网金融最需要正能量
- Tre树(字典树)数据结构详解(图解)及模板