美文网首页
【工作问题】docker swarm新worker node与原

【工作问题】docker swarm新worker node与原

作者: 静筱 | 来源:发表于2019-01-25 16:28 被阅读0次

    问题描述

    线上有三台服务器,组成一个manager, 两个worker的docker swarm集群。

    在把两台新的线上机器加入到集群时遇到以下问题:

    1. 打到新机器的服务无法注册到部署到原有机器上的eureka, 反之,如果eureka打到新机器上,原有机器上的服务也无法注册到eureka.

    总之,机器加入swarm cloud做作worker node没问题。
    服务部署也没问题。
    只有服务结点之间相互调用时的通讯有问题。

    com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
    

    新结点加入docker swarm cluster的流程

    参考文档:tbd

    可能问题

    • 布署应用前创建的overlay网络,没有在新结点上生效

    docker swarm中部署服务前需要为服务创建新的overlay网络,并在docker-compose-swarm.yml部署文件里指定各个服务都使用这个网络。

    猜测加入新结点时,overlay网络己经创建。

    删除原有stack服务及网络,重新创建overlay网络,部署服务。

    问题没有解决。

    • 虚拟机底层平台的问题

    搜到以下文章:
    https://blog.csdn.net/pyktpykt/article/details/84589235

    虽然我们的虚拟机不是基于nsx平台。但是这里我获得到了一个信息:

    docker swarm cluster各结点间通信依赖于三个端口2377, 7946,4789

    其中:
    tcp端口2377为集群管理端口

    tcp与udp端口7946为节点之间通讯端口

    tcp与udp端口4789为overlay网络通讯端口(overlay网络为二层与三层之间新型通讯技术)

    进一步检查了一下这三个端口在新旧机器上的开启情况:

    netstat -tulnp|grep 4789
    

    这一端口只在旧机器上开启了,两台新机器上未开启。

    最终解决

    我们机器上使用的是iptable,所以在iptable里加上以下端口:

      iptables -A INPUT -p tcp --dport 2377 -j ACCEPT
      iptables -A INPUT -p tcp --dport 7946 -j ACCEPT
      iptables -A INPUT -p udp --dport 7946 -j ACCEPT
      iptables -A INPUT -p tcp --dport 4789 -j ACCEPT
      iptables -A INPUT -p udp --dport 4789 -j ACCEPT
    
      service iptables save
    

    同时需要确保firewalld关闭

    systemctl stop firewalld
    

    如果只用了firewalld,做如下配置:

    # firewall-cmd  --add-port=2377/tcp --permanent
    
    # firewall-cmd --add-port=7946/tcp --permanent
    
    # firewall-cmd --add-port=7946/udp --permanent
    
    # firewall-cmd --add-port=4789/tcp --permanent
    
    # firewall-cmd --add-port=4789/udp --permanent
    
    # firewall-cmd --reload
    

    相关文章

      网友评论

          本文标题:【工作问题】docker swarm新worker node与原

          本文链接:https://www.haomeiwen.com/subject/tbqvjqtx.html