Go-Micro 服务发现失效:CentOS 7 防火墙配置导致服务不可用,如何解决?

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 的规则链影响了服务发现机制。通过以下步骤解决了问题:

  1. 清除 iptables 规则:
/etc/firewalld/direct-table-manager
iptables -f
/etc/firewalld/direct-table-manager
  1. 重新加载防火墙:
systemctl restart firewalld
  1. 将必要的端口添加到防火墙规则:
  • firewall-cmd --add-port=5672/tcp --permanent
  • firewall-cmd --add-port=5672/udp --permanent
  1. 重新加载防火墙:
systemctl restart firewalld

经过上述步骤,go-micro 能够自动发现服务,问题得以解决。

以上就是Go-Micro 服务发现失效:CentOS 7 防火墙配置导致服务不可用,如何解决?的详细内容,更多请关注其它相关文章!