使用 FDW 远程访问 postgresql 数据库

使用 FDW 远程访问 postgresql 数据库

我在不同位置托管了两台服务器,使用 Postgresql。

我想要通过服务器 2(Ubuntu 16)上的 postgresql FDW 访问服务器 1(CentOS 7)上的 Postgresql 数据。

问题是 :

psql: could not connect to server: Connection refused Is the server running on host "xxx.xxx.xxx.xxx" and accepting TCP/IP connections on port 5432?

我使用 编辑了 postgresql.conf 文件,listenaddresses='*' 并使用 编辑了 pghba.conf 文件host all all 0.0.0.0/0 md5

仍然不起作用,所以我认为这可能是由 iptables 引起的。我添加了以下规则:

iptables -A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --dport 5432 -j ACCEPT

还是不行。需要建议。

感谢您 !

(对不起我的英语不好)

答案1

从网络角度看,服务器 2 为客户端,服务器 1 为服务器。客户端的操作系统报告连接被拒绝当尝试连接到 xxx.xxx.xxx.xxx:5432 时。

一般来说,这个错误不是由防火墙引起的,因为防火墙往往会丢弃数据包,从而产生连接超时

这也不是由于基于 postgres 主机的身份验证失败,因为它们产生了完全不同且具体的错误消息。

以下是一些可能的理由:

  • PostgreSQL 确实没有在服务器 1 上监听端口 5432。这可以通过以netstat -tlnp | grep 5432root 身份运行来确认。请注意,配置参数是listen_addresses,而不是listenaddresses。此外,在进行此更改后,需要重新启动 postgres。您可以查看 postgres 服务器日志以确认它是否正常工作或检查它不起作用的原因。

  • 网络配置使得无法通过地址从服务器 2 访问服务器 1。xxx.xxx.xxx.xxx数据包被路由到其他地方,即网络接口上的 5432 TCP 端口未绑定到服务。例如,如果服务器 1 是虚拟化的,则预计无法通过其主机的地址直接访问它。

相关内容