我该如何排查使用 VPC 公有子网或私有子网连接 Amazon RDS 实例时遇到的问题?

上次更新时间:2020 年 1 月 2 日

我无法连接到我的 Amazon Relational Database Service (Amazon RDS) 数据库实例。我该如何排查 Amazon Virtual Private Cloud (Amazon VPC) 公有子网或私有子网中的连接问题?

简短描述

Amazon RDS 数据库可以在 VPC 的公有子网或私有子网中启动。连接问题可能由错误的 VPC 配置或您要连接的客户端上的配置或连接问题引起。

要解决这些问题,请根据您的环境参阅以下解决方法。

解决方法

我的实例在公有子网中,我无法从本地计算机通过 Internet 连接它

此问题可能会在实例的公开访问属性设为时发生。若要检查实例是否可公开访问,您可以使用 Amazon RDS 控制台或 AWS 命令行界面 (AWS CLI)。

若要将 Amazon RDS 实例的公开访问属性更改为,请按以下步骤操作:

1.    验证您的 VPC 是否已连接互联网网关,以及安全组的入站规则是否允许连接。

2.    打开 Amazon RDS 控制台

3.    从导航窗格中选择数据库,然后选择数据库实例。

4.    选择修改

5.    在网络与安全性选项下,针对公开访问选择

6.    选择继续

7.    选择修改数据库实例

注意:您无需选择立即应用。有关立即应用如何影响停机的更多信息,请参阅使用立即应用参数

我的实例在私有子网中,但我无法从本地计算机连接它

您可以使用公有子网解决此问题。使用公有子网时,子网上的所有资源均可从 Internet 访问。如果此解决方案不满足您的安全性要求,请使用 AWS Site-to-Site VPN。在 Site-to-Site VPN 中,您可以配置客户网关,以使您的 VPC 可以连接到远程网络。

若要切换到公有子网:

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 地址后,您可以根据子网的 CIDR 范围和私有 IP 地址,将私有 IP 地址与 VPC 中的特定子网关联起来。

6.    打开 Amazon VPC 控制台,然后从导航窗格中选择子网

7.    选择与您在第 5 步中找到的数据库实例相关联的子网。

8.    在描述窗格中,选择路由表

9.    选择操作,然后选择编辑路由

10.    选择添加路由,然后输入以下内容:
对于 IPv4 流量,在目的地方框中输入 0.0.0.0/0,然后在目标列表中选择互联网网关。
对于 IPv6 流量,在目的地方框中输入 ::/0,然后在目标列表中选择互联网网关 ID。

11.    选择保存

重要提示:如果您将子网更改为公有子网,则子网中的其他实例也可从 Internet 访问(如果实例具有关联的公有子网地址)。

如果在执行这些步骤后仍无法访问实例,请根据“我的实例在私有子网中,但我无法从本地计算机连接它”中的步骤检查实例是否为可公开访问

其他 VPC 中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例无法访问我的数据库实例

在两个 VPC 之间建立 VPC 对等连接。VPC 对等连接允许两个 VPC 使用私有 IP 地址相互通信。

1.    建立并接受 VPC 对等连接

重要提示:如果多个 VPC 位于同一个 AWS 账户中,请确保 IPv4 CIDR 块不重叠。有关更多信息,请参阅不受支持的 VPC 对等配置

2.    更新两个路由表

3.    更新您的安全组以引用对等 VPC 组

4.    为您的 VPC 对等连接启用 DNS 解析支持

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!

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?