Docker Swarm集群IP冲突引起的故障处理

Docker Swarm集群IP冲突引起的故障处理

起因

因为要扩展docker Sarm集群数量,就从集群中选取一台虚机做模板,复制两台新虚机,但忘记改IP了(严重失误啊),第二天发现docker Sarm集群不能正常运行了,总是提示找不到leader,然后分布式存储glusterfs也不能正常工作,根据现象,最终判断应该有网络冲突,这才记起复制的两台虚机没有改IP,且模板机刚好是集群的管理节点。

解决步骤

1、修改复制的虚机IP和hostname,解决IP冲突问题,并在两虚机上运行docker swarm leave命令退出集群 (但运行命令后提升错误,提示要加--force,后再次运行 docker swarm leave --force成功退出。)
2、在产生冲突的IP原虚机上运行docker swarm leave --force,暂时退出集群。
3、本以为集群能正常工作,谁知还是不行,还是提示没有leader。在管理节点上运行docker node ls命令,查看到刚才已退出节点还在集群中,且状态还处于Ready Active ,只是MANAGER STATUS已是unreachable了(期间,曾将集群所有节点重启N次,但还是一样的问题。)
4、大杀招来了,选择集群的一个管理节点,运行docker swarm init --force-new-cluster --advertise-addr 当前节点IP:2377,还是提示错误(当时只顾解决故障,没有记录错误提示),又选择集群中另一管理节点,再运行docker swarm init --force-new-cluster --advertise-addr 当前节点IP:2377,终于提示成功了,内容如下:

Swarm initialized: current node (81cg74xcx7ioesisyk54wsipe) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-3h568v952bl2e0ayz76l4irc7v49bkvsok1kodf46axjbsjbai-cmuobrf4zbwg22qdj07y3krrq 当前节点IP:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

5、在当前管理节点运行docker node ls命令,查看到刚才强行退出节点和其中一个管理节点的状态已经是down了,又发现2个节点,原先是工作节点,现在变成管理节点了(估计是重新选举了)
6、继续在当前管理节点运行docker node rm 节点ID,将两个已经down状态的节点从集群删除。
7、最后在已退出集群的节点上,运行docker swarm join --token SWMTKN-1-3h568v952bl2e0ayz76l4irc7v49bkvsok1kodf46axjbsjbai-cmuobrf4zbwg22qdj07y3krrq 管理节点IP:2377,再次加入集群。
备注:docker swarm init --force-new-cluster --advertise-addr 当前节点IP:2377该命令是指将去除本机之外的所有管理器身份,强制从当前状态创建一个新的群集(Swarm)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值