两个rabbitmq节点rabbit@node1,rabbit@node2。
集群搭建完成后,下线rabbit@node2,
node2上执行rabbitmqctl stop 停止该节点上的服务。
node1上执行rabbitmqctl forget_cluster_node rabbit@node2。
之后尝试启动rabbit@node2时,报错rabbit@node2' thinks it's clustered with node 'rabbit@node1', but 'rabbit@node1' disagrees。
如果是用docker部署,可能要看容器日志。
事实上forget_cluster_node不是常规的下线节点的方式,这是一种强制剔除节点的方式。只适用于被剔除节点不再使用的情况。官网:https://www.rabbitmq.com/docs/clustering#forced-boot
正常下线节点请使用这种方式https://www.rabbitmq.com/docs/clustering#removing-nodes
上面的报错是因为rabbit@node2停止服务后,重新启动还认为自己在集群中,而rabbit@node1上执行了forget_cluster_node,认为rabbit@node2不属于集群。
自己搜索下线集群节点,基本都是用forget_cluster_node,真是害人不浅。遇到问题还是要多看官网文章啊。
另外我搭建的集群,集群名称默认不是第一个节点的集群名称,而还是各自rabbit@<本机hostname>,不知道为什么。跟下线集群节点一直出现上面的问题,我还以为我集群搭建的有问题。困扰我好久。
另另外,我join_cluster的时候报了三个错
01:43:06.545 [error] Failed to create a tracked connection table for node :rabbit@rabbitmq2: {:node_not_running, :rabbit@rabbitmq2}
01:43:06.545 [error] Failed to create a per-vhost tracked connection table for node :rabbit@rabbitmq2: {:node_not_running, :rabbit@rabbitmq2}
01:43:06.545 [error] Failed to create a per-user tracked connection table for node :rabbit@rabbitmq2: {:node_not_running, :rabbit@rabbitmq2}
我还以为又失败了呢,实际上是成功了的,抓狂!