解决云服务器docker swarm节点间无法通信问题
原因
如果你的swarm运行在默认端口,那么你就可能和我一样遇到了VXLAN默认端口4789/udp被云服务厂商阻断的问题。比如阿里云在文档中提到了这点,链接->阿里云添加udp监听文档。
解决方案
这个问题在docker:v19.03之前无法直接解决。19.03版本,docker在swarm init之上增加了–data-path-port uint32 的配置项用于更改docker swarm的VXLAN 4789端口。
下面以重新指定端口5789/udp为例
sudo docker swarm init --data-path-port 5789
初始化的时候要写全:
docker swarm init --autolock=false --advertise-addr 10.3.18.1 --listen-addr 10.3.18.13:2377 --data-path-port 5789
Docker Swarm集群部署防火墙开放端口
Docker版本1.12+
集群节点之间保证TCP 2377、TCP/UDP 7946和UDP 4789端口通信
TCP端口2377集群管理端口
TCP与UDP端口7946节点之间通讯端口
TCP与UDP端口4789 overlay网络通讯端口
firewall-cmd --zone=public --add-port=2377/tcp --permanent firewall-cmd --zone=public --add-port=7946/tcp --permanent firewall-cmd --zone=public --add-port=7946/udp --permanent firewall-cmd --zone=public --add-port=4789/tcp --permanent firewall-cmd --zone=public --add-port=4789/udp --permanent firewall-cmd --reload
转载于:https://www.cnblogs.com/Phantom3389/p/9281170.html
转载请注明:SuperIT » 解决云服务器docker swarm节点间无法通信问题