1

我使用以下命令为具有 3 个副本的图像percona XtraDB 集群创建了 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与第三个副本一起使用

我应该怎么做才能在重新启动的 docker 机器上自动复制容器?

4

2 回答 2

1

我认为 docker swarm 中没有 docker service re balance 选项......您可以通过使用 --force 选项更新服务来重新分发容器

docker service update mysql-galera --force
于 2018-04-03T06:19:29.403 回答
0

您正在寻找的是一种根据具有容量的主/从节点的可用性自动重新平衡您的副本集的方法。然而,这样做将涉及杀死健康的容器并重新安排它们。

对于这个https://github.com/moby/moby/issues/24103,docker swarm 中有一个未解决的问题

现在,如果你想这样做,最好的方法似乎是向上/向下或创建一个推出,它将尝试重新安排集群中的容器。

于 2018-04-03T02:30:22.707 回答