老郑的博客

木叶飞舞之处,火亦生生不息!

Docker swarm上线的一些问题

简介

  由于公司高峰业务,单机服务不能承载那么多的并发量,考虑使用docker swarm作为集群。主要记录此次上线使用碰到的一些问题

4789端口和阿里云udp端口冲突问题

  这个是最没有想到的问题,在测试环境的时候,节点之间的镜像同步发现没问题。但是上线之后,发现当更新镜像的时候,从节点一直报错No such image。首先想到的是iptable设置问题。

  通过firewall-cmd --zone=public --list-ports查看发现端口都已经开放

  • 用于集群管理通信TCP端口2377
  • TCP和UPD端口7946,用于节点之间的通信
  • UPD端口4789,用于overlay网络流量。


  检查主节点和从节点的iptables都没有发现.查看集群结点的话,也都是正常状态。链接在此

  后来在查看一个链接的时候,发现了阿里云这里有这个问题。


  这里也就是4789位系统保留端口。所以导致集群之间无法进行同步。找到问题后,把4789端口改变为5789.该问题顺利解决。

  在创建docker swarm的时候,指定UDP端口号(范围1024-49151之间).并且docker 版本必须在1.40+

  docker swarm init --advertise-addr 192.168.1.1 --data-path-port 5789

集群结点崩溃

  发生的情况是,测试的时候,如果有3个结点,当其中一个Leader节点leave的时候,此时在执行命令就会报错。

Error response from daemon: rpc error: code = 4 desc = context deadline exceeded

  使用该参数是保证,当丢失Leader时,强制重建集群

  docker swarm init --force-new-cluster --advertise-addr 192.168.1.1 --data-path-port 5789
posted @ 2020-08-08 15:02  zyz1  阅读(739)  评论(0编辑  收藏  举报