Rabbitmq主节点重新加入群集

问题描述:

我有3个rabbitmq节点的群集分布在3台不同的服务器上。第二个和第三个节点加入第一个节点并形成群集。在测试故障转移的过程中,我发现一旦主节点被终止,我无法使其重新加入群集。该文档没有说明我必须在启动后使用join_cluster或任何其他命令。我尝试了join_cluster,但由于具有名称的集群与节点主机相同,因此它被拒绝。有没有办法做到这一点?Rabbitmq主节点重新加入群集

cluster_status显示以下(不从主节点):

Cluster status of node '[email protected]<secondary>' ... 
[{nodes,[{disc,['[email protected]<primary>','[email protected]<secondary>', 
       '[email protected]<tertiary>']}]}, 
{running_nodes,['[email protected]<secondary>','[email protected]<tertiary>']}, 
{cluster_name,<<"[email protected]<primary>">>}, 
{partitions,[]}] 

甲引自here

已接合到群集中的节点可以在任何时候停止。 他们也可以崩溃。在这两种情况下,群集 的其余部分继续不受影响地运行,并且节点在其他群集节点再次启动时自动“赶上” 。

所以你只需要启动你杀死/停止的节点。如果它是“主要的”或不是有效的 - 如果它是主要的,然后被杀死,则其他一些节点成为主要节点。

我刚刚测试过这个(当然还有docker),并按预期工作。

+0

不适合我。如上面的消息所示。它不显示主节点正在运行。 – sharman

在其上的集群中的节点中的一个,使用命令

rabbitmqctl forget_cluster_node [email protected] 

为了使当前簇忘记旧的主。 现在,你应该能够归队的老主(rabbitmq1)集群

rabbitmqctl stop_app 
rabbitmqctl join_cluster [email protected] 
rabbitmqctl start_app 

reference cluster guide