我有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
,但似乎有些不同,不确定它是否有帮助。
在容器重启时重新加入群集的正确方法是什么?
答案 0 :(得分:2)
我意识到这已经开了一年了,但我会回答以防万一它可以帮助别人。
我相信这个问题已在最近的RabbitMQ版本中得到解决。
我使用Dockerized RabbitMQ Cluster实现了Rabbit management 3.6.5 image,我的节点能够在容器或Docker主机重启时自动重新加入群集。