Docker Swarm 如何负载均衡?
How does Docker Swarm load balance?
我有一个通过 docker swarm join
命令启动的 10 个 Swarm 节点集群
如果我想通过
将 docker 实例扩展到 15
docker service create --replicas 15
docker swarm 如何知道从哪里启动容器?
它是循环法还是考虑了计算资源(使用了多少cpu/mem)?
当您在 Swarm 模式下创建或扩展服务时,Elected Leader
上的 scheduler
(其中一位管理器)将选择一个节点来 运行 服务。目前有 3 种策略可供领导者使用。
- 传播
- binpack
- 随机
spread
和 binpack
策略根据节点的可用 CPU、RAM 和容器数量计算排名。 random
策略不使用计算。它随机选择一个节点,主要用于调试。
在spread
策略下,Swarm针对容器数量最少的节点进行优化。 binpack
策略使 Swarm 优化最拥挤的节点。
Swarm 默认使用传播。
请记住,您也可以 Constraint
特定节点上的容器。
无法在 docker 版本 1.12.1(发布日期的最新版本)
中设置策略
我有一个通过 docker swarm join
命令启动的 10 个 Swarm 节点集群
如果我想通过
将 docker 实例扩展到 15docker service create --replicas 15
docker swarm 如何知道从哪里启动容器?
它是循环法还是考虑了计算资源(使用了多少cpu/mem)?
当您在 Swarm 模式下创建或扩展服务时,Elected Leader
上的 scheduler
(其中一位管理器)将选择一个节点来 运行 服务。目前有 3 种策略可供领导者使用。
- 传播
- binpack
- 随机
spread
和 binpack
策略根据节点的可用 CPU、RAM 和容器数量计算排名。 random
策略不使用计算。它随机选择一个节点,主要用于调试。
在spread
策略下,Swarm针对容器数量最少的节点进行优化。 binpack
策略使 Swarm 优化最拥挤的节点。
Swarm 默认使用传播。
请记住,您也可以 Constraint
特定节点上的容器。
无法在 docker 版本 1.12.1(发布日期的最新版本)
中设置策略