Amazon-Ec2

從不同可用區 (AZ) 中的 EC2 實例連接到 RDS

  • July 25, 2016

好的,所以我有一個帶有三個應用伺服器的 VPC 和一個 RDS 中的 Postgres 實例。

我有一個名為“rds-staging”的安全組,它允許來自名為“app-elb-staging”的安全組在埠 5432 上的入站連接。

‘app-elb-staging’ 是應用於我所有 EC2 實例的安全組,它允許傳出流量去往任何地方。

RDS 實例位於 AZ us-east-1e 中。我可以從 us-east-1e (10.0.3.) 中的 EC2 實例連接到它,但不能從 us-east-1a (10.0.1.) 或 us-east-1c (10.0) 中的任何 EC2 實例連接到它.2.*):

deploy@ip-10-0-3-220:~$ nc -zv xxx.us-east-1.rds.amazonaws.com 5432
Connection to xxx.us-east-1.rds.amazonaws.com 5432 port [tcp/postgresql] succeeded!

deploy@ip-10-0-1-155:~$ nc -zv xxx.us-east-1.rds.amazonaws.com 5432
nc: connect to xxx.us-east-1.rds.amazonaws.com port 5432 (tcp) failed: No route to host

deploy@ip-10-0-2-90:~$ nc -zv xxx.us-east-1.rds.amazonaws.com 5432
nc: connect to xxx.us-east-1.rds.amazonaws.com port 5432 (tcp) failed: No route to host

有沒有人見過這個?我檢查了 DNS,每台機器都將主機名解析為相同的 IP (10.0.3.x)。

好的,終於找到了這個問題的根本原因。我使用的 AMI 正在創建一個網橋,導致連接問題,因為它與我的子網的 IP 衝突。sudo route -n在受影響的實例上,輸出如下所示:

ubuntu@ip-10-0-1-92:~$ sudo route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.1.1        0.0.0.0         UG    0      0        0 eth0
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 lxcbr0

任何到 10.0.2.* 的連接都會失敗:

deploy@ip-10-0-1-92:~$ nc -zv 10.0.2.53 22
nc: connect to 10.0.2.53 port 22 (tcp) failed: No route to host

刪除網橋sudo ifconfig lxcbr0 down解決了該問題,但使用最初未設置此網橋的 AMI 更正了根。

引用自:https://serverfault.com/questions/791533