docker swarm堆栈可以平均分配服务到所有节点吗?

时间:2017-09-28 06:39:03

标签: docker docker-compose docker-swarm

我有:

  • 三个1群体管理器和2个群集工作节点
  • 相互连接的应用程序集群

搬运工-compose.yml

inv(Qow)

如果我运行Qow

  1. swarm管理器(service1),swarm node1(service2),swarm node2(service3)

  2. 群体管理器(service1,service2,service3),swarm node1(service1,service2,service3),swarm node3(service1,service2,service3)

  3. 结果是哪一个?

    如果是services: service1: ports: - 8888:8888 environment: - ADDITIONAL_NODES=service2:8889,service3:8890 service2: ports: - 8889:8889 environment: - ADDITIONAL_NODES=service1:8888,service3:8890 service3: ports: - 8890:8890 environment: - ADDITIONAL_NODES=service1:8888,service2:8889 ,我如何使用docker swarm部署docker stack deploy -c docker-compose.yml server?我需要使用docker swarm,因为我还使用了docker网络覆盖。

    如果是2,那么我的服务如何分发?它是“平均”分布的吗?如果是真的那么它在什么角度“平均”分布?

1 个答案:

答案 0 :(得分:1)

Docker swarm有一些逻辑,用于决定哪些服务在哪些节点上运行。它现在可能是你所期望的100%,但他们是聪明的人,并且可能会考虑你没有做的事情(例如CPU负载,可用内存......)

目标是均匀地分散负载,就像你的例子一样1.如果某些服务由于某种原因无法在一个节点上启动(就像你使用私有注册表但没有在堆栈中指定--with-registry-auth然后,服务将全部从那些可以在其他节点上失败后运行它们的节点开始。

根据个人经验,我可以告诉你,它可以很好地传播整个群体的任务,但不能保证服务的最终位置。

如果要强制服务运行的地方使用约束。