所以我在us-east-1
中有一个主RDS,在us-west-1
中有一个副本。两者都在各自区域的VPC内部。我想让我的us-east-1
中的EC2实例之一连接到副本实例。
一种简单的解决方案是启用对RDS副本的公共访问,并将EC2的IP添加到其安全组中,并且它可以正常工作。
但是我不想允许使用静态IP,而是希望访问我的us-east-1
VPC的整个CIDR范围,而且我也不希望我的实例可以公开访问。
[为此,我在两个区域之间建立了VPC对等连接,并在两个VPC的路由表中添加了条目,以将流量相互之间的CIDR范围转发到对等连接。
EC2实例的CIRD范围是172.31.0.0/16
,我已将其添加到us-west-1
区域中RDS副本的安全组中。但是由于某些原因,无法从我的EC2到达RDS。
我还想念其他吗?谢谢!
总结我的设置:
美国东部:
172.31.0.0/16
10.0.0.0/16
路由到us-west-1
VPC的对等连接。172.31.5.234
US WEST:
VPC CIDR:10.0.0.0/16
[路由表条目:目标172.31.0.0/16
路由到us-east-1
VPC的对等连接。
RDS:
172.31.0.0/16
的连接为了重现您的情况,我执行了以下操作:
在us-east-1
中:
us-east-1
)在172.31.0.0/16
中:
us-west-1
)us-west-1
在私有设置对等:
10.0.0.0/16
中,创建了一个对等连接请求到Publicly accessible = No
中的VPCus-east-1
中,已接受配置路由:
us-west-1
中,配置公共路由表(由EC2实例使用)以将us-west-1
通信路由到对等的VPCus-east-1
中,配置专用路由表10.0.0.0/16
通信路由到对等VPC安全组:
us-west-1
中,创建了一个安全组(172.31.0.0/16
),该组允许来自us-east-1
的入站端口22连接。将其与EC2实例关联。App-SG
中,创建了一个安全组(0.0.0.0/0
),该安全组允许来自us-west-1
的入站端口3306连接(这是对等连接的另一侧)。将其与RDS实例关联。测试:
RDS-SG
中的EC2实例10.0.0.0/16
)us-east-1
此成功连接通过对等连接到RDS数据库。
FYI,数据库的DNS名称解析为
sudo yum install mysql
(在us-west-1 VPC的CIDR范围内)。此DNS解析可用于both VPC。
总之,重要的位是: