【发布时间】:2017-01-01 21:37:13
【问题描述】:
我在尝试实现将新容器添加到现有集群的最佳方法时遇到问题,而所有容器都在 docker 中运行。
假设我有一个 docker swarm,并且每当一个容器由于某种原因停止/失败时,swarm 会启动新容器并期望它将自己添加到集群中。
如何让任何容器都能够将自己添加到集群中?
我的意思是,例如,如果我想创建一个 RabbitMQ HA 集群,我需要创建一个 master,然后创建 slave,假设每个 RabbitMQ 实例(master 或 slave)都是一个容器,现在假设一个其中失败了,我们有两个选择:
1) 从属容器发生故障。
2) 主容器失败。
通常,一个能够作为集群运行的服务,它也能够选举一个新的leader作为master,所以,假设这个scenerio 在没有任何干预的情况下运行顺畅,添加到 swarm 的新容器(使用 docker swarm)如何能够将自己添加到集群中?
这里的问题是,新容器不是每次都使用新参数创建的,容器总是在第一次部署时创建,这意味着,我不能只更改它的命令行参数,这是一个云,所以我不能硬编码要使用的 IP。
这里有些东西不见了。 也许尝试在“docker Swarm”级别声明“服务”,实际上会让新容器能够将自己添加到集群中,而无需真正了解集群中的其他机器...
【问题讨论】:
标签: docker rabbitmq cloud cluster-computing docker-swarm