我使用以下命令为图像 percona XtraDB集群创建了具有3个副本的docker服务
docker service create \
--name mysql-galera \
--replicas 3 \
-p 3306:3306 \
--network mynet \
--env MYSQL_ROOT_PASSWORD=mypassword \
--env DISCOVERY_SERVICE=10.0.0.2:2379 \
--env XTRABACKUP_PASSWORD=mypassword \
--env CLUSTER_NAME=galera \
perconalab/percona-xtradb-cluster:5.6
我已经使用三台机器(以mach1,mach2,mach3命名)初始化了docker swarm,并且所有机器都作为管理器加入。并且副本平均分配给三台机器中的每一台
当我尝试在 mach2 中停止docker守护程序时,docker在 mach3 中再创建了一个副本容器。我再次重启了docker守护进程, mach3 仍在运行两个副本,而 mach2 则没有。我在 mach3 中手动删除了容器, mach2 在第3个副本中取出
如何在重新启动的docker机器上自动复制容器?
答案 0 :(得分:1)
我不认为Docker服务重新平衡选项在docker swarm中可用.....你可以通过使用--force选项更新服务来重新分发容器
docker service update mysql-galera --force
答案 1 :(得分:0)
您正在寻找的是根据具有容量的主/从节点的可用性自动重新平衡您的复制集的方法。然而,这样做将涉及杀死健康的容器并重新安排它们。
docker swarm中有一个未解决的问题 https://github.com/moby/moby/issues/24103
现在,如果你想这样做,最好的方法似乎是向上/向下或创建一个试图重新安排群中容器的推出。