使用 Amazon RDS Proxy 终端节点 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Amazon RDS Proxy 终端节点

接下来,您可以了解 RDS Proxy 的终端节点以及如何使用它们。通过使用终端节点,您可以利用以下功能:

  • 您可以将多个终端节点与代理结合使用,以独立地监视来自不同应用程序的连接并对其进行故障排除。

  • 您可以将读取器终端节点与 Aurora 数据库集群结合使用,提高查询密集型应用程序的读取可扩展性和高可用性。

  • 您可以使用跨 VPC 终端节点来允许从资源(如其他 VPC 中的 Amazon EC2 实例)访问一个 VPC 中的数据库。

代理终端节点概述

使用 RDS Proxy 终端节点所涉及的过程与使用 Aurora 数据库集群和读取器终端节点以及 RDS 实例终端节点相同。如果您不熟悉 RDS 终端节点,请参阅连接到运行 MySQL 数据库引擎的数据库实例连接到运行 PostgreSQL 数据库引擎的数据库实例以了解更多信息。

默认情况下,在将 RDS Proxy 与 Aurora 集群结合使用时所连接的终端节点具有读/写功能。因此,此终端节点会将所有请求发送到集群的写入器实例,并且所有这些连接都将计入写入器实例的 max_connections 值。如果您的代理与 Aurora 数据库集群关联,您可以为该代理创建额外的读/写或只读终端节点。

您可以将只读终端节点与代理结合用于只读查询,就像您将读取器终端节点用于 Aurora 预置集群一样。这样做可以帮助您利用具有一个或多个读取器数据库实例的 Aurora 集群的读取可扩展性。通过使用只读终端节点并根据需要向 Aurora 集群中添加更多读取器数据库实例,您可以运行更多的同时查询并建立更多的同时连接。

对于您创建的代理终端节点,您还可以将终端节点与代理本身使用的其他 Virtual Private Cloud (VPC) 关联。这样,您可以从其他 VPC 连接到代理,例如,组织内其他应用程序使用的 VPC。

有关与代理终端节点关联的限制的信息,请参阅 代理终端节点的限制

在 RDS Proxy 日志中,每个条目都以关联的代理终端节点的名称作为前缀。此名称可以是您为用户定义的终端节点指定的名称,也可以是使用代理的默认终端节点的读/写请求的特殊名称 default

每个代理终端节点都有自己的 CloudWatch 指标集合。您可以监视代理的所有终端节点的指标。您还可以监视特定终端节点或代理的所有读/写或只读终端节点的指标。有关更多信息,请参阅“使用 Amazon CloudWatch 监控 RDS Proxy”。

代理终端节点使用与其关联的代理相同的身份验证机制。RDS Proxy 会自动为用户定义的终端节点设置权限和授权,并与关联代理的属性保持一致。

读取器终端节点

通过 RDS Proxy,您可以创建和使用读取器终端节点。但是,这些终端节点仅适用于与 Aurora 数据库集群关联的代理。您可能会在 Amazon Web Services Management Console 中看到对读取器终端节点的引用。如果您使用 RDS CLI 或 API,则可能会看到值为 TargetRole 的属性 READ_ONLY。您可以通过将代理的目标从 RDS 数据库实例更改为 Aurora 数据库集群来利用这些功能。要了解读取器终端节点,请参阅 Aurora 用户指南中的使用 Amazon RDS Proxy 管理连接

访问 VPC 中的 Aurora和 RDS 数据库

默认情况下,RDS 的组件和 Aurora 技术堆栈都在同一个 Amazon VPC 中。例如,假设一个在 Amazon EC2 实例上运行的应用程序连接到 Amazon RDS 数据库实例或 Aurora 数据库集群。在这种情况下,应用程序服务器和数据库必须都位于同一 VPC 内。

通过 RDS Proxy,您可以设置从一个 VPC 中的资源(例中,EC2 实例)访问另一个 VPC 中的 Aurora 集群或 RDS 实例。例如,您的组织可能有多个应用程序访问同一数据库资源。每个应用程序都可能位于自己的 VPC 中。

