EC2无法连接到VPC中的RDS

问题描述 投票:0回答:1

我正在尝试从同一VPC中的EC2实例连接到RDS实例。

EC2和RDS实例都具有“默认”安全组,该安全组允许来自具有相同安全组的其他实例的入站流量。

入站规则:

“入站规则”

出站规则允许所有流量:

“出站规则”

我的RDS终结点的端口是5432。从EC2实例来看,nslookup成功,但是telnet没有。

[ec2-user@ip-172-31-23-123 ~]$ nslookup <my-rds-endpoint>
Server:         172.31.0.2
Address:        172.31.0.2#53

Non-authoritative answer:
Name:   <my-rds-endpoint>
Address: 172.31.34.64

[ec2-user@ip-172-31-23-123 ~]$ telnet <my-rds-endpoint> 5432
Trying 172.31.34.64...
telnet: connect to address 172.31.34.64: Connection timed out

我还应该尝试什么?

此外,telnet命令尽管使EC2处于“运行”状态,但通常会使EC2无响应并且无法通过SSH进入。我正在使用带有AMI ami-097834fcb3081f51a的t2.medium现货实例,但已将其复制为多个实例和实例类型。

amazon-web-services amazon-ec2 amazon-rds
1个回答
0
投票

这种设置的正常配置是:

    应用程序(App-SG)使用的
  • A Amazon EC2实例上的安全组,允许相关端口(例如HTTP,HTTPS和RDP或SSH)上的入站流量进行管理或使用Session Manager。
  • A Amazon RDS实例上的安全组RDS-SG)允许从App-SG通过端口5432(Postgres)进行入站访问

即,RDS-SG应在入站规则中专门引用App-SG。这样,可以单独控制对每个层的访问,而不是将它们“置于”同一安全组中。 (资源实际上并未“进入”安全组。相反,安全组规则分别适用于与该安全组关联的所有实例。)

Amazon RDS数据库应该已经以Publicly Accessible = No启动,这将导致数据库的DNS名称解析为私有IP地址。如果将其设置为Yes,则流量将离开VPC,然后重新进入,这是不希望的。

要确认数据库是否正常运行,请通过SQL客户端(例如psql)进行连接。这比使用Telnet更适合测试连接。

© www.soinside.com 2019 - 2024. All rights reserved.