Docker Swarm如何实现负载均衡?

eal*_*eon 6 docker docker-swarm

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

如果我想将docker实例扩展为15

docker service create --replicas 15 
Run Code Online (Sandbox Code Playgroud)

docker swarm如何知道启动容器的位置?

它是循环还是考虑到计算资源(使用了多少cpu/mem)?

Far*_*ahi 5

当您在Swarm模式下创建服务或对其进行扩展时,scheduleron Elected Leader(管理器之一)将选择一个节点来运行该服务。领导者目前可以使用3种策略。

  • 传播
  • 装箱
  • 随机

spreadbinpack根据节点的可用CPU,其RAM,它有容器的数量计算的战略级别。该random策略不使用任何计算。它随机选择一个节点,主要用于调试。

在该spread策略下,Swarm会针对容器数量最少的节点进行优化。该binpack策略使Swarm针对最拥挤的节点进行优化。

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

无法在Docker版本1.12.1中设置策略(最新发布至发布日期)