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

时间:2015-02-03 13:06:47

标签: rabbitmq docker google-compute-engine fault-tolerance

我有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,但似乎有些不同,不确定它是否有帮助。

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

1 个答案:

答案 0 :(得分:2)

我意识到这已经开了一年了,但我会回答以防万一它可以帮助别人。

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

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