我有一个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,[]}]
答案 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