Docker群集副本在不同的节点上

我正在使用docker-compose文件版本3的部署密钥来运行swarm(docker版本为1.13),我想复制一个服务以便使其恢复单个节点的故障。

但是,当我添加这样的部署部分:

deploy: replicas: 2 

在我的四个节点集群中,有时最终会在同一个节点上安排两个副本。 我所缺less的是一个在不同节点上调度两个实例的约束。

我知道有一个我可以使用的global模式,但是它会在每个节点上运行一个实例,即在我的情况下是四个实例,而不是两个。

有没有一种简单的方法来以通用的方式指定这个约束,而不必求助于global和标签的组合来保持额外的实例呢?

编辑:再次尝试后,我发现这个时候在不同的节点上安排容器。 我开始怀疑是否可能有'node.hostname == X'约束。

编辑2:在另一个服务更新之后(并且没有任何布局限制),服务再次被安排在同一个节点上(如ManoMarks Visualizer所示 ):

在这里输入图像说明

你使用什么版本的docker? 按照这个post在1.13这个问题已经纠正了,看看: https : //github.com/docker/docker/issues/26259#issuecomment-260899732

希望这能回答你的问题。