设置 RDS 代理的网络先决条件
使用 RDS 代理需要您在 Aurora 数据库集群和 RDS 代理之间拥有通用的虚拟私有云(VPC)。此 VPC 应至少有两个位于不同可用区中的子网。您的账户可以拥有这些子网,或与其他账户共享它们。有关 VPC 共享的信息,请参阅使用共享 VPC。
您的客户端应用程序资源(例如 Amazon EC2、Lambda 或 Amazon ECS)可以与代理位于同一 VPC 中。它们也可以位于与代理不同的 VPC 中。如果已成功连接到任何 Aurora 数据库集群,则您已拥有所需的网络资源。
获取有关您的子网的信息
如果您刚刚开始使用 Aurora,您可以遵循为 Amazon Aurora 设置环境中的过程,了解连接到数据库的基础知识。您也可以按照 开始使用 Amazon Aurora 中的教程进行操作。
要创建代理,必须提供代理在其中运行的子网和 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 示例展示了用于确定与特定 Aurora 数据库集群对应的子网 ID 的 AWS CLI 命令。
对于 Aurora 集群,首先,您可以找到其中一个关联数据库实例的 ID。您可以提取该数据库实例使用的子网 ID。为此,请在数据库实例的描述输出中检查 DBSubnetGroup
和 Subnets
属性中的嵌套字段。在为该数据库服务器设置代理时,您可以指定部分或全部这些子网 ID。
$
# Find the ID of any DB instance in the cluster.$
aws rds describe-db-clusters --db-cluster-identifiermy_cluster_id
--query '*[].[DBClusterMembers]|[0]|[0][*].DBInstanceIdentifier' --output text
my_instance_id
instance_id_2
instance_id_3
找到数据库实例标识符后,检查关联的 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 个。
例如,假设您要估算与 Aurora 数据库集群关联的代理所需的 IP 地址数。
在这种情况下,假设如下:
您的 Aurora 数据库集群有 1 个大小为 db.r5.8xlarge 的写入器实例和 1 个大小为 db.r5.2xlarge 的读取器实例。
连接到此数据库集群的代理具有默认端点和 1 个具有只读角色的自定义端点。
在这种情况下,代理需要大约 63 个可用 IP 地址(写入器实例需要 45 个,读取器实例需要 15 个,附加的自定义端点需要 3 个)。