3

我在亚马逊有两台机器。web01 和 db01。我在db01上安装了PostgreSQL,并将web01的弹性ip添加到pg_hba.conf

host dbname username 64.210.245.155/32 md5

并重新启动 postgresql 服务。现在在 web01 我尝试连接到 db01 的弹性 ip

$ psql -h 64.210.255.222 -U user -d database
psql: could not connect to server: No route to host
    Is the server running on host "64.210.255.222" and accepting
    TCP/IP connections on port 5432? 

我还将 web01 的弹性 ip 添加到 db01 的安全组中,用于入站流量。我做错了什么,如何让 web01 连接到 db01 上的 pg?

4

1 回答 1

3

首先,您要连接到内部 IP。如果您的弹性 IP,您可以使用 DNS 名称,因为它将解析为 AWS 内的内部 IP,而不是直接使用弹性 IP。

其次,所有公共 IP 都是通过 NAT 分配的。如果您的服务尝试侦听该 IP 地址,它将失败。通常最好的办法是监听所有 IP,除非您使用 VPC 并控制内部 IP。

最后,您将提供对 db 安全组中的 Web 安全组的访问权限。即使两个实例在同一个安全组中,它们也无法相互访问,除非该组被授予对自身的访问权限。

于 2013-11-08T17:35:19.857 回答