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

上次更新时间:2020 年 10 月 30 日

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

简短描述

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

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

解决方法

注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI

我的数据库实例在公有子网中,但我无法从本地计算机通过互联网连接它

此问题可能会在将数据库实例的可公开访问属性设为时发生。若要检查数据库实例是否可公开访问,您可以使用 Amazon RDS 控制台或 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 地址后,您可以将私有 IP 地址关联到 VPC 中的特定子网。此关联操作取决于子网 CIDR 范围和私有 IP 地址。

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

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

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

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

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

11.    选择保存

重要提示:如果将子网更改为公有子网,则会导致子网中的其他数据库实例也可以通过互联网访问。如果数据库实例具有已关联的公有地址时,会发生这种情况。

如果在执行这些步骤后仍然无法访问数据库实例,请检查数据库实例是否可公开访问。为此,请按照我的数据库实例在私有子网中,但我无法从本地计算机连接它中的步骤操作。

其他 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!

这篇文章对您有帮助吗?


您是否需要账单或技术支持?