要启用跨 VPC 访问,您需要为代理创建一个新的终端节点。如果您不熟悉如何创建代理终端节点,请参阅 使用 Amazon RDS Proxy 终端节点 以了解详细信息。代理本身与 Aurora 数据库集群或 RDS 实例位于同一个 VPC 中。但是,跨 VPC 终端节点与 EC2 实例等其他资源一起位于另一个 VPC 中。跨 VPC 终端节点与 EC2 和其他资源所在的 VPC 中的子网和安全组关联。通过这些关联,您可以从原本由于 VPC 限制而无法访问数据库的应用程序连接到终端节点。

以下步骤说明了如何通过 RDS Proxy 创建和访问跨 VPC 终端节点:

  1. 创建两个 VPC,或者选择已用于 Aurora 和 RDS 工作的两个 VPC。每个 VPC 都应该有自己的关联网络资源,例如互联网网关、路由表、子网和安全组。如果您只有一个 VPC,可以查阅 开始使用 Amazon RDS,了解设置另一个 VPC 以成功使用 RDS 的步骤。您还可以查看 Amazon EC2 控制台中的现有 VPC,了解要将哪些类型的资源连接起来。

  2. 创建一个与要连接到的 Aurora 数据库集群或 RDS 实例关联的数据库代理。按照 创建 RDS Proxy 中的过程操作。

  3. 在 RDS 控制台中的代理的 Details(详细信息)页面上,在 Proxy endpoints(代理终端节点)部分下,选择 Create endpoint(创建终端节点)。按照 创建代理终端节点 中的过程操作。

  4. 选择将跨 VPC 终端节点设置为读/写还是只读。

  5. 不接受默认的与 Aurora 数据库集群或 RDS 实例所在相同的 VPC,而是选择其他 VPC。此 VPC 必须与代理所在的 VPC 位于同一 Amazon 区域中。

  6. 现在不接受来自与 Aurora 数据库集群或 RDS 实例所在同一 VPC 中的默认子网和安全组,而是进行新的选择。根据您选择的 VPC 中的子网和安全组进行这些选择。

  7. 您无需更改 Secrets Manager 密钥的任何设置。相同的凭证适用于代理的所有终端节点,无论每个终端节点位于哪个 VPC 中均是如此。

  8. 等待新终端节点达到 Available(可用)状态。

  9. 记下终端节点的完整名称。这是以 Region_name.rds.amazonaws.com 为结尾的值,您提供此值作为数据库应用程序连接字符串的一部分。

  10. 从与该终端节点位于同一 VPC 中的资源访问新的终端节点。测试此过程的一种简单方法是在此 VPC 中创建一个新的 EC2 实例。然后您可以登录 EC2 实例并运行 mysqlpsql 命令,以使用连接字符串中的终端节点值进行连接。

创建代理终端节点

