Go-Micro 服务发现失效:CentOS 7 防火墙配置导致服务不可用,如何解决?
go-micro 无法自动发现服务
在使用 go-micro 构建分布式微服务时,遇到无法自动发现服务的问题。以下问题描述和答案将帮助攻克此难题:
环境:
- go 1.14.7
- go-micro v2
- centos 7
现象:
在关闭防火墙的情况下,服务运行正常。但是,一旦开启防火墙,节点无法被发现,服务不可用。
测试方法:
必要的端口已添加到防火墙规则:
- firewall-cmd --zone=public --add-port=5672/tcp --permanent
- firewall-cmd --zone=public --add-port=5672/udp --permanent
防火墙和服务器已重启,但问题依然存在。
解决方案:
发现问题的根源在于 centos 7 中防火墙和 iptables 之间的一个坑。iptables 的规则链影响了服务发现机制。通过以下步骤解决了问题:
- 清除 iptables 规则:
/etc/firewalld/direct-table-manager iptables -f /etc/firewalld/direct-table-manager
- 重新加载防火墙:
systemctl restart firewalld
- 将必要的端口添加到防火墙规则:
- firewall-cmd --add-port=5672/tcp --permanent
- firewall-cmd --add-port=5672/udp --permanent
- 重新加载防火墙:
systemctl restart firewalld
经过上述步骤,go-micro 能够自动发现服务,问题得以解决。
以上就是Go-Micro 服务发现失效:CentOS 7 防火墙配置导致服务不可用,如何解决?的详细内容,更多请关注其它相关文章!