当前位置:首页 > 服务端 > RabbitMQ之集群故障恢复

RabbitMQ之集群故障恢复

1.环境

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

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

查看集群状态,3台虚拟机都是正常运行状态
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

使yzm2宕机,关闭yzm2对应的虚拟机
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

剔除yzm2的节点
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

重新启动yzm2的rabbitmq服务
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

报错信息:Node rabbit@yzm2 thinks it’s clustered with node rabbit@yzm3, but rabbit@yzm3 disagrees
意思是yzm2宕机不属于正常退出集群情况,仍然保留有集群的节点配置信息,但集群中已踢出了yzm2节点
解决方法清除保留的节点配置信息:rm -rf /var/lib/rabbitmq/mnesia/*
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记
mnesia目录里面的文件删除后,过一会就会重新生成的
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

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

yzm2重新加入集群
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

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

关闭yzm3、yzm2
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

yzm1宕机,关掉虚拟机
此时yzm1是最后的节点,最后的节点也就被当成主节点了
启动yzm2,它就会一直等待yzm1启动才能启动,超时了就启动失败
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

操作yzm3来剔除yzm1
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记
主要命令:
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重启加入集群是一样,都需要先删除节点配置信息
集群状态
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

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

当前集群有节点yzm2和yzm3
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

关闭节点yzm2
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

同时启动yzm1重新加入集群(启动rabbitmq服务前需要清除节点配置信息)
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

关闭yzm3节点,启动yzm2节点
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记
yzm2会一直等待,直到超时报错

正确的是,先咨询一下在集群中正常运行的yzm1再启动
rabbitmqctl update_cluster_nodes rabbit@yzm1
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

作者:yzm4399
来源链接:https://blog.csdn.net/qq_43654581/article/details/121516201

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/68752.html

标签: RabbitMQ
分享给朋友: