Rabbitmq主节点重新加入群集

时间:2016-04-12 21:53:16

标签: rabbitmq cluster-computing failover

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

cluster_status显示以下内容(不是来自主节点):

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

2 个答案:

答案 0 :(得分:0)

来自here

的引用
  

可以随时停止已加入群集的节点。   它们也可以崩溃。在这两种情况下,群集的其余部分   继续运行不受影响,节点自动“赶上”#34;   与其他群集节点重新启动时。

所以你只需要启动你杀死/停止的节点。如果它是&#34;主要&#34;并不会有所作为。或不 - 如果它是主要的然后被杀死,其他一些节点成为主要节点。

我刚刚对此进行了测试(当然还有docker)并按预期工作。

答案 1 :(得分:0)

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

rabbitmqctl forget_cluster_node rabbit@rabbitmq1

使当前群集忘记旧主要群集。 现在,您应该能够重新加入旧主服务器上的集群(rabbitmq1)

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq2
rabbitmqctl start_app

请参阅reference cluster guide