

# 使用 Amazon RDS on Amazon Outposts 的多可用区部署
<a name="rds-on-outposts.maz"></a>

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

Amazon Outposts 上多可用区部署的操作原理与 Amazon Web Services 区域中的多可用区部署相似，但有以下区别：
+ 它们需要两个或更多 Outposts 之间的本地连接。
+ 它们需要客户拥有的 IP (CoIP) 池。有关更多信息，请参阅 [客户拥有的适用于 Amazon RDS on Amazon Outposts 的 IP 地址](rds-on-outposts.coip.md)。
+ 复制在您的本地网络上运行。

Amazon Outposts 上的多可用区适用于 RDS on Outposts 上所有受支持的 MySQL 和 PostgreSQL 版本。多可用区部署不支持本地备份。有关更多信息，请参阅 [创建 Amazon RDS on Amazon Outposts 数据库实例](rds-on-outposts.creating.md)。

## 使用责任共担模式
<a name="rds-on-outposts.maz.shared"></a>

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

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

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

## 提高可用性
<a name="rds-on-outposts.maz.tips"></a>

我们建议通过执行以下操作来提高可用性：
+ 为任务关键型应用程序分配足够的额外容量，以便在出现潜在主机问题时进行恢复和故障转移。这适用于数据库子网组中包含子网的所有 Outposts。有关更多信息，请参阅 [Amazon Outposts 中的韧性](https://docs.amazonaws.cn/outposts/latest/userguide/disaster-recovery-resiliency.html)。
+ 为您的 Outposts 提供冗余网络连接。
+ 使用两个以上的 Outposts。拥有两个以上的 Outpost 时，Amazon RDS 可恢复数据库实例。如果当前 Outpost 出现故障，RDS 可以通过将数据库实例移到另一个 Outpost 来执行此恢复。
+ 为您的 Outpost 提供双电源和冗余网络连接。

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

  您可以在 `WriteLatency` 的 Amazon CloudWatch 指标中找到对网络延迟的净影响。有关更多信息，请参阅 [Amazon RDS 的 Amazon CloudWatch 指标](rds-metrics.md)。
+ Outposts 之间连接的可用性会影响数据库实例的整体可用性。Outposts 之间有冗余的网络连接。

## 先决条件
<a name="rds-on-outposts.maz.prereqs"></a>

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](https://docs.amazonaws.cn/cli/latest/reference/ec2/create-local-gateway-route-table-vpc-association.html) 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 地址](rds-on-outposts.coip.md)，以及《Amazon Outposts 用户指南》**中的[客户拥有的 IP 地址](https://docs.amazonaws.cn/outposts/latest/userguide/how-racks-work.html#ip-addressing)。

## 使用 Amazon EC2 权限 API 操作
<a name="rds-on-outposts.maz.api"></a>

无论您是否将 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 地址](rds-on-outposts.coip.md)，以及《Amazon Outposts 用户指南》**中的[客户拥有的 IP 地址](https://docs.amazonaws.cn/outposts/latest/userguide/how-racks-work.html#ip-addressing)。

RDS 还可以代表您为本地网关路由表调用以下 EC2 权限 API 操作来进行多可用区部署：
+ `CreateLocalGatewayRouteTablePermission` – 当您在 RDS on Outposts 上创建多可用区数据库实例时
+ `DeleteLocalGatewayRouteTablePermission` – 当您从 RDS on Outposts 上删除多可用区数据库实例时

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