RabbitMQ集群恢复与故障转移

本文详细介绍了RabbitMQ集群在不同故障场景下的恢复策略,包括节点故障、主从切换、数据恢复等复杂情况。通过实例解析了如何在节点停机后,通过控制台命令或数据恢复手段来重新建立镜像队列,确保服务高可用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提 : A, B两个节点组成一个镜像队列, B是Master节点

场景一

  • A先停, B后停
  • 解决方案 : 该场景下B是Master, 只要先启动B, 在启动A即可。或者先启动A, 30秒之内启动B即可恢复镜像队列

场景二

  • A, B同时停机
  • 解决方案 : 只需要在30秒内连续启动A和B即可恢复镜像

场景三

  • A先停, B后停, 且A无法恢复
  • 解决场景 : 因为B是Master, 所以等B启起来以后, 在B节点上调用控制台命令 : rabbitmqctl forget_cluster_node A解除与A的Cluster关系, 再将新的Slave节点加入B即可重新恢复镜像队列

场景四

  • A先停, B后停, 且B无法恢复
  • 解决方案 : 因为Master节点无法恢复, 所以较难处理, 在3.4.2之前没有什么好的解决方案, 但是现在已经有解决方案了, 在3.4.2以后的版本。因为B是主节点, 所以直接启动A是不行的, 当A无法启动时, 也就没有办法在A节点上调用rabbitmqctl forget_cluster_node B 命令了。但是在新版本中forget_cluster_node支持–offline参数, 支持线下移除节点。这就意味着运行rabbitmqctl在理想节点上执行命令, 迫使RabbitMQ在未启动Slave节点中选择一个节点作为Master。当在A节点执行**rabbitmqctl forget_cluster_node --offline B **时, RabbitMQ会mock一个节点代表A, 执行 forget_cluster_node命令将B移除cluster, 然后A
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值