在Docker节点组而不是节点中平衡Docker服务

时间:2019-05-20 06:27:46

标签: docker docker-compose docker-swarm

我有以下问题:

我有一个docker服务,其中有2个副本和4个工作人员,分别分布在2个不同的数据中心中。

我知道当群组产生新副本时,每次都会在不同的主机中进行。如果我以某种方式标记它们,是否可以将其配置为在不同的节点组中生成它?

1 个答案:

答案 0 :(得分:1)

是的。

您可以将标签附加到节点,如下所示:

docker node update --label-add region=east worker-1
docker node update --label-add region=east worker-2
docker node update --label-add region=west worker-3
docker node update --label-add region=west worker-4

然后,您可以使用约束或位置偏好来启动服务:

# This will force your service to only run on nodes in your 'east' region
docker service create \
    --name myservice-east \
    --replicas 2 \
    --constraint node.labels.region==east \
    yourimage

# This will spread the replicas across the regions:
docker service create \
  --replicas 2 \
  --name spread-service \
  --placement-pref 'spread=node.labels.region' \
  myotherimage