我想对 Amazon Relational Database Services (Amazon RDS) 分配给我的数据库实例的 IP 地址的相关问题进行故障排除。
解决方法
当 Amazon RDS 在虚拟私有云 (VPC) 中创建数据库实例时,Amazon RDS 会为您的数据库实例分配一个网络接口。根据您配置实例的方式,Amazon RDS 会分配私有 IP 地址或公共 IP 地址。
我选择了可公开访问设置,但是 Amazon RDS 没有为数据库实例分配公共 IP 地址
如果您的数据库子网组中的子网为私有子网,则 Amazon RDS 不会为您的数据库实例分配公共 IP 地址。
要解决此问题,请完成以下步骤:
- 打开 Amazon RDS 控制台。
- 在导航窗格中,选择 Subnet groups(子网组)。
- 选择与数据库实例关联的子网组。
**注意:**您可以使用 VPC ID 和关联子网 ID 查看子网组。
- 打开 Amazon Virtual Private Cloud (Amazon VPC) 控制台。
- 在导航窗格中,选择 Internet gateways(互联网网关)。
- 检查您的 VPC 是否已连接到互联网网关。
**注意:**如果您的 VPC 未连接到互联网网关,请创建互联网网关并将其连接到您的 VPC。
- 在导航窗格中,选择 Route tables(路由表)。
- 选择与您的 VPC 关联的路由表。
- 选择 Subnet associations(子网关联)选项卡,然后验证数据库子网组中的所有子网是否都已连接到路由表。
**注意:**如果子网未与路由表关联,请选择 Edit subnet associations(编辑子网关联)。选择要与路由表关联的子网。
- 选择 Routes(路由)选项卡。检查数据库子网组中的所有子网的 Destination(目的地)字段中是否为 0.0.0.0/0,以及 Target(目标)字段中是否为互联网网关 ID。
**注意:**如果子网的 Destination(目的地)和 Target(目标)字段中有不同的值,请修改路由以包含上述值。
- 打开 Amazon RDS 控制台。
- 在导航窗格中,选择 Databases(数据库)。
- 选择数据库实例,然后选择 Modify(修改)。
- 在 Connectivity(连接)下,展开 Additional configuration(其他配置)部分,然后选择 Publicly accessible(可公开访问)。
- 选择 Continue(继续)。
- 选择 Modify DB instance(修改数据库实例)。
**注意:**包含公有子网和私有子网组合的子网组可能会导致在失效转移后出现连接问题。例如,在多可用区配置中,当您的主实例使用公有子网而辅助实例使用私有子网时,可能会出现连接问题。
我想查找我的 Amazon RDS 数据库实例的连接信息
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
当您尝试从同一 VPC 中的资源连接到数据库实例时,Amazon RDS 端点会自动解析为私有 IP 地址。当您从 VPC 外部或互联网连接到数据库实例时,端点会解析为公有 IP 地址。
要查找连接信息,您可以使用 Amazon RDS 控制台、运行 AWS CLI 命令 describe-db-instances 或运行 DescribeDBInstances Amazon RDS API。
然后,运行以下命令之一:
dig example-rds-endpoint
-或-
nslookup example-rds-endpoint
**注意:**将 example-rds-endpoint 替换为您的端点。
当您运行 nslookup 命令来获取 Amazon RDS 端点时,您会看到类似于以下示例的输出。
来自同一 VPC 中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例的输出将解析为私有 IP 地址:
[ec2-user@ip-172-xx-xx-xx ~] nslookup myoracledb.abcd123.region.rds.amazonaws.com
Server: 172.16.0.0
Address: 172.31.255.255#53
Non-authoritative answer: myoracledb.abcd123.region.rds.amazonaws.com canonical name = ec2-3-232-189-42.compute-1.amazonaws.com.
Name: ec2-3-232-189-42.compute-1.amazonaws.com
Address: 172.31.8.27
来自不同 VPC 中的 Amazon EC2 实例的输出将解析为公有 IP 地址:
[ec2-user@ip-172-xx-xx-xx ~] nslookup myoracledb.abcd123.region.rds.amazonaws.com
Server: 192.0.2.0
Address: 192.0.2.255#53
Non-authoritative answer: myoracledb.abcd123.region.rds.amazonaws.com canonical name = ec2-3-232-189-42.compute-1.amazonaws.com.
Name: ec2-3-232-189-42.compute-1.amazonaws.com
Address: 3.232.189.42
数据库实例的 IP 地址不一致
在以下情况下,您的 Amazon RDS 数据库实例的 IP 地址可能会发生变化:
- 停止并重启数据库实例。
**注意:**重启数据库实例时,IP 地址不会发生变化。
- 由于数据库实例故障或数据库实例类更新,Amazon RDS 会替换底层主机。
- Amazon RDS 对数据库实例执行硬件维护。
- 数据库实例处于多可用区环境中,并且发生了失效转移。
- 数据库实例的操作系统 (OS) 进行了软件修补。
- 您使用包含失效转移的重启操作启动了数据库实例的手动失效转移。
- 数据库引擎升级到主要版本或次要版本。
- 实例的可用区出现中断。
**注意:**由于实例的 IP 地址是动态的,因此您无法为实例分配静态 IP 地址或弹性 IP 地址。