创建代理终终端节点

  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Proxies (代理)

  3. 单击您要为其创建新终端节点的代理的名称。

    此时将显示该代理的详细信息页面。

  4. Proxy endpoints(代理终端节点)部分中,选择 Create proxy endpoint(创建代理终端节点)

    此时将显示 Create proxy endpoint(创建代理终端节点)窗口。

  5. 对于 Proxy endpoint name(代理终端节点名称),输入您选择的描述性名称。

  6. 对于 Target role(目标角色),选择将终端节点设置为读/写还是只读。

    使用读/写终端节点的连接可以执行任何类型的操作:数据定义语言 (DDL) 语句、数据操作语言 (DML) 语句和查询。这些终端节点始终连接到 Aurora 集群的主实例。仅在应用程序中使用单个终端节点时,可以将读/写终端节点用于常规数据库操作。您还可以将读/写终端节点用于管理操作、联机事务处理 (OLTP) 应用程序和提取-转换-加载 (ETL) 作业。

    使用只读终端节点的连接只能执行查询。当 Aurora 集群中有多个读取器实例时,RDS Proxy 可以为终端节点的每个连接使用不同的读取器实例。这样,查询密集型应用程序就可以利用 Aurora 的集群功能。您可以通过添加更多读取器数据库实例来向集群添加更多查询容量。这些只读连接不会在集群的主实例上增加任何开销。这样,您的报告和分析查询就不会减慢 OLTP 应用程序的写入操作。

  7. 对于 Virtual Private Cloud (VPC),如果计划从您通常在那里访问代理或其关联数据库的相同 EC2 实例或其他资源访问终端节点,请选择默认值。如果要为此代理设置跨 VPC 访问,请选择默认值以外的 VPC。有关跨 VPC 访问的更多信息,请参阅 访问 VPC 中的 Aurora和 RDS 数据库

  8. 对于子网,默认情况下,RDS Proxy 会填充与关联代理相同的子网。如果要限制对终端节点的访问,以便只有 VPC 的地址范围的一部分能够与其连接,请从一组选择中删除一个或多个子网。

  9. 对于 VPC security group (VPC 安全组),您可以选择现有安全组或创建新安全组。默认情况下,RDS Proxy 会填充与关联代理相同的一个或多个安全组。如果代理的入站和出站规则适用于此终端节点,则可以保留默认选项。

    如果选择创建新的安全组,请在此页面上为该安全组指定一个名称。然后,从 EC2 控制台编辑安全组设置。

  10. 选择 Create proxy endpoint(创建代理终端节点)

要创建代理终端节点,请使用 Amazon CLIcreate-db-proxy-endpoint 命令。

包括以下必需参数:

  • --db-proxy-name value

  • --db-proxy-endpoint-name value

  • --vpc-subnet-ids list_of_ids。用空格分隔子网 ID。您无需指定 VPC 本身的 ID。

您还可以包括以下可选参数:

  • --target-role { READ_WRITE | READ_ONLY }此参数默认为 READ_WRITEREAD_ONLY 值仅对包含一个或多个读取器数据库实例的 Aurora 预置集群有影响。当代理与 RDS 实例或仅包含写入器数据库实例的 Aurora 集群相关联时,您不能指定 READ_ONLY

  • --vpc-security-group-ids value。用空格分隔安全组 ID。如果省略此参数,则 RDS Proxy 使用 VPC 的默认安全组。RDS Proxy 根据您为 --vpc-subnet-ids 参数指定的子网 ID 确定 VPC。

下面的示例用于创建一个名为 my-endpoint 的代理终端节点。

对于 Linux、macOS 或 Unix:

aws rds create-db-proxy-endpoint \ --db-proxy-name my-proxy \ --db-proxy-endpoint-name my-endpoint \ --vpc-subnet-ids subnet_id subnet_id subnet_id ... \ --target-role READ_ONLY \ --vpc-security-group-ids security_group_id ]

对于 Windows:

aws rds create-db-proxy-endpoint ^ --db-proxy-name my-proxy ^ --db-proxy-endpoint-name my-endpoint ^ --vpc-subnet-ids subnet_id_1 subnet_id_2 subnet_id_3 ... ^ --target-role READ_ONLY ^ --vpc-security-group-ids security_group_id

要创建代理终端节点,请使用 RDS API CreateProxyEndpoint 操作。

查看代理终端节点

查看代理终端节点的详细信息

  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Proxies (代理)

  3. 在列表中,选择要查看其终端节点的代理。单击代理名称以查看其详细信息页面。

  4. Proxy endpoints(代理终端节点)部分中,选择要查看的终端节点。单击其名称以查看详细信息页面。

  5. 检查您对其值感兴趣的参数。您可以检查以下属性:

    • 终端节点是读/写还是只读。

    • 您在数据库连接字符串中使用的终端节点地址。

    • 与终端节点关联的 VPC、子网和安全组。

要查看一个或多个数据库代理终端节点,请使用 Amazon CLI describe-db-proxy-endpoints 命令。

您可以包括以下参数:

  • --db-proxy-endpoint-name

  • --db-proxy-name

以下示例描述了 my-endpoint 代理终端节点:

对于 Linux、macOS 或 Unix:

aws rds describe-db-proxy-endpoints \ --db-proxy-endpoint-name my-endpoint

