Amazon-Ec2
從不同可用區 (AZ) 中的 EC2 實例連接到 RDS
好的,所以我有一個帶有三個應用伺服器的 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 更正了根。