当服务器暂时停止时,如何使用swarm重新安排容器

时间:2018-02-15 06:41:01

标签: docker-swarm swarm

我使用docker-compose和swarm

运行两台服务器

停止A服务器时,A服务器中的容器将移至B服务器。

但是,启动A服务器时,B服务器中的容器不会移动到A服务器。

我想知道当服务器暂时停止时如何正确安排死服务器容器的位置

1 个答案:

答案 0 :(得分:1)

首先,为了让您的Swarm能够在节点出现故障时重新创建任务,您仍然需要大部分管理器节点仍然可用...所以如果它只是一个双节点Swarm,那么这就不行了这样做是因为你需要三个经理让一个人失败,另一个人要担任领导角色并重新安排失败的副本。 (仅供参考)

我认为你所要求的是“重新平衡”。当节点重新联机(或添加新节点)时,Swarm不会对设置为默认复制模式的服务执行任何操作。 Swarm不会“移动”容器,它会破坏并重新创建容器,因此它认为Node B上的服务仍然健康,并且不会将其移回节点A.它不希望破坏您的活动/健康服务在节点B上,因为节点A重新上线。

如果Node B失败,那么Swarm将再次在下一个最佳节点上重新安排任务。

如果节点B有很多容器,并且工作不平衡(即节点A为空且节点B有3个任务正在运行),那么您可以强制进行服务更新,这将破坏并重新创建该服务的所有副本并且会默认尝试将它们展开,这可能会导致其中一个任务以节点A结束。

docker service update --force <serivcename>