对于 Windows:

aws rds describe-db-proxy-endpoints ^ --db-proxy-endpoint-name my-endpoint

要描述一个或多个代理终端节点,请使用 RDS API DescribeDBProxyEndpoints 操作。

修改代理终端节点

修改一个或多个代理终端节点

  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Proxies (代理)

  3. 在列表中,选择要修改其终端节点的代理。单击代理名称以查看其详细信息页面。

  4. Proxy endpoints(代理终端节点)部分中,选择要修改的终端节点。您可以在列表中选择它,也可以单击其名称以查看详细信息页面。

  5. 在代理详细信息页面上的 Proxy endpoints(代理终端节点)部分中,选择 Edit(编辑)。或在代理终端节点详细信息页面上,对 Actions(操作)项选择 Edit(编辑)

  6. 更改要修改的参数的值。

  7. 选择保存更改

要修改数据库代理终端节点,请使用 Amazon CLI modify-db-proxy-endpoint 命令和以下必需参数:

  • --db-proxy-endpoint-name

使用以下一个或多个参数指定对终端节点属性的更改:

  • --new-db-proxy-endpoint-name

  • --vpc-security-group-ids。用空格分隔安全组 ID。

以下示例用于将 my-endpoint 代理终端节点重命名为 new-endpoint-name

对于 Linux、macOS 或 Unix:

aws rds modify-db-proxy-endpoint \ --db-proxy-endpoint-name my-endpoint \ --new-db-proxy-endpoint-name new-endpoint-name

对于 Windows:

aws rds modify-db-proxy-endpoint ^ --db-proxy-endpoint-name my-endpoint ^ --new-db-proxy-endpoint-name new-endpoint-name

要修改代理终端节点,请使用 RDS API ModifyDBProxyEndpoint 操作。

删除代理终端节点

您可以按照以下说明使用控制台删除代理的终端节点。

注意

您无法删除 RDS Proxy 自动为每个代理创建的默认终端节点。

删除代理时,RDS Proxy 会自动删除所有关联的终端节点。

使用 Amazon Web Services Management Console 删除代理终端节点

  1. 在导航窗格中,选择 Proxies (代理)

  2. 在列表中,选择要删除其终端节点的代理。单击代理名称以查看其详细信息页面。

  3. Proxy endpoints(代理终端节点)部分中,选择要删除的终端节点。您可以在列表中选择一个或多个终端节点,或单击单个终端节点的名称以查看详细信息页面。

  4. 在代理详细信息页面上的 Proxy endpoints(代理终端节点)部分中,选择 Delete(删除)。或在代理终端节点详细信息页面上,对 Actions(操作)项选择 Delete(编辑)

要删除代理终端节点,请运行 delete-db-proxy-endpoint 命令并包含以下必需参数:

  • --db-proxy-endpoint-name

以下命令用于删除名为 my-endpoint 的代理终端节点。

对于 Linux、macOS 或 Unix:

aws rds delete-db-proxy-endpoint \ --db-proxy-endpoint-name my-endpoint

对于 Windows:

aws rds delete-db-proxy-endpoint ^ --db-proxy-endpoint-name my-endpoint

要使用 RDS API 删除代理终端节点,请运行 DeleteDBProxyEndpoint 操作。对于 DBProxyEndpointName 参数,指定代理终端节点的名称。

代理终端节点的限制

每个代理都有一个默认终端节点,您可以修改但不能创建或删除默认终端节点。

代理的用户定义终端节点的最大数量为 20 个。因此,代理最多可以有 21 个终端节点:默认终端节点加上您创建的 20 个终端节点。

当您将其他终端节点与代理关联时,RDS Proxy 会自动确定集群中的哪些数据库实例用于每个终端节点。您无法像使用 Aurora 自定义终端节点那样选择特定实例。

读取器终端节点不可用于 Aurora 多写入器集群。

您可以连接到使用 SSL 模式 REQUIREDVERIFY_CA 创建的代理终端节点。您无法连接到使用 SSL 模式 VERIFY_IDENTITY 创建的终端节点。