大佬们,有没有遇到过用docker swarm内网集群下,用 stack 启动3个节点的nacos为集群模式,已确认同一个network下网络是通的,3个节点8848,9848,9849端口均开放状态,nacos启动无异常,但是nacos集群总是有两台是down的,只有主节点的能正常访问,查看nacos日志一直在刷以下错误:
Fail to connect server, after trying 161 times, last try server is {serverIp = 'nacos-node1', server main port = 8848}, error = unknown
ERROR Server check fail, please check server nacos-node2 ,port 9849 is available , error ={}
服务器防火墙关闭了又是正常集群的,防火墙一打开就不行。compoose启动文件如下:
问题可能出在防火墙设置上,需要为Docker Swarm集群中的每个节点添加以下防火墙规则:
允许节点之间的TCP通信,端口范围为8848-9849(Nacos集群的端口范围)。
允许节点之间的UDP通信,端口范围为8848-9849(Nacos集群的端口范围)。
针对您遇到的问题,即在Docker Swarm内网集群环境下使用stack部署Nacos集群时,尽管网络通畅且端口已开放,但集群中始终有两台节点显示为DOWN状态,仅主节点可正常访问,并且在开启服务器防火墙后问题加剧,日志中出现连接失败的错误信息。结合提供的参考资料,以下是可能的解决方案和排查步骤:
检查Nacos配置一致性:
确保所有Nacos节点的配置文件(如cluster.conf
)中列出的集群成员信息一致且正确,包括IP地址和端口号。集群间的通信依赖于此配置[1]。
网络连通性验证:
虽然您提到网络是通的,但仍需逐一验证每个节点间8848、9848、9849端口的连通性,包括在防火墙开启状态下。可以使用ping
、telnet
或nc
命令进行测试。
防火墙与安全组规则:
Docker网络配置:
确认Docker Swarm服务使用的overlay网络配置正确,且服务发现机制(如DNS解析)在集群内部工作正常。确保Nacos容器内的网络配置没有限制对外通信。
Nacos日志深入分析:
云环境特定因素:
服务注册与发现调整:
确认Nacos服务实例在集群中的注册逻辑正确无误,避免因注册信息不准确导致的连接失败。
资源与性能监控:
综上所述,问题可能涉及多方面,需要综合检查网络配置、安全规则、服务配置及资源状况。逐一排查并针对性地调整,应该能帮助您定位并解决问题。
相关链接
使用docker部署nacos https://developer.aliyun.com/ask/604718
Nacos2.1 容器中报这个是因为啥问题? https://developer.aliyun.com/ask/548872
使用MSE的Nacos注册中心 步骤一:购买并构建Nacos引擎 https://help.aliyun.com/zh/sae/serverless-app-engine-classic/user-guide/use-an-mse-nacos-registry
如何解决MSE Nacos连接超时问题? 解决方案 https://help.aliyun.com/zh/mse/support/handle-the-timeout-issue-of-the-connection-between-an-application-and-an-mse-nacos-instance
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。