今天社区的小伙伴在腾讯云上遇到了一个奇怪的问题,下面记录一下这个问题的定位过程和问题原因。
问题现象
首先报错信息如下截图:
psql: FATAL: interconnect error: could not set up udp listener socket
此时整个集群的状态用gpstate去查看是正常的,但是psql就是登录不了。
问题定位
出现这个问题我第一反应是不是腾讯云的udp端口访问做了限制。然后我去就改了参数:gp_interconnect_type 从 udpifc 改为 tcp 发现问题仍然没有解决,报错信息类似。所以肯定不是这个原因导致的。
然后,如果集群没问题的话,psql没法创建udp listener socket,那可能跟IP信息有关系,于是我去查看了一下/etc/hosts这个主机的配置,找到了问题的原因。
原因就是:小伙伴配置hosts时,使用的是腾讯云对外提供的IP地址,这些地址在云主机上通过ifconfig命令是看不到的,应该是在网络层做了转发操作。所以IP都不存在,怎么能创建socket呢?
解决方法:最终的解决办法就是把所有主机的/etc/hosts配置都修改为本地集群内部的IP地址映射,然后重启集群,就可以正常连接使用了。
写在最后
现在在云上部署分布式数据库集群已经很常见了,GP在部署过程中,除了常规的防火墙等配置外,还需要注意以下几个点。
- 是否开启机器与机器之间的白名单访问策略;
- 是否开启机器之间的TCP和UDP端口访问支持策略;
- 内部沟通是否使用机器内部的有效IP地址;
- 外部访问是否开启了Master节点的外网IP和端口访问映射。
End
如果我的分享对您有帮助,还请点赞关注收藏,谢谢~
|