使用 Amazon RDS on Amazon Outposts 的多可用区部署 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon RDS on Amazon Outposts 的多可用区部署

对于多可用区部署,Amazon RDS 会在一个 Amazon Outpost 上创建主数据库实例。RDS 会将数据同步复制到另一个 Outpost 上的备用数据库实例。

Amazon Outposts 上多可用区部署的操作原理与 Amazon Web Services 区域中的多可用区部署相似,但有以下区别:

Amazon Outposts 上的多可用区适用于 RDS on Outposts 上所有受支持的 MySQL 和 PostgreSQL 版本。多可用区部署不支持本地备份。有关更多信息,请参阅创建 Amazon RDS on Amazon Outposts 数据库实例

使用责任共担模式

虽然 Amazon 通过商业上合理的努力来提供配置为高可用性的数据库实例,但可用性使用责任共担模式。RDS on Outposts 的故障切换和修复数据库实例的能力要求您的每个 Outposts 都连接到其 Amazon Web Services 区域。

RDS on Outposts 还要求托管主数据库实例的 Outpost 和托管备用数据库实例的 Outpost 之间具有连接性,以进行同步复制。对此连接的任何影响都可能会阻止 RDS on Outposts 执行故障转移。

您可能会看到,由于执行同步数据复制,标准数据库实例部署的延迟有所增加。托管主数据库实例的 Outpost 和托管备用数据库实例的 Outpost 之间连接的带宽和延迟直接影响部署的延迟。有关更多信息,请参阅先决条件

提高可用性

我们建议通过执行以下操作来提高可用性:

  • 为任务关键型应用程序分配足够的额外容量,以便在出现潜在主机问题时进行恢复和故障转移。这适用于数据库子网组中包含子网的所有 Outposts。有关更多信息,请参阅 Amazon Outposts 中的弹性

  • 为您的 Outposts 提供冗余网络连接。

  • 使用两个以上的 Outposts。拥有两个以上的 Outpost 时,Amazon RDS 可恢复数据库实例。如果当前 Outpost 出现故障,RDS 可以通过将数据库实例移到另一个 Outpost 来执行此恢复。

  • 为您的 Outpost 提供双电源和冗余网络连接。

我们建议您的本地网络满足以下要求:

  • 托管主数据库实例的 Outpost 和托管备用数据库实例的 Outpost 之间的往返时间 (RTT) 延迟直接影响写入延迟。将 Amazon Outposts 之间的 RTT 延迟保持在较低的一位数毫秒内。我们建议不超过 5 毫秒,但您的要求可能会有所不同。

    您可以在 WriteLatency 的 Amazon CloudWatch 指标中找到对网络延迟的净影响。有关更多信息,请参阅Amazon RDS 的 Amazon CloudWatch 指标

  • Outposts 之间连接的可用性会影响数据库实例的整体可用性。Outposts 之间有冗余的网络连接。

先决条件

RDS on Outposts 上的多可用区部署具有以下先决条件:

  • 至少有两个 Outposts,通过本地连接进行连接并连接到 Amazon Web Services 区域中的不同可用区。

  • 确保数据库子网组包含以下内容:

    • 在给定的 Amazon Web Services 区域中,在至少两个可用区中至少有两个子网。

    • 子网只在 Outposts 中。

    • 在同一 Virtual Private Cloud (VPC) 中,在至少两个 Outposts 中有至少两个子网。

  • 将数据库实例的 VPC 与所有本地网关路由表相关联。必须进行此关联,因为复制使用 Outposts 的本地网关在本地网络上运行。

    例如,假设您的 VPC 在 Outpost A 中包含子网 A,在 Outpost B 中包含子网 B。Outpost A 使用 LocalGateway-A (LGW-A),Ootpost B 使用 LocalGateway-B (LGW-B)。LGW-A 有 RouteTable-A,LGW-B 有 RouteTable-B。您希望同时将 RouteTable-A 和 RouteTable-B 用于复制流量。为此,请将您的 VPC 同时与 RouteTable-A 和 RouteTable-B 相关联。

    有关如何创建关联的更多信息,请参阅 Amazon EC2 create-local-gateway-route-table-vpc-association Amazon CLI 命令。

  • 确保您的 Outposts 使用客户拥有的 IP (CoIP) 路由。每个路由表还必须至少有一个地址池。Amazon RDS 会为主数据库实例和备用数据库实例分别分配一个额外的 IP 地址以进行数据同步。

  • 确保拥有 RDS 数据库实例的 Amazon Web Services 账户 拥有本地网关路由表和 CoIP 池。或者确保它是 Resource Access Manager 共享的一部分,可访问本地网关路由表和 CoIP 池。

  • 确保可以将 CoIP 池中的 IP 地址从一个 Outpost 本地网关路由到其他网关。

  • 确保 VPC 的 CIDR 块(例如 10.0.0.0/4)和您的 CoIP 池 CIDR 块不包含来自 E 类 (240.0.0.0/4) 的 IP 地址。RDS 在内部使用这些 IP 地址。

  • 确保正确设置出站和相关的入站流量。

    RDS on Outposts 会在主数据库实例和备用数据库实例之间建立虚拟专用网络 (VPN) 连接。要使此连接正常工作,您的本地网络必须允许 Internet 安全关联和密钥管理协议 (ISAKMP) 的出站和相关入站流量。它使用用户数据报协议 (UDP) 端口 500 和使用 UDP 端口 4500 的 IP 安全 (IPsec) 网络地址转换遍历 (NAT-T) 来完成此操作。

有关 CoIP 的更多信息,请参阅本指南中的 客户拥有的适用于 Amazon RDS on Amazon Outposts 的 IP 地址,以及《Amazon Outposts 用户指南》中的客户拥有的 IP 地址

使用 Amazon EC2 权限 API 操作

无论您是否将 CoIP 用于 Amazon Outposts 上的数据库实例,RDS 都需要访问您的 CoIP 池资源。RDS 可以代表您为 CoIP 调用以下 EC2 权限 API 操作来进行多可用区部署:

  • CreateCoipPoolPermission – 当您在 RDS on Outposts 上创建多可用区数据库实例时

  • DeleteCoipPoolPermission – 当您从 RDS on Outposts 上删除多可用区数据库实例时

这些 API 操作向内部 RDS 账户授予或从中删除从权限指定的 CoIP 池分配弹性 IP 地址的权限。您可以使用 DescribeCoipPoolUsage API 操作查看这些 IP 地址。有关 CoIP 的更多信息,请参阅客户拥有的适用于 Amazon RDS on Amazon Outposts 的 IP 地址和《Amazon Outposts 用户指南》中的客户拥有的 IP 地址

RDS 还可以代表您为本地网关路由表调用以下 EC2 权限 API 操作来进行多可用区部署:

  • CreateLocalGatewayRouteTablePermission – 当您在 RDS on Outposts 上创建多可用区数据库实例时

  • DeleteLocalGatewayRouteTablePermission – 当您从 RDS on Outposts 上删除多可用区数据库实例时

这些 API 操作授予或删除内部 RDS 账户将内部 RDS VPC 与本地网关路由表关联的权限。您可以使用 DescribeLocalGatewayRouteTableVpcAssociations API 操作查看这些路由表–VPC 关联。