服务器重启后自动重新连接到 RabbitMQ 集群

Auto reconnect to RabbitMQ cluster after server restart

我有RabbitMQ的主从配置。作为两个 Docker 容器,具有动态内部 IP(每次重启时都会更改)。

集群在干净 运行 上工作正常,但如果其中一台服务器重新启动,它无法重新连接到集群:

rabbitmqctl join_cluster --ram rabbit@master
Clustering node 'rabbit@slave' with 'rabbit@master' ...
Error: {ok,already_member}

以下:

rabbitmqctl cluster_status
Cluster status of node 'rabbit@slave' ...
[{nodes,[{disc,['rabbit@slave']}]}]

表示该节点不在集群中。

我发现它的唯一方法是删除该节点,然后才尝试重新加入集群,例如:

rabbitmqctl -n rabbit@master forget_cluster_node rabbit@slave
rabbitmqctl join_cluster --ram rabbit@master

这行得通,但不适合我。我相信应该有更好的方法来重新加入集群,而不是忘记并再次加入。我看到还有一个命令 update_cluster_nodes,但似乎有些不同,不确定是否有帮助。

在容器重启时重新加入集群的正确方法是什么?

我知道这已经开放了一年,但我还是会回答以防万一它可能对某人有所帮助。

我相信这个问题已在最近的 RabbitMQ 版本中得到解决。

我实施了 Dockerized RabbitMQ Cluster using the Rabbit management 3.6.5 image,我的节点能够在容器或 Docker 主机重启时自动重新加入集群。