

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 可用区自动转移和练习运行的工作原理
<a name="arc-zonal-autoshift.how-it-works"></a>

Amazon Application Recovery Controller (ARC) 中的区域自动切换功能允许 AWS 您在 AWS 确定存在可能影响可用区客户的损害时，代表您将资源的流量从可用区转移出去。Zonal autoshift 专为在中的所有可用区中预先扩展的资源而设计 AWS 区域，这样应用程序就可以在失去一个可用区域的情况下正常运行。

借助可用区自动转移，您需要配置练习运行，以便 ARC 定期将资源的流量从一个可用区转移出去。ARC 大约每周为具有与其关联的练习运行配置的每个资源安排练习运行。每个资源的练习运行都是独立安排的。

对于每次练习运行，ARC 都会记录结果。如果练习运行因阻止条件而中断，则练习运行结果不会标记为成功。有关练习运行结果的更多信息，请参阅[练习运行结果](arc-zonal-autoshift.considerations.md#ZAConsiderationsPracticeRunOutcomes)。

您可以将 Amazon EventBridge 通知配置为向您发送有关自动换档和练习跑的信息。有关更多信息，请参阅 [在 Amazon 上使用区域自动换档 EventBridge](eventbridge-zonal-autoshift.md)。

**Topics**
+ [可用区自动转移简介](arc-zonal-autoshift.how-it-works.about.md)
+ [何时 AWS 启动和停止自动换档](arc-zonal-autoshift.how-it-works.start-stop-auto.md)
+ [ARC 何时安排、启动和结束练习运行](arc-zonal-autoshift.how-it-works.scheduled-practice-runs.md)
+ [练习运行的容量检查](arc-zonal-autoshift.how-it-works.capacity-check.md)
+ [练习运行和自动转移通知](arc-zonal-autoshift.how-it-works.notifications.md)
+ [可用区转移的优先级](arc-zonal-autoshift.how-it-works.precedence.md)
+ [停止活动自动转移或练习运行](arc-zonal-autoshift.how-it-works.stop-shift.md)
+ [流量是如何转移出去的](arc-zonal-autoshift.how-it-works.how-traffic-shifted.md)
+ [练习运行警报](arc-zonal-autoshift.how-it-works.alarms.md)
+ [阻止时段和允许时段（采用 UTC 时间）](arc-zonal-autoshift.how-it-works.blocked-windows.md)

# 可用区自动转移简介
<a name="arc-zonal-autoshift.how-it-works.about"></a>

区域自动切换是一种代表您 AWS 将应用程序资源流量从可用区转移出去的功能。 AWS 当内部遥测数据显示存在可能影响客户的可用区域受损时，会启动自动换档。内部遥测包含来自多个来源的指标，包括 AWS 网络、Amazon EC2 和 Elastic Load Balancing 服务。

您必须为支持的 AWS 资源手动启用区域自动切换。

当您在一个区域的多个（通常是三个） AZs 的负载均衡器上部署和运行 AWS 应用程序，并预先扩展以支持静态稳定性时， AWS 可以通过使用自动移位功能转移流量，从而快速恢复可用区中的客户应用程序。通过将资源流量转移到该 AZs 地区的其他地方， AWS 可以缩短由停电、可用区硬件或软件问题或其他损伤造成的潜在影响的持续时间和严重程度。

ARC 支持的资源提供集成功能，可将指定可用区标记为运行状况不佳，这样可将流量从受影响的可用区转移出去。

为资源启用可用区自动转移时，还必须为该资源配置练习运行。 AWS 大约每周执行一次 30 分钟的练习运行，以帮助您确保有足够的容量来运行您的应用程序，而无需使用区域中的一个可用区。

与可用区转移一样，在某些特定情况下，可用区自动转移不会将流量从可用区转移出去。例如，如果中的负载均衡器目标组 AZs 没有任何实例，或者所有实例都运行状况不佳，则负载均衡器处于失效打开状态，您无法移开其中一个实例。 AZs

要了解有关可用区自动转移的更多信息，请参阅 [ARC 中的可用区自动转移](arc-zonal-autoshift.md)。

# 何时 AWS 启动和停止自动换档
<a name="arc-zonal-autoshift.how-it-works.start-stop-auto"></a>

当您为资源启用区域自动切换时，即表示您授权在事件发生期间 AWS 将应用程序的资源流量从可用区转移出去，以帮助缩短恢复时间。

为实现这一目标，zonal autoshift 使用 AWS 遥测技术尽早检测到存在可能影响客户的可用区损害。当 AWS 启动自动转移时，传输到已配置资源的流量会立即开始从可能会影响客户的受损可用区转移。

可用区自动转移功能专为已针对 AWS 区域中的所有可用区预先扩展其应用程序资源的客户而设计。当自动转移或练习运行启动时，您不应依赖于按需扩展。

AWS 当它确定可用区已恢复时，将结束自动切换。

# ARC 何时安排、启动和结束练习运行
<a name="arc-zonal-autoshift.how-it-works.scheduled-practice-runs"></a>

ARC 每周为资源安排一次练习运行，时长约为 30 分钟。ARC 独立安排、启动和管理每个资源的练习运行。ARC 不会批量处理同一账户中资源的练习运行。您也可以自己启动按需练习运行，以帮助验证您的设置对于可用区自动转移事件是否安全。

当练习运行在预期的持续时间内不间断进行时，它的结果会标记为 `SUCCESSFUL`。还有其他几种可能的结果：`FAILED`、`INTERRUPTED`、`CAPACITY_CHECK_FAILED` 和 `PENDING`。结果值和描述包含在[练习运行结果](arc-zonal-autoshift.considerations.md#ZAConsiderationsPracticeRunOutcomes)部分。

在某些情况下，ARC 会中断练习运行并将其结束。例如，如果在练习运行期间自动转移启动，则 ARC 会中断该练习运行并将其结束。再举一个例子，假设资源对练习运行有不良影响，并导致您指定的用于监控练习运行的警报进入 `ALARM` 状态。在这种情况下，ARC 也会中断该练习运行并将其结束。

此外，在某些情况下，ARC 不会为资源启动计划练习运行。

为了应对针对资源的中断和被阻止的练习运行，ARC 会执行以下操作：
+ 如果针对资源的练习运行在进行期间中断，则 ARC 会认为每周的练习运行已经结束，并会计划在下一周为该资源安排一次新的练习运行。在这种情况下，每周练习的结果为 `INTERRUPTED`，而不是 `FAILED`。只有当监控练习运行的结果警报在练习运行期间进入 `ALARM` 状态时，练习运行结果才会设置为 `FAILED`。
+ 如果在计划启动针对资源的练习运行时存在阻止约束，则 ARC 不会启动练习运行。ARC 将继续定期监控，以确定是否仍存在一个或多个阻止约束。当没有任何阻止约束时，ARC 会对资源启动练习运行。

以下是阻止 ARC 对资源启动或继续练习运行的阻止约束示例：
+ 当有 AWS Fault Injection Service 实验进行时，ARC 不会开始或继续练习。如果在 ARC 安排练习跑开始时某个 AWS FIS 赛事处于活动状态，则 ARC 不会开始练习跑。ARC 在整个练习跑中监视阻挡限制，包括 AWS FIS 赛事。如果 AWS FIS 活动在练习跑处于活动状态时开始，ARC 将结束练习跑，并且在资源下一次定期安排的练习跑之前不会尝试开始另一场练习。
+ 如果某个地区有当前 AWS 赛事，ARC 不会开始为资源而开始练习，而是结束该区域的活跃练习。

当练习运行在没有中断的情况下完成时，ARC 会像往常一样安排一周后进行下一次练习运行。如果由于阻塞限制（例如您指定的 AWS FIS 实验或被封锁的时间窗口）而没有开始练习，ARC 会继续尝试开始练习，直到练习跑可以开始。

# 练习运行的容量检查
<a name="arc-zonal-autoshift.how-it-works.capacity-check"></a>

当练习运行启动时，为了暂时将流量从可用区移出，ARC 会进行检查，验证您在其他可用区中是否有足够的容量来安全地将流量从可用区转移出去。如果没有足够的可用容量，则练习运行的流量转移不会启动，且练习运行将结束。

此外，在 ARC 结束自动转移启动的流量转移之前，当可用区自动转移完成时，ARC 会对负载均衡器资源进行容量检查。如果自动转移结束时容量检查失败，则流量不会转移回原来的可用区。

仅对负载均衡器和 Auto Scaling 组完成容量平衡检查。

对于负载均衡器资源，容量检查可验证与负载均衡器关联的运行状况良好的主机是否分布在各个可用区中。具体而言，容量检查可确保运行状况良好的主机的数量在注册资源的所有可用区中保持均衡。对于容量检查，均衡意味着每个可用区的正常容量与其他区域相当，差异很小。

请注意，容量检查不适用于目标组类型为 Lambda 的负载均衡器，也不适用于应用程序负载均衡器，因为这些目标不是按区域配置的。

还完成了 Auto Scaling 群组的容量检查。对于 Auto Scaling 组，容量检查会验证 Auto Scaling 组的总健康区域容量（即所有可用区域中运行状况良好的主机总数）是否符合为该组设置的所需容量。

**容量检查何时失败**

当容量检查发现资源的可用容量不均衡时，练习运行的结果为 `CAPACITY_CHECK_FAILED`。要详细了解容量检查失败的原因，请参阅 `ZonalShiftSummary` 的 Comment 字段。要查找练习运行可用区转移的 Comment 字段，请执行以下操作：

1. 使用 AWS CLI，列出您在使用 [ListZonalShifts](https://docs.aws.amazon.com/arc-zonal-shift/latest/api/API_ListZonalShifts.html)API 操作的练习运行中指定的资源的区域偏移。

   FOr 例如，要返回区域偏移，可以运行类似于以下内容的命令：

   ```
   aws arc-zonal-shift start-practice-run 
       --resource-identifier="arn:aws:elasticloadbalancing:Region:111122223333:ExampleALB123456890"
   ```

1. 查看返回的 `ZonalShiftSummary` 对象数组，找出由于容量检查而失败的练习运行的可用区转移。

1. 要了解适用的可用区转移，请查看 `Comment` 字段中的信息。

# 练习运行和自动转移通知
<a name="arc-zonal-autoshift.how-it-works.notifications"></a>

通过设置 Amazon 通知，您可以选择收到有关练习跑和资源自动轮班的 EventBridge 通知。即使您尚未为任何资源启用区域自动切换（称为*自动移*位观察者 EventBridge 通知），也可以设置通知。通过自动转移观察者通知，您可以在可用区可能受影响时，收到 ARC 启动的所有自动转移的相关通知。请注意，您必须在每个要接收通知 AWS 区域 的内容中配置此选项。

要查看启用自动转移观察者通知的步骤，请参阅[启用或禁用自动转移观察者通知](arc-zonal-autoshift.enable-autoshift-observer.md)。要了解有关通知选项以及如何在中配置通知选项的更多信息 EventBridge，请参阅[在 Amazon 上使用区域自动换档 EventBridge](eventbridge-zonal-autoshift.md)。

# 可用区转移的优先级
<a name="arc-zonal-autoshift.how-it-works.precedence"></a>

在给定时间，应用的可用区转移不能超过一个。也就是说，只有一家诊所对资源进行区域移动、客户启动的区域移动、自动移位或 AWS FIS 实验。当启动第二次可用区转移时，ARC 会按照优先级来确定哪个可用区转移类型对资源有效。

划分优先级的一般原则是，您作为客户启动的可用区转移优先于其他转移类型。但是，请注意，当前 AWS启动的练习会阻止您开始按需练习。

下面的几个场景示例说明了 ARC 中优先级的运行方式：


| 应用的可用区转移类型 | 发起的可用区转移类型 | 结果 | 
| --- | --- | --- | 
| AWS FIS 实验 | 练习运行 | 练习跑将无法开始，因为 AWS FIS 实验优先。 | 
| AWS FIS 实验 | 手动可用区转移 |  AWS FIS 实验将被取消，并且将应用手动分区偏移。 | 
| AWS FIS 实验 | 区域自动换档 |  AWS FIS 实验将被取消，并将应用区域自动移位。 | 
| AWS FIS 实验 | AWS FIS 实验 | 启动的 AWS FIS 实验将无法启动，因为现有实验正在运行，触发了 AWS FIS 自动移位动作。 | 
| 练习运行 | 手动可用区转移 | 练习运行将被取消，结果将设置为 INTERRUPTED，并将应用可用区转移。 | 
| 练习运行 | AWS FIS 实验 | 练习运行将被取消，结果将设置为 INTERRUPTED，并将应用 AWS FIS 实验。 | 
| 练习运行 | 区域自动换档 | 练习运行将被取消，结果将设置为 INTERRUPTED，并将应用可用区自动转移。 | 
| 手动可用区转移 | 练习运行 | 练习运行将无法启动。 | 
| 手动可用区转移 | AWS FIS 实验 |  AWS FIS 实验将无法启动，如果实验已经在进行中，则实验将失败。 | 
| 手动可用区转移 | 区域自动换档 | 资源的可用区自动转移状态将为 ACTIVE 而非 APPLIED。手动可用区转移优先。 | 
| 区域自动换档  | AWS FIS 实验 |  AWS FIS 实验将无法启动，或者如果正在进行则会失败。 | 
| 区域自动换档  | 手动可用区转移 | 资源的可用区自动转移状态将为 ACTIVE 而非 APPLIED。手动可用区转移优先。 | 
| 区域自动换档  | 练习运行 | 练习运行将无法启动，因为可用区自动转移优先。 | 

当前对资源有效的流量转移已将应用的可用区转移状态设置为 `APPLIED`。任何时候只有一个转移设置为 `APPLIED`。其他正在进行的转移会设置为 `NOT_APPLIED`，但会保持 `ACTIVE` 状态。

# 停止资源的活动自动转移或练习运行
<a name="arc-zonal-autoshift.how-it-works.stop-shift"></a>

要停止针对资源进行的自动转移，请禁用可用区转移。

该资源仍会按相同的计划进行定期练习运行。如果除了禁用自动转移之外您还想停止练习运行，则必须删除与该资源关联的练习运行配置。

删除练习运行配置后，将 AWS 停止执行每周将资源流量从可用区转移的练习运行。此外，由于可用区自动转移需要练习运行，因此当您使用 ARC 控制台删除练习运行配置时，此操作还会禁用针对资源的可用区自动转移。但是，请注意，如果您使用可用区自动转移 API 来删除练习运行，则必须先禁用针对资源的可用区自动转移。

有关更多信息，请参阅[取消可用区自动转移](arc-zonal-autoshift.canceling-an-autoshift.md)和[启用并使用可用区自动转移](arc-zonal-autoshift.start-cancel.md)。

# 流量是如何转移出去的
<a name="arc-zonal-autoshift.how-it-works.how-traffic-shifted"></a>

对于自动转移和练习运行可用区转移，使用与 ARC 用于客户发起的可用区转移相同的机制将流量从可用区转移出去。如果运行状况检查结果为“运行状况不佳”，Amazon Route 53 会将该资源对应的 IP 地址从 DNS 中移除，从而使流量从该可用区转移出去。现在，新连接将 AWS 区域 改为路由到中的其他可用区。

使用自动换档时，当可用区恢复并 AWS 决定结束自动换档时，ARC 会撤消运行状况检查流程，请求恢复 Route 53 的运行状况检查。然后，原始可用区 IP 地址将被恢复，如果运行状况检查结果持续为“运行状况良好”，可用区会重新被纳入应用程序的路由范围。

务必注意，自动转移并非基于监控负载均衡器或应用程序底层运行状况的运行状况检查。通过请求将运行状况检查设置为“运行状况不佳”，ARC 可以使用运行状况检查功能将流量从可用区转移出去，然后在结束自动转移或可用区转移时将运行状况检查再次恢复为正常。

# 练习运行警报
<a name="arc-zonal-autoshift.how-it-works.alarms"></a>

在区域自动切换中，您可以为练习跑指定两种类型的 CloudWatch 警报：结果警报和阻塞警报。

**结果警报（必填）**  
 对于第一种类型的警报，即*结果警报*，至少需要指定一个警报。您应该配置结果警报，以便在每次为期 30 分钟的练习运行期间，在将流量从可用区转移出去时监控应用程序的运行状况。  
为了使练习生效，请将至少一个符合以下两个条件的 CloudWatch 警报指定为结果警报：  
警报监控资源或应用程序的指标  
AND  
当应用程序因丢失一个可用区而受到不利影响时，警报会以 `ALARM` 状态进行响应。  
有关更多信息，请参阅 [配置可用区自动转移的最佳实践](arc-zonal-autoshift.considerations.md)中的**为练习运行指定的警报**部分。  
结果警报还提供了 ARC 针对每次练习运行所报告的*练习运行结果*的信息。如果结果警报进入 `ALARM` 状态，ARC 将结束练习运行并返回练习运行的 `FAILED` 结果。如果练习运行完成了 30 分钟的计划测试期，并且您指定的任何结果警报均未进入 `ALARM` 状态，则结果将返回 `SUCCEEDED`。[练习运行结果](arc-zonal-autoshift.considerations.md#ZAConsiderationsPracticeRunOutcomes)部分提供了所有结果值的列表及其描述。

**阻止警报（可选）**  
您也可以选择指定第二个警报类型，即*阻止警报*。在一个或多个警报处于 `ALARM` 状态时，阻止警报将阻止练习运行启动或继续。当至少一个警报处于 `ALARM` 状态时，阻止警报会阻止练习运行流量转移启动，并停止任何正在进行的练习运行。  
例如，在具有多个微服务的大型架构中，当一个微服务遇到问题时，您通常希望停止应用程序环境中的所有其它更改，其中包括阻止练习运行。您可以在 ARC 中添加阻止警报来完成此操作。

# 阻止时段和允许时段（采用 UTC 时间）
<a name="arc-zonal-autoshift.how-it-works.blocked-windows"></a>

您可以选择*阻止*或*允许*特定日历日期或特定时段（即采用 UTC 时间的特定日期和时间）的练习运行。

例如，如果您计划于 2024 年 5 月 1 日进行应用程序更新，并且您不希望练习运行在此时转移流量，则可以将阻止日期设置为 `2024-05-01`。

或者，假设您每周三天运行业务报告摘要。对于这种情况，您可以将采用 UTC 时间的以下重复日期和时间设置为阻止时段，例如：`MON-20:30-21:30 WED-20:30-21:30 FRI-20:30-21:30`。

或者，您可以决定将星期三和星期五中午至下午 5:00 设置为 ARC 启动练习运行的理想时段，以测试您的设置。对于这种情况，您可以将采用 UTC 时间的以下重复日期和时间设置为允许时段，例如：`WED-12:00-17:00 FRI-12:00-17:00`。