如何排查使用 VPC 公有子网或私有子网连接 Amazon RDS 数据库实例时遇到的问题?
上次更新时间:2022 年 2 月 24 日
我无法连接到我的 Amazon Relational Database Service (Amazon RDS) 数据库实例。我该如何排查 Amazon Virtual Private Cloud (Amazon VPC) 公有子网或私有子网中的连接问题?
简短描述
Amazon RDS 数据库可以在 VPC 的公有子网或私有子网中启动。连接问题可能由错误的 VPC 配置或您要连接的客户端上的配置或连接问题引起。
要解决这些问题,请根据您的环境参阅以下解决方法。
解决方法
注意:如果您在运行 AWS Command Line Interface (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI。
我的数据库实例在公有子网中,但我无法从本地计算机通过互联网连接它
此问题可能会在将数据库实例的可公开访问属性设为否时发生。若要检查数据库实例是否可公开访问,您可以使用 Amazon RDS 控制台或 AWS CLI。
若要将 Amazon RDS 实例的可公开访问属性更改为是,请按以下步骤操作:
1. 验证是否有互联网网关连接到您的 VPC。确保安全组的入站规则允许进行连接。
2. 打开 Amazon RDS 控制台。
3. 从导航窗格中选择数据库,然后选择数据库实例。
4. 选择修改。
5. 在连接下,展开其他配置部分,然后选择可公开访问。
6. 选择继续。
7. 选择修改数据库实例。
注意:您无需选择 Apply Immediately(立即应用)。有关 Apply Immediately(立即应用)如何影响停机时间的更多信息,请参阅使用 Apply Immediately(立即应用)设置。
我的数据库实例在私有子网中,但我无法从本地计算机连接它
您可以使用公有子网解决此问题。使用公有子网时,子网上的所有资源均可从互联网访问。如果此解决方案不满足您的安全性要求,请使用 AWS Site-to-Site VPN。借助 Site-to-Site VPN,您可以配置客户网关,以便您的 VPC 可以连接到远程网络。
解决此问题的另一种方法是使用 Amazon EC2 实例作为堡垒(跳转)主机。有关更多信息,请参阅如何将 Amazon EC2 实例用作堡垒主机以从本地计算机连接到私有 Amazon RDS 数据库实例?
若要切换到公有子网:
1. 打开 Amazon RDS 控制台。
2. 从导航窗格中选择数据库,然后选择数据库实例。
3. 从连接与安全部分复制数据库实例的终端节点。
4. 从 VPC 中的 EC2 实例向数据库实例终端节点执行 nslookup 命令。请参阅以下示例输出:
nslookup myexampledb.xxxx.us-east-1.rds.amazonaws.com
Server: xx.xx.xx.xx
Address: xx.xx.xx.xx#53
Non-authoritative answer:
Name: myexampledb.xxxx.us-east-1.rds.amazonaws.com
Address: 172.31.xx.x
5. 获得 RDS 数据库实例的私有 IP 地址后,您可以将私有 IP 地址关联到 VPC 中的特定子网。该 VPC 子网基于子网 CIDR 范围和私有 IP 地址。
6. 打开 Amazon VPC 控制台,然后从导航窗格中选择子网。
7. 选择与您在第 5 步中找到的数据库实例相关联的子网。
8. 在描述窗格中,选择路由表。
9. 选择操作,然后选择编辑路由。
10. 选择 Add route(添加路由)。对于 IPv4 和 IPv6 流量,请在 Destination(目的地)方框中输入外部或本地网络的路由。然后在 Target(目标)列表中,选择互联网网关 ID。
注意:请确保实例的入站安全组规则将流量限制到外部或本地网络的地址。
11. 选择 Save(保存)。
重要提示:如果将子网更改为公有子网,则会导致子网中的其他数据库实例也可以通过互联网访问。如果数据库实例具有关联的公有地址,则可从互联网访问这些数据库实例。
如果在执行这些步骤后仍然无法访问数据库实例,请检查数据库实例是否 Publicly Accessible(可公开访问)。为此,请按照我的数据库实例在私有子网中,但我无法从本地计算机连接它中的步骤操作。
其他 VPC 中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例无法访问我的数据库实例
在 VPC 之间建立 VPC 对等连接。VPC 对等连接允许两个 VPC 使用私有 IP 地址相互通信。
1. 创建并接受 VPC 对等连接。
重要提示:如果多个 VPC 位于同一个 AWS 账户中,请确保 IPv4 CIDR 数据块并不重叠。有关更多信息,请参阅不受支持的 VPC 对等连接配置。
2. 更新两个路由表。
5. 在 EC2 实例上,使用联网实用工具测试 VPC 对等连接。请参阅以下示例:
nc -zv <hostname> <port>
如果连接正常,则输出将类似于如下内容:
$ nc -zv myexampledb.xxxx.us-east-1.rds.amazonaws.com 5439
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif en0
src xx.xxx.xxx.xx port 53396
dst xx.xxx.xxx.xxx port 5439
rank info not available
TCP aux info available
Connection to myexampledb.xxxx.us-east-1.rds.amazonaws.com port 5439 [tcp/*] succeeded!