docker swarm init --force-new-cluster命令的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker swarm init --force-new-cluster命令的使用相关的知识,希望对你有一定的参考价值。

参考技术A 这是最近碰到问题,然后重建swarm网络过程中用的命令以及经验总结。

字面意思是基于当前状态,重建swarm网络。

我们知道swarm是基于raft协议来运行的,所以通常会有多个manager节点,当超过半数的manager节点都存活的时候,swarm网络才能达成共识,执行操作,否则是不能做swarm相关的操作的。

注意 worker节点不参与投票,所以worker节点不影响swarm网络的状态。

假设现在有一个5 manager节点,3个worker节点的swarm cluster环境;对应5节点的swarm网络允许最大的manager节点宕数是2,也就是说可以挂掉1个或者2个manager节点,整个swarm cluster还能继续允许正常;但是如果挂掉了三个manager节点了,那么此时只有两个manager节点活的,而两个不能形成多数投票,此时swarm网络不能做任何swarm 相关的操作,例如: docker node ls, docker service ls 这些命令都不允许,因为没有超过半数的投票:

此时应该怎么办呢?最佳方案是把挂掉的其他manager节点赶快恢复回来,让swarm cluster重新形成多数活节点。

然而如果坏掉的节点彻底坏掉了,已经不能恢复了,那么怎么办呢?此时就可以使用 docker swarm init --force-new-cluster 命令。

注意此时虽然swarm cluster不能操作了,但是所有的worker都不影响正常的业务transaction。

命令 docker swarm init --force-new-cluster 需要在一台活着的manager节点上执行,其含义是:

此后用户就可以手动把其他的新节点加进来了:

至此就完整了恢复了swarm cluster环境。

docker swarm集群

docker swarm集群

docker swarm集群搭建起来也非常简单:

主要牵扯到如下几个一级子命令:
命令格式如下:
docker   init                  初始化一个docker swarm集群
              join                 向几个swarm集群中添加一个工作节点或者是管理节点
              join-token       管理集群节点中的令牌token
              leave              Leave the swarm
              unlock            Unlock swarm
              unlock-key     Manage the unlock key
              update           更新升级整个swarm集群

以上是关于docker swarm init --force-new-cluster命令的使用的主要内容,如果未能解决你的问题,请参考以下文章

docker 三剑客之docker swarm

Docker1.12 新增swarm集群

docker swarm集群

docker swarm模式使用traefik部署服务

【docker swarm】docker swarm 中的网段冲突问题

docker + swarm 集群