跳至内容

如何对使用 VPC 公有子网或私有子网连接 Amazon RDS 数据库实例时遇到的问题进行故障排除?

2 分钟阅读
0

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

简短描述

您可以在 VPC 的公有子网或私有子网中启动 Amazon RDS 数据库。但是,RDS 实例端上的 VPC 配置不正确可能会导致连接问题。或者,您用于连接的客户端上的配置或连接问题也可能会导致连接问题。

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

解决方法

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

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

当数据库实例的 Publicly Accessible(可公开访问)属性设置为 No(否)时,可能会出现此问题。要检查数据库实例是否可公开访问,请执行以下操作:

打开 Amazon RDS 控制台,从导航窗格中选择 Databases(数据库),然后选择您的数据库实例。然后,查看该实例的 Connectivity & Security(连接和安全)部分。

-或-

在 AWS CLI 中使用 describe-db-instances 命令。

要将 Amazon RDS 实例的 Publicly Accessible(可公开访问)属性更改为 Yes(是),请执行以下操作:

1.    打开 Amazon RDS 控制台

2.从导航窗格中选择 Databases(数据库),然后选择数据库实例。

3.选择 Modify(修改)。

4.在 Connectivity(连接)下,展开 Additional configuration(其他配置)部分,然后选择 Publicly accessible(可公开访问)。

5.选择 Continue(继续)。

6.选择 Modify DB Instance(修改数据库实例)。

**注意:**即使您没有选择 Apply Immediately(立即应用)选项,此更改也会立即应用。只有当您通过此修改设置了待处理的维护操作(这需要停机),并选择了 Apply Immediately(立即应用)时,才会出现停机。

如果您将 Publicly Accessible(可公开访问)属性设置为 Yes(是),但仍无法连接到 RDS 实例,请检查以下详细信息:

我的数据库实例位于私有子网中,我无法从本地计算机连接到它

您可以使用公有子网来解决此问题。当使用公有子网时,子网上的所有资源均可从互联网访问。如果此解决方案不符合您的安全性要求,请使用 AWS Site-to-Site VPN。通过 Site-to-Site VPN,您可以配置客户网关,该网关允许您将 VPC 连接到远程网络。

解决此问题的另一种方法是将 Amazon EC2 实例用作堡垒机(跳转)主机。有关详细信息,请参阅如何将 Amazon EC2 实例用作堡垒机主机从本地计算机连接到私有 Amazon RDS 数据库实例?

要切换到公有子网,请执行以下操作:

1.    打开 Amazon RDS 控制台

2.从导航窗格中选择 Databases(数据库),然后选择数据库实例。

3.在 Connectivity & Security(连接和安全)部分中,复制数据库实例的端点。

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 控制台,然后从导航窗格中选择 Subnets(子网)。

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

8.在 Description(描述)窗格中,选择 Route Table(路由表)。

9.选择 Actions(操作),然后选择 Edit routes(编辑路由)。

10.选择 Add route(添加路由)。对于 IPv4 和 IPv6 流量,请在 Destination(目标)框中输入外部或本地网络的路由。然后,在 Target(目标)列表中选择互联网网关 ID。

注意: 确保您的实例的入站安全组规则将流量限制为流向外部网络或本地网络地址。

11.选择 Save(保存)。

**重要事项:**如果您将子网更改为公有子网,则子网中的其他数据库实例也可以通过互联网访问。如果数据库实例具有关联的公有地址,则可以通过互联网访问这些实例。

如果完成这些步骤后仍无法访问数据库实例,请检查该数据库实例是否为 Publicly Accessible(可公开访问)。为此,请按照“我的数据库实例位于私有子网中,我无法从本地计算机连接到它”中的步骤进行操作。

其他 VPC 中的 Amazon EC2 实例无法访问我的数据库实例

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

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

**重要事项:**如果多个 VPC 位于同一 AWS 账户中,请确保 IPv4 CIDR 块不重叠。有关详细信息,请参阅 VPC 对等限制

2.更新两个路由表

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

4.为您的 VPC 对等连接激活 DNS 解析支持

5.在 Amazon Elastic Compute Cloud (Amazon 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!

相关信息

在 VPC 中访问数据库实例的场景

在 VPC 中使用数据库实例