RabbitMQ之集群故障恢复

1.环境

3台虚拟机并已搭建好了集群。查看 集群搭建
主节点yzm1(128)、从节点yzm2(129)、从节点yzm3(130)

2.主节点正常,从节点宕机

查看集群状态,3台虚拟机都是正常运行状态
在这里插入图片描述

使yzm2宕机,关闭yzm2对应的虚拟机
在这里插入图片描述

剔除yzm2的节点
在这里插入图片描述

重新启动yzm2的rabbitmq服务
在这里插入图片描述

报错信息:Node rabbit@yzm2 thinks it’s clustered with node rabbit@yzm3, but rabbit@yzm3 disagrees
意思是yzm2宕机不属于正常退出集群情况,仍然保留有集群的节点配置信息,但集群中已踢出了yzm2节点
解决方法清除保留的节点配置信息:rm -rf /var/lib/rabbitmq/mnesia/*
在这里插入图片描述
mnesia目录里面的文件删除后,过一会就会重新生成的
在这里插入图片描述

如果不小心把mnesia目录都给删除了,那么重新创建mnesia目录,但必须确保该目录的用户和组都是rabbitmq
命令:chown rabbitmq:rabbitmq /var/lib/rabbitmq/

yzm2重新加入集群
在这里插入图片描述

3.主节点宕机,从节点正常

关闭yzm3、yzm2
在这里插入图片描述

yzm1宕机,关掉虚拟机
此时yzm1是最后的节点,最后的节点也就被当成主节点了
启动yzm2,它就会一直等待yzm1启动才能启动,超时了就启动失败
在这里插入图片描述

操作yzm3来剔除yzm1
在这里插入图片描述
主要命令:
rabbitmqctl force_boot
rabbitmqctl start_app
rabbitmqctl forget_cluster_node rabbit@yzm1
我多次使用 --offline 参数,但没有使用成功过,不知道为什么
例如这样的用法:
rabbitmqctl forget_cluster_node --offline rabbit@yzm1
rabbitmqctl -n rabbit@yzm3 forget_cluster_node --offline rabbit@yzm1

最后重启yzm1并加入集群
这步操作跟上面yzm2重启加入集群是一样,都需要先删除节点配置信息
集群状态
在这里插入图片描述

4.启动节点前进行节点更新

当前集群有节点yzm2和yzm3
在这里插入图片描述

关闭节点yzm2
在这里插入图片描述

同时启动yzm1重新加入集群(启动rabbitmq服务前需要清除节点配置信息)
在这里插入图片描述

关闭yzm3节点,启动yzm2节点
在这里插入图片描述
在这里插入图片描述
yzm2会一直等待,直到超时报错

正确的是,先咨询一下在集群中正常运行的yzm1再启动
rabbitmqctl update_cluster_nodes rabbit@yzm1
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值