连接到与EC2实例不同区域的RDS

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

所以我在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。

我还想念其他吗?谢谢!

总结我的设置:

美国东部

  • VPC CIDR:172.31.0.0/16
  • 路由表条目:目标10.0.0.0/16路由到us-west-1 VPC的对等连接。
  • EC2 IP: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的连接
amazon-web-services amazon-rds vpc aws-security-group
1个回答
0
投票

为了重现您的情况,我执行了以下操作:

us-east-1中:

  • [[创建VPC创建的VPC,使用“具有公共子网和私有子网的VPC” VPC向导,CIDR为us-east-1
  • public
  • 子网中启动了Amazon EC2 Linux实例

    172.31.0.0/16中:

    • [[创建VPC创建的VPC
    ,使用“具有公共子网和私有子网的VPC” VPC向导,CIDR为us-west-1
  • 添加了附加专用子网以允许创建使用多个可用区的Amazon RDS子网组
  • 在两个专用子网中创建了一个RDS子网组
  • 使用us-west-1私有
  • 子网中启动了Amazon RDS MySQL数据库

    设置对等:

    • 10.0.0.0/16中,创建了一个对等连接请求Publicly accessible = No中的VPC
    • us-east-1中,已接受
    对等请求

    配置路由:

    • us-west-1中,配置公共路由表(由EC2实例使用)以将us-west-1通信路由到对等的VPC
    • us-east-1中,配置专用路由表
    (由RDS实例使用)以将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实例关联。

    测试:

    • 使用ssh连接到RDS-SG中的EC2实例
    • 已安装的mysql客户端(10.0.0.0/16
    • 已连接到mysql:
us-east-1

成功连接通过对等连接到RDS数据库。

FYI,数据库的DNS名称解析为sudo yum install mysql(在us-west-1 VPC的CIDR范围内)。此DNS解析可用于both VPC。

总之,重要的位是:

  • 建立2-way对等连接
  • 配置RDS实例上的安全组以允许来自对等VPC的CIDR的入站连接
  • 无需使数据库可公开访问
© www.soinside.com 2019 - 2024. All rights reserved.