【发布时间】:2015-02-03 13:06:46
【问题描述】:
我有 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 docker google-compute-engine fault-tolerance