docker swarm外部验证负载均衡时不生效的解决方案
程序员文章站
2022-05-18 18:17:34
问题描述我在本地创建了3个装了centos7的虚拟机, 并初始化了swarm集群, 即1个manager节点, 2个worker节点; 三台机子的ip分别是 192.168.124.8 - (mana...
问题描述
我在本地创建了3个装了centos7的虚拟机, 并初始化了swarm集群, 即1个manager节点, 2个worker节点; 三台机子的ip分别是 192.168.124.8 - (manager节点)
, 192.168.124.9 - (worker节点)
, 192.168.124.10 - (worker节点)
然后我通过下面的命令在swarm集群上起了一个服务
直接curl 工作者节点ip:端口 是可以拿到响应的, 但是返回的containerid一直不变, 并且如果直接访问manager节点的话是拿不到响应的, 似乎是负载均衡没有生效!
解决
经过一番搜索, 在stack overflow上找到了答案,
原来是防火墙的问题, 按照文档的说法, 要让 swarm mode routing mesh
生效的话, 在初始化swarm集群前必须开放7946
的tcp/udp
端口, 4789
的udp
端口,
所以如果是centos可以用下面的脚本开放端口, swarm集群里的每个主机都需要开放, 图方便这两个端口的tcp和udp都开放了; 开放完端口后还需要重启一下机器
到此这篇关于docker swarm外部验证负载均衡时不生效的文章就介绍到这了,更多相关docker swarm负载均衡内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!