

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

# 支持的资源
<a name="arc-zonal-shift.resource-types"></a>

Amazon 应用程序恢复控制器（ARC）目前支持为可用区转移和可用区自动转移启用以下资源：
+ [Amazon EC2 Auto Scaling 组](arc-zonal-shift.resource-types.ec2-auto-scaling-groups.md)
+ [Amazon Elastic Kubernetes Service](arc-zonal-shift.resource-types.eks.md)
+ 已启用或已禁用跨区域负载均衡的[应用程序负载均衡器](arc-zonal-shift.resource-types.app-load-balancers.md)
+ 已启用或已禁用跨区域负载均衡的[网络负载均衡器](arc-zonal-shift.resource-types.network-load-balancers.md)

有关网络负载均衡器和应用程序负载均衡器的具体要求，请参阅本节中的其他主题。

查看在 ARC 中使用可用区转移、可用区自动转移和资源的以下条件：
+ 资源必须处于活动状态并已完全预置，才能为其转移流量。对资源启动可用区转移之前，请进行检查以确保该资源是 ARC 中的托管资源。例如，在中查看托管资源的列表 AWS 管理控制台，或者使用带有资源标识符的`get-managed-resource`操作。
+ 要对资源启动可用区转移，该资源必须已经部署到启动转移的可用区和 AWS 区域 。确保在要转移资源的可用区所在的同一区域启动可用区转移，并且要转移流量的资源也位于同一可用区和区域中。
+ 确保您具有正确的 IAM 权限对资源进行可用区转移。有关更多信息，请参阅 [IAM 和可用区转移权限](security_iam_service-with-iam-zonal-shift.md)。
+ 当网络负载均衡器或应用程序负载均衡器处于故障打开状态时，可用区转移将不起作用。这是预期的行为，因为当负载均衡器无法打开时，区域转移不能强制可用区运行状况不佳，然后将流量转移到区域 AZs 中的另一个区域。有关更多信息，请参阅《网络负载均衡器用户指南》**中的[为负载均衡器使用 Route 53 DNS 故障转移](https://docs.aws.amazon.com//elasticloadbalancing/latest/network/load-balancer-target-groups.html#r53-dns-failover)和**《应用程序负载均衡器用户指南》中的[为负载均衡器使用 Route 53 DNS 故障转移](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/load-balancer-target-groups.html#r53-dns-failover)。
+ 如果多个负载均衡器将流量转发到同一目标，那么对某个已启用跨区域的负载均衡器执行可用区转移将丢弃所有负载均衡器的目标流量，即使其流量未通过可用区转移进行转移。

# Amazon EC2 Auto Scaling 组
<a name="arc-zonal-shift.resource-types.ec2-auto-scaling-groups"></a>

Amazon EC2 Auto Scaling 组包含一组 Amazon EC2 实例，出于自动扩展和管理的目的，这些实例被视为逻辑分组。另外，自动扩缩组让您能够使用 Amazon EC2 Auto Scaling 功能，如运行状况检查替换和扩展策略。保持 Auto Scaling 组中的实例数量和自动扩展都是 Amazon EC2 Auto Scaling 服务的核心功能。

## 对 Auto Scaling 群组使用区域偏移
<a name="using-asg-zs"></a>

可使用以下方法之一启动可用区转移。

------
#### [ Console ]

**对新组启用可用区转移（控制台）**

1. 按照[使用启动模板创建 Auto Scaling 组](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-launch-template)中的说明完成过程中的每个步骤，直到步骤 10。

1. 在**与其他服务集成**页面上，对于 **ARC 可用区转移**，请选中复选框以启用可用区转移。

1. 对于**运行状况检查行为**，请选择“忽略运行状况不佳”或“替换运行状况不佳”。如果设置为 `replace-unhealthy`，处于活跃可用区转移状态的可用区中运行状况不佳的实例将会被替换。如果设置为 `ignore-unhealthy`，处于活跃可用区转移状态的可用区中运行状况不佳的实例不会被替换。

1. 继续执行[使用启动模板创建 Auto Scaling 组](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-launch-template)中的步骤。

------
#### [ AWS CLI ]

**对新组启用可用区转移（AWS CLI）**  
向 [create-auto-scaling-group](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/create-auto-scaling-group.html) 命令添加 `--availability-zone-impairment-policy` 参数。

`--availability-zone-impairment-policy` 参数有两个选项：
+ **ZonalShiftEnabled**— 如果设置为`true`，Auto Scaling 将使用 ARC 区域偏移注册 Auto Scaling 组[，您可以在 ARC 控制台上启动、更新或取消区域偏移](https://docs.aws.amazon.com/r53recovery/latest/dg/arc-zonal-shift.start-cancel.html)。如果设置为 `false`，Auto Scaling 会从 ARC 可用区转移中取消注册自动扩缩组。必须启用了可用区转移才能将设置为 `false`。
+ **ImpairedZoneHealthCheckBehavior**— 如果设置为`replace-unhealthy`，则可用区中运行状况不佳的实例将替换为有效的区域切换。如果设置为 `ignore-unhealthy`，处于活跃可用区转移状态的可用区中运行状况不佳的实例不会被替换。

以下示例对名为 `my-asg` 的新自动扩缩组启用了可用区转移。

```
aws autoscaling create-auto-scaling-group \
  --launch-template LaunchTemplateName=my-launch-template,Version='1' \
  --auto-scaling-group-name my-asg \
  --min-size 1 \
  --max-size 10 \
  --desired-capacity 5 \
  --availability-zones us-east-1a us-east-1b us-east-1c \
  --availability-zone-impairment-policy '{
      "ZonalShiftEnabled": true,
      "ImpairedZoneHealthCheckBehavior": IgnoreUnhealthy       
    }'
```

------

------
#### [ Console ]

**对现有组启用可用区转移（控制台）**

1. 在上打开 Amazon EC2 控制台 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)，然后从导航窗格中选择 A **uto Scaling Gro** ups。

1. 在屏幕顶部的导航栏上，选择您在其中创建 Auto Scaling 群组的。 AWS 区域 

1. 选中 Auto Scaling 组旁边的复选框。

   这时将在页面底部打开一个拆分窗格。

1. 在**集成**选项卡上的 **ARC 可用区转移**下，选择**编辑**。

1. 选中复选框以启用可用区转移。

1. 对于**运行状况检查行为**，请选择**忽略运行状况不佳**或**替换运行状况不佳**。
   + 如果运行状况检查设置为“忽略运行状况不佳”，处于活跃可用区转移状态的可用区中运行状况不佳的实例*不*会被替换。
   + 如果运行状况检查行为设置为“替换运行状况不佳”，处于活跃可用区转移状态的可用区中运行状况不佳的实例会被替换。

1. 选择**更新**。

------
#### [ AWS CLI ]

**对现有组启用可用区转移（AWS CLI）**  
向 [update-auto-scaling-group](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html) 命令添加 `--availability-zone-impairment-policy` 参数。

`--availability-zone-impairment-policy` 参数有两个选项：
+ **ZonalShiftEnabled**— 如果设置为`TRUE`，Auto Scaling 将使用 ARC 区域偏移注册 Auto Scaling 组[，您可以在 ARC 控制台上启动、更新或取消区域偏移](https://docs.aws.amazon.com/r53recovery/latest/dg/arc-zonal-shift.start-cancel.html)。如果设置为 `FALSE`，Auto Scaling 会从 ARC 可用区转移中取消注册自动扩缩组。必须先启用可用区转移，才能将其设置为 `FALSE`。
+ **ImpairedZoneHealthCheckBehavior**— 如果设置为`replace-unhealthy`，则可用区中运行状况不佳的实例将替换为有效的区域切换。如果设置为 `ignore-unhealthy`，处于活跃可用区转移状态的可用区中运行状况不佳的实例不会被替换。

以下示例对指定自动扩缩组启用了可用区转移。

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \
  --availability-zone-impairment-policy '{
      "ZonalShiftEnabled": true,
      "ImpairedZoneHealthCheckBehavior": IgnoreUnhealthy       
    }'
```

------

要启动可用区转移，请参阅[启动、更新或取消可用区转移](arc-zonal-shift.start-cancel.md)。

## 自动扩缩组可用区转移的工作原理
<a name="how-it-works-asg-zs"></a>

假设有一个包含以下可用区的自动扩缩组：
+ `us-east-1a`
+ `us-east-1b`
+ `us-east-1c`

您注意到 `us-east-1a` 中出现故障并启动可用区转移。在 `us-east-1a` 中启动可用区转移时，会出现以下行为。
+ 向@@ **外扩展** — Auto Scaling 在运行状况良好的可用区（`us-east-1b`和`us-east-1c`）中启动所有新的容量请求。
+ **动态扩展** — Auto Scaling 可阻止扩展策略减少所需容量。Auto Scaling 不会阻止扩展策略增加所需容量。
+ **实例刷新** — Auto Scaling 会延长在活动区域转移期间延迟的任何实例刷新过程的超时时间。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/r53recovery/latest/dg/arc-zonal-shift.resource-types.ec2-auto-scaling-groups.html)

## 使用可用区转移的最佳实践
<a name="best-practices-asg-zs"></a>

要在使用可用区转移时保持应用程序的高可用性，建议遵循以下最佳实践。
+ 监控 EventBridge 通知以确定何时出现持续的可用区损坏事件。有关更多信息，请参阅使用[自动化 Amazon EC2 Auto Scaling](https://docs.aws.amazon.com//autoscaling/ec2/userguide/automating-ec2-auto-scaling-with-eventbridge.html)。 EventBridge
+ 使用具有适当阈值的扩缩策略，确保容量足以应对丢失一个可用区这一情况。
+ 设置运行状况良好的百分比至少为 100% 的实例维护策略。进行这种设置之后，Auto Scaling 会等待新实例准备就绪，然后终止运行状况不佳的实例。

对于预缩放客户，我们还建议采取以下措施：
+ 选择**忽略运行状况不佳**作为受影响可用区的运行状况检查行为，因为在发生问题事件期间无需更换运行状况不佳的实例。
+ 在 ARC 中为自动扩缩组使用可用区转移。中的区域自动切换功能 Amazon 应用程序恢复控制器 (ARC) 允许在 AWS 检测 AWS 到可用区存在障碍时将资源的流量从可用区转移出去。有关更多信息，请参阅 [ARC 中的可用区自动转移](arc-zonal-autoshift.md)。

对于使用已禁用跨区域功能的负载均衡器的客户，我们还建议采取以下措施：
+ 在可用区分配中使用**仅均衡**。
+ 如果您在 Auto Scaling 组和负载均衡器上都使用区域偏移，请务必先取消您的 Auto Scaling 组的区域偏移。然后，等待所有可用区的容量实现均衡，再取消对负载均衡器的可用区转移。
+ 由于启用区域转移并使用禁用跨区域的负载均衡器时，可能会出现容量不平衡的情况，因此 Auto Scaling 需要进行额外的验证。如果您遵循最佳实践，则可以通过选中中的复选框 AWS 管理控制台 或使用`CreateAutoScalingGroup``UpdateAutoScalingGroup`、或中的`skip-zonal-shift-validation`标志来确认这种可能性`AttachTrafficSources`。

# Amazon Elastic Kubernetes Service
<a name="arc-zonal-shift.resource-types.eks"></a>

借助 Amazon EKS 提供的功能，您的应用程序在应对可用区运行状况下降或受影响等事件方面更具弹性。在 Amazon EKS 集群中运行工作负载时，您可以使用可用区转移或可用区自动转移，进一步改善应用程序环境的容错能力和应用程序恢复能力。

## 在 Amazon Elastic Kubernetes Service 中使用可用区转移
<a name="using-eks-zs"></a>

可使用以下方法之一启动可用区转移。有关更多信息，请参阅《Amazon Elastic Kubernetes Service 用户指南》中的**[了解 ARC 可用区转移](https://docs.aws.amazon.com//eks/latest/userguide/zone-shift-enable.html#zone-shift-enable-steps)。

------
#### [ Console ]

**在新的 Amazon EKS 集群上启用可用区转移（控制台）**

1. 找到您要向 ARC 注册的 Amazon EKS 集群的名称和区域。

1. 在 [https://console.aws.amazon.com/eks/home\$1/](https://console.aws.amazon.com/eks/home#/clusters) 集群中打开 Amazon EKS 控制台。

1. 选择您的集群。

1. 在**集群信息**页面上，选择**概述**选项卡。

1. 在**可用区转移**下，选择**管理**。

1. 为 **EKS 可用区转移**，选择**启用**或**禁用**。

------
#### [ AWS CLI ]

**在新的 Amazon EKS 集群上启用可用区转移（AWS CLI）**
+ 输入以下命令：

  ```
  aws eks create-cluster --name my-eks-cluster --role-arn my-role-arn-to-create-cluster --resources-vpc-config subnetIds=string,string,securityGroupIds=string,string,endpointPublicAccess=boolean,endpointPrivateAccess=boolean,publicAccessCidrs=string,string --zonal-shift-config enabled=true
  ```

**在现有 Amazon EKS 集群上启用可用区转移（AWS CLI）**
+ 输入以下命令：

  ```
  aws eks update-cluster-config --name my-eks-cluster --zonal-shift-config enabled=true
  ```

------

您可以为 Amazon EKS 集群启动区域切换，也可以通过启用区域自动切换 AWS 来允许您进行区域切换。使用 ARC 启用 Amazon EKS 集群区域切换后，您可以使用 ARC 控制台、CL AWS I 或区域偏移和区域自动移位开始区域偏移或启用区域自动切换。 APIs

有关启动可用区转移的更多信息，请参阅[启动、更新或取消可用区转移](arc-zonal-shift.start-cancel.md)。

有关使用可用区转移启用 Amazon EKS 的更多信息，请参阅《Amazon Elastic Kubernetes Service 用户指南》中的**[了解 Amazon EKS 中的 ARC 可用区转移](https://docs.aws.amazon.com//eks/latest/userguide/zone-shift.html)。

## 可用区转移如何与 Amazon Elastic Kubernetes Service 结合使用
<a name="how-it-works-eks-zs"></a>

在 Amazon EKS 可用区转移期间，会自动发生以下情况：
+ 受影响可用区中的所有节点都被封锁。这将防止 Kubernetes 调度器将新容器组（pod）调度到运行状况不佳的可用区中的节点上。
+ 如果您使用的是[托管节点组](https://docs.aws.amazon.com//eks/latest/userguide/managed-node-groups.html)，则会暂停[可用区域再平衡](https://docs.aws.amazon.com//autoscaling/ec2/userguide/auto-scaling-benefits.html#AutoScalingBehavior.InstanceUsage)，并更新您的 Auto Scaling 组，以确保新的 Amazon EKS 数据平面节点仅在运行正常 AZs的情况下启动。
+ 运行状况不佳的可用区中的节点不会被终止，容器组（pod）也不会被逐出这些节点。这是为了确保当可用区转移到期或被取消时，您的流量可以安全地返回到仍具有完整容量的可用区。
+  EndpointSlice 控制器在受损的可用区中找到所有 Pod 端点，并将其从相关可用区中移除EndpointSlices。这样可以确保只有运行状况良好 AZs 的 Pod 端点才会成为接收网络流量的目标。当区域转移取消或过期时， EndpointSlice 控制器会更新 EndpointSlices 以包括已恢复的可用区中的端点。

有关更多信息，请参阅 [AWS 容器博客](https://aws.amazon.com/blogs/containers/amazon-eks-now-supports-amazon-application-recovery-controller/)。

# 应用程序负载均衡器
<a name="arc-zonal-shift.resource-types.app-load-balancers"></a>

## 对应用程序负载均衡器使用可用区转移
<a name="using-alb-zs"></a>

要在应用程序负载均衡器中使用可用区转移，必须在应用程序负载均衡器属性中启用 ARC 可用区转移集成。应用程序负载均衡器支持在已启用或已禁用跨区域的配置中使用可用区转移。

在启用 ARC 集成并开始使用可用区转移之前，请查看以下信息：
+ 只能为单个可用区中的特定负载均衡器启动可用区转移。无法为多个可用区启动可用区转移。
+ AWS 当多个基础设施问题影响服务时，主动从 DNS 中删除区域负载均衡器 IP 地址。在开始可用区转移之前，请务必检查当前的可用区容量。
+ 区域转移不适用于单可用区目标群体。
+ 当应用程序负载均衡器是网络负载均衡器的目标时，请始终从网络负载均衡器启动可用区转移。如果从应用程序负载均衡器启动可用区转移，则网络负载均衡器将不会识别转移，并继续向应用程序负载均衡器发送流量。

您可以在 Elastic Load Balancing 控制台（大多数情况下 AWS 区域）或 ARC 控制台中启动负载均衡器的区域切换。

------
#### [ Console ]

**在负载均衡器上启用可用区转移（控制台）**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在**导航**窗格上的**负载均衡**下，选择**负载均衡器**。

1. 选择应用程序负载均衡器名称。

1. 在**属性**选项卡上，选择**编辑**。

1. 在**可用区路由配置**下，对于“ARC 可用区转移集成”，选择**启用**。

1. 选择**保存**。

------
#### [ AWS CLI ]

**在负载均衡器上启用可用区转移（AWS CLI）**
+ 输入以下命令：

  ```
  aws elbv2 modify-load-balancer-attributes --load-balancer-arn my-alb-arn --attributes Key=zonal_shift.config.enabled,Value=true
  ```

------

有关启动可用区转移的更多信息，请参阅[启动、更新或取消可用区转移](arc-zonal-shift.start-cancel.md)。

您可以使用 `keepalive` 选项来配置连接的持续时间。有关更多信息，请参阅《应用程序负载均衡器用户指南》中的 [HTTP 客户端保持连接持续时间](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#http-client-keep-alive-duration)。默认情况下，应用程序负载均衡器将 HTTP 客户端保持连接的持续时间值设置为 3600 秒（即 1 小时）。建议您降低该值，使其与应用程序的恢复时间目标保持一致，例如 300 秒。在选择 HTTP 客户端保持连接的持续时间时，请考虑此值在更频繁地重新连接（这可能会影响延迟）和更快地将所有客户端从受影响的可用区或区域移出之间是一个折中值。

## 可用区转移如何与应用程序负载均衡器结合使用
<a name="how-it-works-alb-zs"></a>

在已启用跨区域负载均衡的应用程序负载均衡器上启动可用区转移时，受影响可用区中指向目标的所有流量都将被阻止，并且可用区转移会将可用区 IP 地址从 DNS 中移除。

有关更多信息，请参阅《应用程序负载均衡器用户指南》**中的[应用程序负载均衡器的集成](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/load-balancer-integrations.html#zonal-shift)。

# 网络负载均衡器
<a name="arc-zonal-shift.resource-types.network-load-balancers"></a>

## 对网络负载均衡器使用可用区转移
<a name="using-nlb-zs"></a>

要将网络负载均衡器与可用区转移结合使用，必须在网络负载均衡器属性中启用 ARC 可用区转移集成功能。网络负载均衡器支持已启用或已禁用跨区域配置的可用区转移。

您可以选择为哪些资源使用可用区转移和可用区自动转移，以及希望何时从受影响的可用区中进行失效转移。面向互联网的网络负载均衡器和内部网络负载均衡器均受支持。

要为已启用跨区域功能的网络负载均衡器启用可用区转移，附加到负载均衡器的所有目标组都必须满足以下要求：
+ 必须启用跨区域负载均衡，或设置为 `use_load_balancer_configuration`。
  + 有关目标组跨区域负载均衡的更多信息，请参阅[目标组的跨区域负载均衡](https://docs.aws.amazon.com//elasticloadbalancing/latest/network/edit-target-group-attributes.html#target-group-cross-zone)。
+ 目标组协议必须为 TCP 或 TLS。
  + 有关网络负载均衡器目标组协议的更多信息，请参阅[路由配置](https://docs.aws.amazon.com//elasticloadbalancing/latest/network/load-balancer-target-groups.html#target-group-routing-configuration)。
+ 必须禁用对运行状况不佳的目标终止连接功能。
  + 有关目标组连接终止的更多信息，请参阅[运行状况不佳的目标的连接终止](https://docs.aws.amazon.com//elasticloadbalancing/latest/network/edit-target-group-attributes.html#unhealthy-target-connection-termination)
+ 目标组不得将任何应用程序负载均衡器作为目标。
  + 有关将应用程序负载均衡器作为目标的更多信息，请参阅[使用应用程序负载均衡器作为网络负载均衡器的目标](https://docs.aws.amazon.com//elasticloadbalancing/latest/network/application-load-balancer-target.html)。

您可以使用 AWS CLI、或 Elastic Load Balancing 微件开始网络负载均衡器的区域切换。 AWS 管理控制台当应用程序负载均衡器是网络负载均衡器的目标时，必须从网络负载均衡器启动可用区转移。如果从应用程序负载均衡器启动可用区转移，则网络负载均衡器将不会停止向应用程序负载均衡器及其目标发送流量。

------
#### [ Console ]

**在负载均衡器上启用可用区转移（控制台）**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在**导航**窗格上的**负载均衡**下，选择**负载均衡器**。

1. 选择网络负载均衡器名称。

1. 在**属性**选项卡上，选择**编辑**。

1. 在**可用区路由配置**部分，对于 **ARC 可用区转移集成**，请选择 **启用**。

1. 选择**保存**。

------
#### [ AWS CLI ]

**在负载均衡器上启用可用区转移（AWS CLI）**
+ 输入以下命令：

  ```
  aws elbv2 modify-load-balancer-attributes --load-balancer-arn my-nlb-arn --attributes Key=zonal_shift.config.enabled,Value=true
  ```

------

有关启动可用区转移的更多信息，请参阅[启动、更新或取消可用区转移](arc-zonal-shift.start-cancel.md)。

## 可用区转移如何与网络负载均衡器结合使用
<a name="howt-it-works-nlb-zs"></a>

ARC 会为注册的网络负载均衡器创建一个运行状况检查故障，这样启动可用区转移后，受影响可用区中的网络负载均衡器节点就会从 DNS 中被移除。网络负载均衡器会禁用受影响区域中的目标，使其停止接收流量，而 Elastic Load Balancing 会将这些目标视为区域转移的禁用目标。处于禁用状态的目标将继续接受运行状况检查。当这些目标运行状况良好且可用区转移到期（或被取消）后，系统将恢复向先前受影响区域中的目标进行路由。

在启用跨区域负载均衡的网络负载均衡器上进行可用区转移期间，将从 DNS 中移除可用区负载均衡器 IP 地址。与受损可用区中目标的现有连接会一直持续，直到它们自然关闭，而新的连接将不再路由到受损可用区中的目标。

 有关更多信息，请参阅《网络负载均衡器用户指南》**中的[网络负载均衡器的可用区转移](https://docs.aws.amazon.com//elasticloadbalancing/latest/network/zonal-shift.html) 