rabbitmq network partition配置

参考

Network partition detected
RabbitMQ 之 Clustering 和 Network Partition(翻译)
rabbitmq对network partition的处理
how did we recover from rabbitmq cluster network partition
RabbitMQ入门教程10--partitions
rabbitmq之partitions

0.描述

rabbitmq没有很好的分区容错性,因此,如果需要在广域网里使用rabbitmq集群,建议使用federation或者shovel进行替代。那么即使rabbitmq集群运行在局域网内也不能完全避免网络分区现象(network partition),例如,当路由器或者交换机出现问题,或者网口down掉时,都可能发生网络分区。

当发生网络分区时,不同分区里的节点都认为对方down掉,对exchange,queue,binding的操作都仅针对本分区有效;存储在mnesia的元数据(exchange相关属性,queue相关属性等)不会在集群间进行数据同步;另外,对于镜像队列,在各自的分区里都会存在一个master进程处理队列的相关操作。更重要的是,当网络分区恢复后,这些现象依旧是存在的!

1.现象

#vi /var/log/rabbitmq/rabbit\@mq236.log
=ERROR REPORT==== 30-Mar-2017::00:19:58 ===
Mnesia(rabbit@mq237): ** ERROR ** mnesia_event got {inconsistent_database, running_partitioned_network, rabbit@mq236}

#正常情况
[root@mq236 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node rabbit@mq236 ...
[{nodes,[{disc,[rabbit@mq236,rabbit@mq237,rabbit@mq238]}]},
 {running_nodes,[rabbit@mq237,rabbit@mq238,rabbit@mq236]},
 {cluster_name,<<"rabbit@mq237">>},
 {partitions,[]},
 {alarms,[{rabbit@mq237,[]},{rabbit@mq238,[]},{rabbit@mq236,[]}]}]

 #network partition异常情况
[root@mq236 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node rabbit@mq236 ...
[{nodes,[{disc,[rabbit@mq236,rabbit@mq237,rabbit@mq238]}]},
 {running_nodes,[rabbit@mq237,rabbit@mq236]},
 {cluster_name,<<"rabbit@mq237">>},
 {partitions,[{rabbit@mq237,[rabbit@mq238]},{rabbit@mq236,[rabbit@mq238]}]},
 {alarms,[{rabbit@mq237,[]},{rabbit@mq236,[]}]}]

2.配置项

  • ignore
    默认类型,不处理。
    要求你所在的网络环境非常可靠。例如,你的所有 node 都在同一个机架上,通过交换机互联,并且该交换机还是与外界通信的必经之路。

  • pause_minority
    rabbitmq节点感知集群中其他节点down掉时,会判断自己在集群中处于多数派还是少数派,也就是判断与自己形成集群的节点个数在整个集群中的比例是否超过一半。如果是多数派,则正常工作,如果是少数派,则会停止rabbit应用并不断检测直到自己成为多数派的一员后再次启动rabbit应用。注意:这种处理方式集群通常由奇数个节点组成。在CAP中,优先保证了CP。
    注意:pause_minority适用情形有限制,如3个节点集群,每次只down1个时,此模式适用。但如果网络都出问题,3节点会独立形成3个集群。

  • autoheal
    你的网络环境可能是不可靠的。你会更加关心服务的可持续性,而非数据完整性。你可以构建一个包含2个node的集群。
    当网络分区恢复后,rabbitmq各分区彼此进行协商,分区中客户端连接数最多的为胜者,其余的全部会进行重启,恢复到同步状态。

3.配置

在/etc/rabbitmq下新建rabbitmq.conf,加入:

[
 {rabbit,
  [{tcp_listeners,[5672]},
   {cluster_partition_handling, pause_minority}
]}
].

4.错误处理

  1. 选择一个想要保留的集群
  2. 重启其它分区内所有节点,当它们重新加入集群时,将从信任的分区中恢复状态。其他分区上已发生的操作将丢失。
  3. 重启信任分区内的所有节点以消除警告。

5.问题

1.设置类型为pause_minority后,一段时间后3节点集群变成3个独立集群;尝试配置为autoheal,一段时间后依然出现变为2个独立集群;
查阅日志(/var/log/rabbitmq/)发现,经常出现heartbeat报错:

=ERROR REPORT==== 30-Mar-2017::17:52:02 ===
closing AMQP connection <0.9426.203> (10.101.232.241:48740 -> 10.102.43.238:5672):
missed heartbeats from client, timeout: 60s

因此尝试将heartbeat从60s设置为200s,观察一段时间后未出现错误。

[
 {rabbit,
  [{tcp_listeners,[5672]},
   {heartbeat,200},
   {cluster_partition_handling,autoheal}
 ]}
].
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,579评论 18 139
  • 由于之前做的项目中需要在多个节点之间可靠地通信,所以废弃了之前使用的Redis pub/sub(因为集群有单点问题...
    iEpacJ阅读 1,950评论 0 1
  • 本文转载自http://dataunion.org/?p=9307 背景介绍Kafka简介Kafka是一种分布式的...
    Bottle丶Fish阅读 5,424评论 0 34
  • 本文档翻译自 http://redis.io/topics/cluster-tutorial 。 本文档是 Red...
    会跳舞的机器人阅读 66,907评论 2 21
  • 听说 在答题吧签约 就有好礼相送 我赶紧约了起来 你也来约吧 http://mp.weixin.qq.com/s/...
    玉在椟中求善价阅读 226评论 0 0