设置 RDS 代理的网络先决条件
使用 RDS 代理需要您在 RDS 数据库实例和 RDS 代理之间拥有通用的虚拟私有云(VPC)。此 VPC 应至少有两个位于不同可用区中的子网。您的账户可以拥有这些子网,或与其他账户共享它们。有关 VPC 共享的信息,请参阅使用共享 VPC。
您的客户端应用程序资源(例如 Amazon EC2、Lambda 或 Amazon ECS)可以与代理位于同一 VPC 中。它们也可以位于与代理不同的 VPC 中。如果已成功连接到任何 RDS 数据库实例,则您已拥有所需的网络资源。
获取有关您的子网的信息
要创建代理,必须提供代理在其中运行的子网和 VPC。以下 Linux 示例展示了检查 AWS 账户 拥有的 VPC 和子网的 AWS CLI 命令。尤其是,在使用 CLI 创建代理时,您可以将子网 ID 作为参数传递。
aws ec2 describe-vpcs aws ec2 describe-internet-gateways aws ec2 describe-subnets --query '*[].[VpcId,SubnetId]' --output text | sort
以下 Linux 示例展示了用于确定与特定 RDS 数据库实例对应的子网 ID 的 AWS CLI 命令。找到数据库实例的 VPC ID。检查 VPC 以查找其子网。以下 Linux 示例展示了操作步骤。
$
#From the DB instance, trace through the DBSubnetGroup and Subnets to find the subnet IDs. $ aws rds describe-db-instances --db-instance-identifiermy_instance_id
--query '*[].[DBSubnetGroup]|[0]|[0]|[Subnets]|[0]|[*].SubnetIdentifier' --output text
subnet_id_1
subnet_id_2
subnet_id_3
...
$
#From the DB instance, find the VPC.$
aws rds describe-db-instances --db-instance-identifiermy_instance_id
--query '*[].[DBSubnetGroup]|[0]|[0].VpcId' --output text
my_vpc_id
$
aws ec2 describe-subnets --filters Name=vpc-id,Values=my_vpc_id
--query '*[].[SubnetId]' --output text
subnet_id_1
subnet_id_2
subnet_id_3
subnet_id_4
subnet_id_5
subnet_id_6
计划 IP 地址容量
RDS 代理会根据向它注册的数据库实例的大小和数量,视需要自动调整其容量。某些操作可能还需要更多代理容量,例如增加注册数据库的大小或内部 RDS 代理维护操作。在这些操作期间,您的代理可能需要更多 IP 地址来预调配额外的容量。这些额外的地址使您的代理可以在不影响工作负载的情况下进行扩展。您的子网中缺少可用的 IP 地址会阻止代理纵向扩展。这可能导致查询延迟更长或客户端连接故障。当您的子网中没有足够的可用 IP 地址时,RDS 会通过事件 RDS-EVENT-0243
通知您。有关此事件的信息,请参阅 使用 RDS 代理事件。
以下是根据数据库实例类大小,建议在子网中为代理保留可用的最少 IP 地址数。
数据库实例类 | 最少可用 IP 地址数 |
---|---|
db.*.xlarge 或更小 |
10 |
db.*.2xlarge |
15 |
db.*.4xlarge |
25 |
db.*.8xlarge |
45 |
db.*.12xlarge |
60 |
db.*.16xlarge |
75 |
db.*.24xlarge |
110 |
这些建议的 IP 地址数是针对仅具有默认端点的代理的估计数。具有更多端点或只读副本的代理可能需要更多可用的 IP 地址。对于每个其他端点,我们建议您另外预留三个 IP 地址。对于每个只读副本,我们建议您根据该只读副本的大小,保留表中指定的额外 IP 地址。
注意
RDS 代理在一个 VPC 中支持的 IP 地址数不超过 215 个。