Docker Swarm如何实现负载均衡?

我有一个通过docker swarm join命令启动的10个Swarm节点集群

如果我想扩展docker实例到15通过

 docker service create --replicas 15 

docker工人怎么知道在哪里启动容器?

是循环还是考虑到计算资源(正在使用多lessCPU / MEM)?

当你创build一个服务或者在Swarm模式下进行扩展时, Elected Leader (经理之一)上的scheduler器会select一个节点来运行服务。 领导者目前有三种策略。

  • 传播
  • binpack
  • 随机

spreadbinpack策略根据节点的可用CPU,RAM和容器数来计算排名。 random策略不使用计算。 它随机select一个节点,主要用于debugging。

spread策略下,Swarm优化容器数量最less的节点。 binpack策略使Swarm针对最binpack的节点进行优化。

Swarm默认使用传播。 请记住,您也可以在特定节点上Constraint容器。

在Docker版本1.12.1(发布date的最新版本)中设置策略是不可能的,