ActiveMQ Artemis故障恢复至主Broker时出现脑裂及连接异常问题
Artemis集群HA问题原因分析
问题1:主节点宕机后,多Broker URL的消费者无法连接激活的从节点
- 你用的URL(b)只配置了4个主节点的地址,没包含对应从节点的地址。当server1的主节点挂了,从节点升级为主,但客户端不知道这个从节点的存在,自然只会尝试连接列表里的其他主节点。
- 客户端URL未添加
ha=true参数。Artemis客户端需要开启HA模式,才能自动发现集群拓扑变化,感知到激活的从节点并切换连接。如果没开这个参数,客户端只会按给定的URL列表顺序尝试连接,不会主动更新拓扑信息。 - 激活的从节点未正确加入集群。如果从节点升级为主后,集群内其他节点没有同步它的拓扑信息,客户端也无法通过集群发现机制获取到这个节点的地址。
问题2:主节点重启后,从节点无法恢复为备份,出现脑裂异常
- 主节点重启时,网络延迟或分区导致
check-for-live-server=true未检测到已激活的从节点。主节点启动时会检查同组内是否有活跃节点,若因为网络问题没检测到,就会自己启动为激活状态,和从节点形成双主。 - 从节点的failback机制未触发。虽然配置了
allow-failback=true,但主节点重启后,可能因为网络通信故障、节点身份验证失败等原因,导致从节点没收到主节点的failback触发信号,继续保持激活状态。 - 集群拓扑同步异常。日志里的“Topology update ignored”提示说明,从节点收到主节点的拓扑更新时,检测到同组有另一个活跃节点(主节点),判定存在脑裂风险,所以忽略了该更新,最终导致两者都处于激活状态。
内容的提问来源于stack exchange,提问作者Nitin Zadage
相关产品推荐
相关产品推荐

