我有三个复制容器在群集模式服务中运行RabbitMQ。每个容器充当一个RabbitMQ节点来创建一个RabbitMQ集群。用于此的docker service create如下所示:
docker service create -e RABBITMQ_ERLANG_COOKIE='mysecretcookie' --replicas 4 --network rnet -p 15672:15672 -p 5672:5672 rabbitmq此后,我能够在每个从节点上使用rabbitmqctl <hostname> join_cluster成功地创建一个rabbitmqctl <hostname> join_cluster集群。
我的问题是,如果一个群集节点发生故障,Docker将在另一个节点上启动一个新容器,但是容器具有不同的随机主机名。
由于RabbitMQ使用主机名标识RabbitMQ集群节点,因此它不识别新容器上的新主机名,因此假定原始节点无限期关闭。
我尝试使用Docker1.13中的新模板特性,它允许您通过在--hostname="{{.Node.ID}}-{{.Service.Name}}"中指定docker service create来创建静态主机名。但是,您目前无法发现基于此自定义主机名的容器,因此不能以这种方式创建RabbitMQ集群。
我希望在Docker开始运行新容器后,RabbitMQ能够自动重新加入集群节点。这个是可能的吗?
发布于 2017-01-25 12:49:07
我希望在Docker开始运行新容器后,RabbitMQ能够自动重新加入集群节点。这个是可能的吗?
我假设您的意思是“重新加入新启动的docker容器中的集群节点”。
答案是-不是。因为,根据定义,不是重新加入,而是简单地加入,因为,从RabbitMQ的角度来看,这只是一台新机器(计算机、vm、坞.)在网络里。
https://stackoverflow.com/questions/41851243
复制相似问题