rabbitMQ集群异常

执行命令:

unable to connect to epmd (port 4369) on vm-246: nxdomain (non-existing domain)

rabbitmqctl join_cluster rabbit@hostname1

异常信息:

unable to connect to epmd (port 4369) on vm-246: nxdomain (non-existing domain)

原因分析:

由于不能解析hostname1

解决办法:
/etc/hosts 中把各个主机节点的hostname 加上

 

问题一: 

这里写图片描述
sudo rabbitmqctl join_cluster --ram rabbit@rabbitmq-node1
Clustering node rrabbit@rabbitmq-node1 with rabbit@rabbitmq-node1...
Error: unable to connect to nodes rabbit@rabbitmq-node1]: nodedown

DIAGNOSTICS
===========
attempted to contact: [rabbit@rabbitmq-node1]
rabbit@rabbitmq-node1:
  * unable to connect to epmd (port 4369) on rabbitmq-node1: nxdomain (non-existing domain)
current node details:
- node name: 'rabbitmqctl-526rabbitmq-node1'
- home dir: /var/lib/rabbitmq
- cookie hash: 50YO3zK+HJHos0tab1vHjg==


解决之道: 
集群节点间需能互相访问,故每个集群节点的hosts文件应包含集群内所有节点的信息以保证互相解析

vim /etc/hosts
1 IP    rabbit@rabbitmq-node1
2 IP    rabbit@rabbitmq-node2
3 IP    rabbit@rabbitmq-node3

之后重启各节点中的rabbitmq

 

问题二:

cluster搭建起来后若在web管理工具中rabbitmq_management的Overview的Nodes部

“Node statistics not available”
1
说明在该节点上web管理插件还未启用。

直接在显示提示信息的节点上运行

 rabbitmq-plugins enable rabbitmq_management
Error: mnesia_unexpectedly_running

原因:忘记先停止stop_app 
解决:

rabbitmqctl stop_app


问题三:

这里写图片描述

[rabbit@rabbitmq-node2 ~]$ sudo rabbitmqctl start_app
Starting node rabbit@rabbitmq-node2 ...
BOOT FAILED
===========
Error description:
   {error,{inconsistent_cluster,"Node rabbit@rabbitmq-node1  thinks it's clustered with node rabbit@rabbitmq-node1, but rabbit@rabbitmq-node2 disagrees"}}
Log files (may contain more information):
   /var/log/rabbitmq/rabbit@VMS00782.log
   /var/log/rabbitmq/rabbit@VMS00782-sasl.log
Stack trace:
   [{rabbit_mnesia,check_cluster_consistency,0},
    {rabbit,'-start/0-fun-0-',0},
    {rabbit,start_it,1},
    {rpc,'-handle_call_call/6-fun-0-',5}]
Error: {rabbit,failure_during_boot,
           {error,
               {inconsistent_cluster,
                   "Node rabbit@rabbitmq-node2 thinks it's clustered with node rabbit@rabbitmq-node1, but rabbit@rabbitmq-node2 disagrees"}}}

需要重置一下

[rabbit@rabbitmq-node2~]$  rabbitmqctl reset
Resetting node rabbit@rabbitmq-node2 ...
[rabbit@rabbitmq-node2~]$ rabbitmqctl start_app
Starting node rabbit@rabbitmq-node2 ...


问题四:

这里写图片描述

 

[root@redid-server01 mnesia]# rabbitmqctl join_cluster rabbit@rabbitmq-node2
Clustering node 'rabbit@redid-server01' with 'rabbit@rabbitmq-node2' ...
Error: {corrupt_or_missing_cluster_files,{error,enoent},{error,enoent}}

参考文档: 
http://www.rabbitmq.com/clustering.html
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
RabbitMQ集群脑裂(Cluster Split Brain)是指在一个RabbitMQ集群中,由于网络分区或节点间通信故障等原因,导致集群中的节点无法正常通信,形成了多个子集群,每个子集群都认为自己是有效的集群,从而导致数据的不一致和消息的丢失。 当发生脑裂时,不同的子集群可能会继续处理消息,并在各自的子集群中进行消息传递和存储。这会导致消息的重复传递、顺序混乱以及数据的不一致性。当网络分区被修复时,不同的子集群可能会试图重新连接并合并,但由于数据和状态的不一致性,可能会导致冲突和错误。 为了避免RabbitMQ集群脑裂问题,可以采取以下措施: 1. 使用心跳机制:RabbitMQ节点之间可以通过定期发送心跳消息来检测彼此的可用性。如果节点在一段时间内未收到其他节点的心跳响应,则可以认为网络出现故障或节点失效,从而避免脑裂问题。 2. 配置集群节点:在搭建RabbitMQ集群时,需要正确配置节点之间的通信参数,包括节点名称、IP地址、端口等。确保节点之间可以正常通信,避免因网络配置错误而导致脑裂问题。 3. 使用Quorum队列:RabbitMQ从3.8版本开始引入了Quorum队列,它使用多数投票算法来避免脑裂问题。Quorum队列提供了更强的数据一致性和容错能力,可以自动处理网络分区和节点失效的情况。 4. 监控和故障排除:定期监控RabbitMQ集群的运行状态,及时发现并处理可能导致脑裂问题的异常情况。同时,建立完善的故障排除机制,快速恢复集群的正常运行。 需要注意的是,尽管采取了预防措施,但在复杂的网络环境中,仍然无法完全排除脑裂问题的发生。因此,在设计分布式系统时应考虑到脑裂问题,并采取相应的容错和恢复策略来确保系统的可用性和数据一致性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值