设置 RDS 代理的网络先决条件 - Amazon Aurora

设置 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。为此,请在数据库实例的描述输出中检查 DBSubnetGroupSubnets 属性中的嵌套字段。在为该数据库服务器设置代理时,您可以指定部分或全部这些子网 ID。

$ # Find the ID of any DB instance in the cluster. $ aws rds describe-db-clusters --db-cluster-identifier my_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-identifier my_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-identifier my_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 个)。