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