Buk*_*ram 10 docker dockerfile docker-compose docker-swarm docker-container
我在AWS上有2个节点的docker swarm集群.我停止了这两个实例,最初启动了swarm管理器,然后是worker.在停止实例之前,我有一个服务运行,其中4个副本分布在经理和工作人员之间.
当我首先启动swarm管理器节点时,所有副本容器都在管理器本身启动,而根本没有移动到worker.
请告诉我如何进行负载均衡?
当工人开始时,群体经理不负责吗?
Bre*_*her 23
如果服务处于默认的"复制模式",则当新的节点启动时,当前Swarm(18.03)不会移动或替换容器.这是设计的.如果我要添加一个新节点,我不一定要停止一堆其他容器,并在我的新节点上创建新容器.Swarm仅在必要时(在复制模式下)停止容器以"移动"副本.
docker service update --force <servicename> 将跨所有符合其要求和约束的节点重新平衡服务.
进一步的建议:与其他容器协调器一样,您需要在节点上提供容量,以便处理在中断期间移动的任何服务副本的工作负载.您的备用容量应与您计划支持的冗余级别相匹配.例如,如果要处理2个节点一次性失败的容量,则需要所有节点上的最小资源百分比,以便这些工作负载转移到其他节点.
这是我用来重新平衡的 bash 脚本:
#!/usr/bin/env bash
set -e
EXCLUDE_LIST="(_db|portainer|broker|traefik|prune|logspout|NAME)"
for service in $(docker service ls | egrep -v $EXCLUDE_LIST |
awk '{print $2}'); do
docker service update --force $service
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10914 次 |
| 最近记录: |