服务器重启后自动重新连接到 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 主机重启时自动重新加入集群。
我有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 主机重启时自动重新加入集群。