

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

# 使用 Elastic Load Balancing，在自动扩缩组中分配传入的应用程序流量
<a name="autoscaling-load-balancer"></a>

Elastic Load Balancing 可让您自动在运行的所有 EC2 实例之间分配传入的应用程序流量。Elastic Load Balancing 通过最佳路由流量管理传入请求，以便所有实例都不会负载过多。要将 Elastic Load Balancing 与您的 Auto Scaling 组配合使用，请[将负载均衡器附加到您的 Auto Scaling 组](attach-load-balancer-asg.md)。这将使用负载均衡器注册该组，负载均衡器将作为到您的 Auto Scaling 组的所有传入 Web 流量的单一接触点。

当您将 Elastic Load Balancing 与您的 Auto Scaling 组配合使用时，无需使用负载均衡器注册单独的 EC2 实例。您的 Auto Scaling 组所启动的实例会自动注册到负载均衡器。同样，您的 Auto Scaling 组所终止的实例会自动从负载均衡器取消注册。

将负载均衡器附加到您的 Auto Scaling 组后，可以将您的 Auto Scaling 组配置为使用 Elastic Load Balancing 指标（如每个目标的 Application Load Balancer 请求计数）来随着需求波动而扩展该组中的实例数量。

您可以选择将 Elastic Load Balancing 运行状况检查添加到您的 Auto Scaling 组，以便 Amazon EC2 Auto Scaling 可以根据这些额外的运行状况检查识别和替换运行状况不佳的实例。否则，您可以创建一个 CloudWatch 警报，在目标组的健康主机数低于允许值时通知您。

**Topics**
+ [Elastic Load Balancing 类型](#integrations-aws-elastic-load-balancing-types)
+ [准备附加负载均衡器](getting-started-elastic-load-balancing.md)
+ [附加负载均衡器](attach-load-balancer-asg.md)
+ [配置负载均衡器](as-create-load-balancer-console.md)
+ [验证附件状态](load-balancer-status.md)
+ [添加可用区](as-add-az-console.md)
+ [删除可用区](as-remove-az-console.md)
+ [分离负载均衡器](as-remove-load-balancer.md)
+ [AWS CLI 使用 Elastic Load Balancing 的示例](examples-elastic-load-balancing-aws-cli.md)

## Elastic Load Balancing 类型
<a name="integrations-aws-elastic-load-balancing-types"></a>

Elastic Load Balancing 提供四种类型的负载均衡器，可与您的 Auto Scaling 组配合使用：Application Load Balancer、Network Load Balancer、网关负载均衡器和经典负载均衡器。

负载均衡器类型的配置方式具有一个关键区别。通过 Application Load Balancer、Network Load Balancer 和网关负载均衡器，可以使用目标组将实例注册为目标并将流量路由到目标组。通过经典负载均衡器，可以使用负载均衡器直接注册实例。

Application Load Balancer  
路由和负载均衡在应用程序层 (HTTP/HTTPS) 进行，并支持基于路径的路由。Application Load Balancer 可以将请求路由到一个或多个注册目标上的端口，例如，Virtual Private Cloud (VPC) 中的 EC2 实例。

网络负载均衡器  
路由和负载均衡在传输层（TCP/UDP 第 4 层）进行，依据是从第 4 层中提取的地址信息。Network Load Balancer 可以处理突发流量，保留客户端的源 IP，并在负载均衡器的使用寿命内使用固定 IP。

网关负载均衡器  
将流量分配到设备实例队列。为第三方虚拟设备（如防火墙、入侵检测和防御系统以及其他设备）提供可扩展性、可用性和简单性。网关负载均衡器与支持 GENEVE 协议的虚拟设备配合使用。需要额外的技术集成，因此请务必在选择网关负载均衡器之前参考用户指南。

Classic 负载均衡器  
在传输层进行路由和负载平衡 (TCP/SSL), or at the application layer (HTTP/HTTPS)。

要更深入地了解可用的不同类型的负载均衡器，请参阅以下资源：
+ [什么是 Elastic Load Balancing？](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)
+ [什么是 Application Load Balancer？](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)
+ [什么是 Network Load Balancer？](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)
+ [什么是网关负载均衡器？](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/introduction.html)
+ [什么是经典负载均衡器？](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/introduction.html)

# 准备附加 Elastic Load Balancing 负载均衡器
<a name="getting-started-elastic-load-balancing"></a>

在将 Elastic Load Balancing 负载均衡器附加到自动扩缩组之前，您必须完成以下先决条件：
+ 您必须已创建用于将流量路由到自动扩缩组的负载均衡器和目标组。

  有两种方法来创建负载均衡器和目标组：
  + **使用 Elastic Load Balancing**：按照 Elastic Load Balancing 文档中的程序，在创建自动扩缩组之前创建并配置负载均衡器和目标组。跳过注册 Amazon EC2 实例的步骤。当您将目标组附加到自动扩缩组时，Amazon EC2 Auto Scaling 将自动负责注册（和取消注册）实例。有关更多信息，请参阅 *Elastic Load Balancing 用户指南*中的 [Elastic Load Balancing 入门](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/load-balancer-getting-started.html)。
  + **使用 Amazon EC2 Auto Scaling**：从 Amazon EC2 Auto Scaling 控制台创建、配置和附加具有基本配置的负载均衡器和目标组。有关更多信息，请参阅 [从控制台配置应用程序负载均衡器或网络负载均衡器](as-create-load-balancer-console.md)。
+ 在创建负载均衡器之前，请先了解所需的负载均衡器类型。有关更多信息，请参阅 [Elastic Load Balancing 类型](autoscaling-load-balancer.md#integrations-aws-elastic-load-balancing-types)。
+ 负载均衡器及其目标组必须与您的 Auto Scaling 组位于相同 AWS 账户的 VPC 和区域中。
+ 目标组必须指定的 `instance` 目标类型。使用 Auto Scaling 组时，无法指定 `ip` 的目标类型。
+ 如果自动扩缩组的启动模板未包含允许来自负载均衡器的必要入站流量的正确安全组，则必须更新启动模板。推荐规则取决于负载均衡器的类型和负载均衡器使用的后端类型。例如，要将流量路由到 Web 服务器，请允许从负载均衡器在端口 80 上进行入站 HTTP 访问。修改启动模板时，现有实例不会使用新设置进行更新。要更新现有实例，您可以启动实例刷新以替换实例。有关更多信息，请参阅 [使用实例刷新更新自动扩缩组中的实例](asg-instance-refresh.md)。
+ 启动模板中的安全组还必须允许从 Elastic Load Balancing 负载均衡器通过正确的端口访问以执行运行状况检查。
+ 在网关负载均衡器后部署虚拟设备时，启动模板中的亚马逊机器映像（AMI）必须指定某个支持 GENEVE 协议的 AMI 的 ID，以允许自动扩缩组与网关负载均衡器交换流量。此外，启动模板中的安全组必须允许 UDP 流量通过端口 6081。

**提示**  
如果您拥有需要一段时间才能完成的引导启动脚本，则可以选择向您的 Auto Scaling 组添加启动生命周期钩子，以便在引导启动脚本成功完成并且实例上的应用程序准备好接受流量之前，推迟将实例注册到负载均衡器后。首次在 Amazon EC2 Auto Scaling 控制台中创建 Auto Scaling 组时，您将无法添加生命周期钩子。不过，您可以在创建组后再添加生命周期挂钩。有关更多信息，请参阅 [Amazon EC2 Auto Scaling 生命周期钩子](lifecycle-hooks.md)。

## 配置目标的运行状况检查
<a name="elb-health-checks-for-targets"></a>

您可以为向 Elastic Load Balancing 负载均衡器注册的目标配置运行状况检查，以确保其能够正确处理流量。具体步骤因您使用的负载均衡器类型而有所不同。有关更多信息，请参阅以下资源：
+ **应用程序负载均衡器**：请参阅《User Guide for Application Load Balancers》**中的 [Health checks for your target groups](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html)。
+ **网络负载均衡器**：请参阅《User Guide for Network Load Balancers》**中的 [Health checks for your target groups](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-health-checks.html)。
+ **网关负载均衡器**：请参阅《User Guide for Gateway Load Balancers》**中的 [Health checks for your target groups](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/health-checks.html)。
+ **经典负载均衡器**：《User Guide for Classic Load Balancers》**中的 [Configure health checks for your Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-healthchecks.html)。

默认情况下，如果实例未通过 Elastic Load Balancing 运行状况检查，Amazon EC2 Auto Scaling 不会认为实例运行状况不佳并予以替换。自动扩缩组的默认运行状况检查只有 EC2 运行状况检查。有关更多信息，请参阅 [自动扩缩组中实例的运行状况检查](ec2-auto-scaling-health-checks.md)。

要使 Amazon EC2 Auto Scaling 能够替换 Elastic Load Balancing 报告运行状况不佳的实例，您可以将自动扩缩组配置为使用 Elastic Load Balancing 运行状况检查。这样，如果实例未能通过 EC2 运行状态检查或 Elastic Load Balancing 运行状况检查，则 Amazon EC2 Auto Scaling 会认为该实例运行状况不佳。如果您将多个负载均衡器目标组或经典负载均衡器附加到该组，则只有在所有负载均衡器目标组或经典负载均衡器均报告某实例运行状况良好的情况下，它才会认为该实例运行状况良好。如果其中任何一个负载均衡器目标组或经典负载均衡器将实例报告为运行状况不佳，则 Auto Scaling 组将替换该实例，即使其他负载均衡器目标组或经典负载均衡器将实例报告为运行状况良好也是如此。

有关如何为自动扩缩组启用这些运行状况检查的信息，请参阅[将 Elastic Load Balancing 负载均衡器附加到自动扩缩组](attach-load-balancer-asg.md)。

**注意**  
为确保这些运行状况检查尽快开始，确保组的运行状况检查宽限期未设置得过高，但应设置得足够高，以便 Elastic Load Balancing 运行状况检查确定目标是否可用于处理请求。有关更多信息，请参阅 [设置自动扩缩组的运行状况检查宽限期](health-check-grace-period.md)。

# 将 Elastic Load Balancing 负载均衡器附加到自动扩缩组
<a name="attach-load-balancer-asg"></a>

本主题描述了如何将 Elastic Load Balancing 负载均衡器附加到自动扩缩组。它还描述了如何开启 Elastic Load Balancing 运行状况检查，让 Amazon EC2 Auto Scaling 替换 Elastic Load Balancing 报告运行状况不佳的实例。

预设情况下，Amazon EC2 Auto Scaling 仅根据 Amazon EC2 运行状况检查替换运行状况不佳或无法访问的实例。如果您开启 Elastic Load Balancing 运行状况检查，当附加到自动扩缩组的任何 Elastic Load Balancing 负载均衡器报告正在运行的实例运行状况不佳时，Amazon EC2 Auto Scaling 可以替换该实例。

有关将应用程序负载均衡器附加到自动扩缩组的教程，请参阅[教程：设置具有扩展和负载均衡功能的应用程序](tutorial-ec2-auto-scaling-load-balancer.md)。

**重要**  
在继续之前，请完成上一节中的所有[先决条件](getting-started-elastic-load-balancing.md)。

**Contents**
+ [附加目标组或经典负载均衡器](#as-add-load-balancer-console)
+ [分离目标组或经典负载均衡器](#as-remove-load-balancer)

## 附加目标组或经典负载均衡器
<a name="as-add-load-balancer-console"></a>

创建或更新自动扩缩组时，可以附加一个或多个目标组或经典负载均衡器。当您附加应用程序负载均衡器、网络负载均衡器或网关负载均衡器时，您将附加目标组而不是负载均衡器本身。

请按照本部分中的步骤，使用控制台来执行以下操作：
+ 将目标组或经典负载均衡器附加到自动扩缩组
+ 开启 Elastic Load Balancing 的运行状况检查

**在创建新的 Auto Scaling 组时附加现有负载均衡器**

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

1. 在屏幕顶部的导航栏中，选择您在其中创建了负载均衡器的 AWS 区域 。

1. 选择 **Create Auto Scaling group**（创建 Auto Scaling 组）。

1.  在步骤 1 和 2中，选择所需的选项，然后继续执行**步骤 3：配置高级选项**。

1. 对于**负载均衡**，选择**附上现有负载均衡器**。

1. 在**附加到现有负载均衡器**，请执行以下操作之一：

   1. 对于 Application Load Balancer、Network Load Balancer 和网关负载均衡器：

      选择**从负载均衡器目标组中选择**，然后在**现有负载均衡器目标组**字段中选择目标组。

   1. 对于经典负载均衡器：

      选择**从经典负载均衡器中选择**，然后在 **经典负载均衡器** 字段中选择您的负载均衡器。

1. （可选）对于**运行状况检查**、**其他运行状况检查类型**，请选择**启用 Elastic Load Balancing 运行状况检查**。

1. （可选）对于**运行状况检查宽限期**，输入时间长短（以秒为单位）。这是 Amazon EC2 Auto Scaling 在实例进入 `InService` 状态后需要等待完成实例运行状况检查的时间。有关更多信息，请参阅 [设置自动扩缩组的运行状况检查宽限期](health-check-grace-period.md)。

1. 继续创建 Auto Scaling 组。创建 Auto Scaling 组后，您的实例将自动注册到负载均衡器。

**将现有的负载均衡器附加到您的自动扩缩组（在其创建后）**

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

1. 选中您的自动扩缩组旁边的复选框。

   这时将在 **Auto Scaling groups**（Auto Scaling 组）页面底部打开一个拆分窗格。

1. 在**集成**选项卡上，选择**负载均衡**、**编辑**。

1. 在 **Load balancing (负载均衡)** 下，执行下列操作之一：

   1. 对于**应用程序、网络或网关负载均衡器目标组**，选中其复选框，然后选择一个目标组。

   1. 对于 **经典负载均衡器**，选中其复选框，然后选择您的负载均衡器。

1. 选择**更新**。

附加完负载均衡器后，您可以选择开启使用该负载均衡器的运行状况检查。

**开启 Elastic Load Balancing 运行状况检查**

1. 在 **Details (详细信息)** 选项卡上，选择 **Health checks (运行状况检查)**、**Edit (编辑)**。

1. 对于**运行状况检查**、**其他运行状况检查类型**，请选择**启用 Elastic Load Balancing 运行状况检查**。

1. 对于**运行状况检查宽限期**，输入时间长短（以秒为单位）。这是 Amazon EC2 Auto Scaling 在实例进入 `InService` 状态后需要等待完成实例运行状况检查的时间。有关更多信息，请参阅 [设置自动扩缩组的运行状况检查宽限期](health-check-grace-period.md)。

1. 选择**更新**。

**注意**  
在附加负载均衡器时，您可以使用 AWS CLI来监控负载均衡器的状态。当 Amazon EC2 Auto Scaling 成功注册实例并且至少有一个已注册的实例通过了运行状况检查时，您会收到 `InService` 状态。有关更多信息，请参阅 [验证负载均衡器的附加状态](load-balancer-status.md)。

## 分离目标组或经典负载均衡器
<a name="as-remove-load-balancer"></a>

如果不再需要负载均衡器，请使用以下步骤将其与 Auto Scaling 组分离。

**将负载均衡器与组分离**

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

1. 选中现有组旁边的复选框。

   这时将在 **Auto Scaling groups**（Auto Scaling 组）页面底部打开一个拆分窗格。

1. 在 **Details (详细信息)** 选项卡上，选择 **Load balancing (负载均衡)**、**Edit (编辑)**。

1. 在 **Load balancing (负载均衡)** 下，执行下列操作之一：

   1. 对于**应用程序、网络或网关负载均衡器目标组**，请选择目标组旁边的删除 (X) 图标。

   1. 对于 **经典负载均衡器**，请选择负载均衡器旁边的删除 (X) 图标。

1. 选择**更新**。

完成分离目标组后，您可以关闭 Elastic Load Balancing 运行状况检查。

**关闭 Elastic Load Balancing 运行状况检查**

1. 在 **Details (详细信息)** 选项卡上，选择 **Health checks (运行状况检查)**、**Edit (编辑)**。

1. 对于**运行状况检查**、**其他运行状况检查类型**，取消选择**开启弹性负载均衡运行状况检查**。

1. 选择**更新**。

# 从控制台配置应用程序负载均衡器或网络负载均衡器
<a name="as-create-load-balancer-console"></a>

在创建您的 Auto Scaling 组时，使用以下过程创建和附加 Application Load Balancer 或 Network Load Balancer。

**在创建新的 Auto Scaling 组时创建和附加新的负载均衡器**

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

1. 选择 **Create Auto Scaling group**（创建 Auto Scaling 组）。

1. 在步骤 1 和 2 中，选择所需的选项，然后继续执行**步骤 3：配置高级选项**。

1. 对于**负载均衡**，选择**附加到新的负载均衡器**。

   1. 在 **Attach to a new load balancer**（附加到新的负载均衡器）下，对于 **Load balancer type**（负载均衡器类型），选择是创建 Application Load Balancer 还是 Network Load Balancer。

   1. 对于**负载均衡器名称**，输入负载均衡器的名称，或者保留默认名称。

   1. 对于**负载均衡器模式**，选择是创建面向互联网的公共负载均衡器，还是保留内部负载均衡器的默认负载均衡器。

   1. 对于**可用区和子网**，为在其中启动 EC2 实例的每个可用区选择公有子网。（这些都是从步骤 2 预填充的。）

   1. 对于**侦听器和路由**，请更新侦听器的端口号（如有必要），然后在**默认路由**中，选择**创建目标组**。或者，您可以从下拉列表中选择现有目标组。

   1. 如果您选择在最后一步**创建目标组**，对于**新目标组名称**，请输入目标组的名称，或者保留默认名称。

   1. 要为负载均衡器添加标签，请选择 **Add tag**（添加标签），然后提供每个标签的标签键和值。

1. （可选）对于**运行状况检查**、**其他运行状况检查类型**，请选择**启用 Elastic Load Balancing 运行状况检查**。

1. （可选）对于**运行状况检查宽限期**，输入时间长短（以秒为单位）。这是 Amazon EC2 Auto Scaling 在实例进入 `InService` 状态后需要等待完成实例运行状况检查的时间。有关更多信息，请参阅 [设置自动扩缩组的运行状况检查宽限期](health-check-grace-period.md)。

1. 继续创建 Auto Scaling 组。创建 Auto Scaling 组后，您的实例将自动注册到负载均衡器。
**注意**  
创建 Auto Scaling 组后，您可以使用 Elastic Load Balancing 控制台创建其他侦听器。如果您需要使用安全协议（如 HTTPS，或 UDP 侦听器）创建侦听器，这将非常有用。只要使用不同的端口，您就可以向现有负载均衡器添加更多侦听器。

# 验证负载均衡器的附加状态
<a name="load-balancer-status"></a>

当您附加了负载均衡器后，它进入 `Adding` 状态，同时注册组中的实例。注册了组中的所有实例后，它进入 `Added` 状态。在至少一个注册实例通过运行状况检查后，它进入 `InService` 状态。当负载均衡器进入 `InService` 状态时，Amazon EC2 Auto Scaling 可以终止和替换报告为运行状况不佳的所有实例。如果注册的实例均未通过运行状况检查（例如，由于未正确配置运行状况检查），负载均衡器不会进入 `InService` 状态。Amazon EC2 Auto Scaling 不会终止和替换这些实例。

当分离负载均衡器时，它进入 `Removing` 状态，同时取消注册组中的实例。实例在取消注册后仍保持运行。预设情况下，Application Load Balancer、Network Load Balancer 和 Gateway Load Balancer 启用 Connection Draining（注销延迟）功能。如果启用了 Connection Draining，则 Elastic Load Balancing 将等待动态请求完成或最大超时到期（以先到者为准），然后再取消注册实例。

您可以使用 AWS Command Line Interface (AWS CLI) 或，验证附件状态 AWS SDKs。您无法通过控制台来验证附加状态。

**使用 AWS CLI 来验证附件状态**  
以下[describe-traffic-sources](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-traffic-sources.html)命令返回指定 Auto Scaling 组的所有流量源的连接状态。

```
aws autoscaling describe-traffic-sources --auto-scaling-group-name my-asg
```

该示例会返回附加到自动扩缩组的 Elastic Load Balancing 目标组的 ARN，以及 `State` 元素中目标组的附加状态。

```
{
    "TrafficSources": [
        {
            "Identifier": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456",
            "State": "InService",
            "Type": "elbv2"
        }
    ]
}
```

# 添加可用区
<a name="as-add-az-console"></a>

为利用地理冗余的安全性和可靠性，请使自动扩缩组跨您工作所在区域中的多个可用区，然后附加负载均衡器以跨这些可用区分配传入流量。

当一个可用区运行状况不佳或无法使用时，Amazon EC2 Auto Scaling 将在不受影响的可用区中启动新实例。当运行状况不佳的可用区恢复运行状况时，Amazon EC2 Auto Scaling 会自动在 Auto Scaling 组的所有可用区中重新均匀分配应用程序实例。Amazon EC2 Auto Scaling 通过尝试在实例最少的可用区中启动新实例来执行此操作。但是，如果尝试失败，Amazon EC2 Auto Scaling 将尝试在其他可用区中启动，直到成功为止。

Elastic Load Balancing 会为您为负载均衡器启用的每个可用区创建一个负载均衡器节点。如果您为负载均衡器启用了跨区域负载均衡，则每个负载均衡器节点会在所有启用的可用区中的已注册目标之间平均分配流量。如果禁用了跨区域负载均衡，则每个负载均衡器节点会仅在其可用区中的已注册实例之间平均分配请求。

创建 Auto Scaling 组时，必须指定至少一个可用区。之后，您可以通过将可用区添加到您的 Auto Scaling 组中，然后为您的负载均衡器启用该可用区（如果负载均衡器支持），来扩展应用程序的可用性。

**限制**  
要更新为负载均衡器启用的可用区，您需要了解以下限制：
+ 如果为您的负载均衡器启用可用区，请指定该可用区中的一个子网。请注意，您最多可为负载均衡器启用每个可用区最多一个子网。
+ 对于面向互联网的负载均衡器，您为负载均衡器指定的子网必须至少具有八个可用 IP 地址。
+ 对于 Application Load Balancer，您必须启用至少两个可用区。
+ 对于 Network Load Balancer，您无法禁用已启用的可用区，但可以启用其他可用区。
+ 对于网关负载均衡器，您无法禁用已启用的可用区，但可以启用其他可用区。

使用以下过程将 Auto Scaling 组和负载均衡器扩展到其他可用区中的子网。

**添加可用区**

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

1. 选中现有组旁边的复选框。

   这时将在 **Auto Scaling groups**（Auto Scaling 组）页面底部打开一个拆分窗格。

1. 在 **Details (详细信息)** 选项卡上，选择 **Network (网络)**、**Edit (编辑)**。

1. 在**子网**中，选择与要添加到 Auto Scaling 组的可用区相对应的子网。

1. 选择**更新**。

1. 要更新负载均衡器的可用区，使其与您的 Auto Scaling 组共享相同的可用区，请完成以下步骤：

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

   1. 选择负载均衡器。

   1. 请执行以下操作之一：
      + 对于 Application Load Balancer 和 Network Load Balancer：

        1. 在**描述**选项卡上，为**可用区**选择**编辑子网**。

        1. 在**编辑子网**页面上，为**可用区**选中要添加的可用区的复选框。如果该区域只有一个子网，则将选择此子网。如果该区域有多个子网，请选择其中一个子网。
      + 对于 VPC 中的经典负载均衡器：

        1. 在 **Instances** 选项卡中，选择 **Edit Availability Zones**。

        1. 在**添加和删除子网**页面上，对于**可用子网**，使用其添加 (\$1) 图标选择该子网。该子网将移到 **Selected subnets** 下。

   1. 选择**保存**。

## 相关资源
<a name="availability-zone-related-resources"></a>

在更改可用区时，Amazon EC2 Auto Scaling 会再平衡您的组。这意味着要替换和重新分配某些实例。有关更多信息，请参阅 [示例：在可用区之间分配实例](auto-scaling-benefits.md#arch-AutoScalingMultiAZ)。

如果您在可用区中注册了未启用负载均衡器的目标，则负载均衡器不会将流量路由到这些目标。有关更多信息，请参阅 *弹性负载均衡 用户指南*中的 [Elastic Load Balancing 工作原理](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html)

# 删除可用区
<a name="as-remove-az-console"></a>

要从您的 Auto Scaling 组和负载均衡器中删除可用区，请使用以下步骤。

**删除可用区**

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

1. 选中现有组旁边的复选框。

   这时将在 **Auto Scaling groups**（Auto Scaling 组）页面底部打开一个拆分窗格。

1. 在 **Details (详细信息)** 选项卡上，选择 **Network (网络)**、**Edit (编辑)**。

1. 在**子网**中，选择与您要从 Auto Scaling 组删除的可用区相对应的子网的删除 (X) 图标。如果该区域有多个子网，请为每个子网选择删除 (X) 图标。

1. 选择**更新**。

1. 要更新负载均衡器的可用区，使其与您的 Auto Scaling 组共享相同的可用区，请完成以下步骤：

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

   1. 选择负载均衡器。

   1. 请执行以下操作之一：
      + 对于应用程序负载均衡器：

        1. 在**描述**选项卡上，为**可用区**选择**编辑子网**。

        1. 在**编辑子网**页面上，为**可用区**清除要删除该可用区子网的复选框。
      + 对于 VPC 中的经典负载均衡器：

        1. 在 **Instances** 选项卡中，选择 **Edit Availability Zones**。

        1. 在**添加和删除子网**页面上，对于**可用子网**，使用其删除 (-) 图标删除该子网。子网将移至**可用子网**下。

   1. 选择**保存**。

# 从自动扩缩组分离目标组或经典负载均衡器
<a name="as-remove-load-balancer"></a>

如果不再需要负载均衡器，请使用以下步骤将其与 Auto Scaling 组分离。

**将负载均衡器与组分离**

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

1. 选中现有组旁边的复选框。

   这时将在 **Auto Scaling groups**（Auto Scaling 组）页面底部打开一个拆分窗格。

1. 在 **Details (详细信息)** 选项卡上，选择 **Load balancing (负载均衡)**、**Edit (编辑)**。

1. 在 **Load balancing (负载均衡)** 下，执行下列操作之一：

   1. 对于**应用程序、网络或网关负载均衡器目标组**，请选择目标组旁边的删除 (X) 图标。

   1. 对于 **经典负载均衡器**，请选择负载均衡器旁边的删除 (X) 图标。

1. 选择**更新**。

完成分离目标组后，您可以关闭 Elastic Load Balancing 运行状况检查。

**关闭 Elastic Load Balancing 运行状况检查**

1. 在 **Details (详细信息)** 选项卡上，选择 **Health checks (运行状况检查)**、**Edit (编辑)**。

1. 对于**运行状况检查**、**其他运行状况检查类型**，取消选择**开启弹性负载均衡运行状况检查**。

1. 选择**更新**。

# 使用 Elastic Load Balancing 的示例 AWS CLI
<a name="examples-elastic-load-balancing-aws-cli"></a>

使用 AWS Command Line Interface (AWS CLI) 来连接、分离和描述负载均衡器和目标组，添加和移除 Elastic Load Balancing 运行状况检查，以及更改启用了哪些可用区。

本主题显示了执行 Amazon EC2 Auto Scaling 常见任务的 AWS CLI 命令示例。

**重要**  
有关更多命令示例，请参阅*AWS CLI 命令参考*中的[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elbv2/index.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elbv2/index.html) 和 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/index.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/index.html)。

**Topics**
+ [附加目标组或经典负载均衡器](#example-attach-traffic-sources)
+ [描述您的目标组或经典负载均衡器](#example-describe-traffic-sources)
+ [添加 Elastic Load Balancing 运行状况检查](#example-add-elb-healthcheck)
+ [更改您的可用区](#example-specify-availability-zones)
+ [分离目标组或经典负载均衡器](#example-detach-traffic-sources)
+ [移除 Elastic Load Balancing 运行状况检查](#example-remove-elb-healthcheck)
+ [旧版命令](#legacy-commands)

## 附加目标组或经典负载均衡器
<a name="example-attach-traffic-sources"></a>

使用以下[create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)命令创建 Auto Scaling 组，并通过指定目标组的亚马逊资源名称 (ARN) 来同时附加目标组。目标组可以关联至应用程序负载均衡器、网络负载均衡器或网关负载均衡器。

替换 `--auto-scaling-group-name`、`--vpc-zone-identifier`、`--min-size` 和 `--max-size` 的示例值。对于 `--launch-template` 选项，请将 `my-launch-template` 和 `1` 替换为您的自动扩缩组的启动模板的名称和版本。对于 `--traffic-sources` 选项，将示例 ARN 替换为应用程序负载均衡器、网络负载均衡器或网关负载均衡器的目标组的 ARN。

```
aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \
  --launch-template LaunchTemplateName=my-launch-template,Version='1' \
  --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \
  --min-size 1 --max-size 5 \
  --traffic-sources "Identifier=arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE1"
```

在 Auto Scaling 组创建后，使用[attach-traffic-sources](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/attach-traffic-sources.html)命令将其他目标组附加到 Auto Scaling 组。

以下命令可将另一个目标组添加到同一个组。

```
aws autoscaling attach-traffic-sources --auto-scaling-group-name my-asg \
  --traffic-sources "Identifier=arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE2"
```

或者，要将经典负载均衡器附加到您的组，请在使用 **create-auto-scaling-group** 或 **attach-traffic-sources** 时指定 `--traffic-sources` 和 `--type` 选项，如以下示例所示。请将 `my-classic-load-balancer` 替换为经典负载均衡器的名称。对于 `--type` 选项，请指定 `elb` 的值。

```
--traffic-sources "Identifier=my-classic-load-balancer" --type elb
```

## 描述您的目标组或经典负载均衡器
<a name="example-describe-traffic-sources"></a>

要描述附加到 Auto Scaling 组的负载均衡器或目标组，请使用以下[describe-traffic-sources](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-traffic-sources.html)命令。将 `my-asg` 替换为您的组名。

```
aws autoscaling describe-traffic-sources --auto-scaling-group-name my-asg
```

该示例会返回附加到自动扩缩组的 Elastic Load Balancing 目标组的 ARN。

```
{
    "TrafficSources": [
        {
            "Identifier": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE1",
            "State": "InService",
            "Type": "elbv2"
        },
        {
            "Identifier": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/12345678EXAMPLE2",
            "State": "InService",
            "Type": "elbv2"
        }
    ]
}
```

有关输出中的 `State` 字段说明，请参阅 [验证负载均衡器的附加状态](load-balancer-status.md)。

## 添加 Elastic Load Balancing 运行状况检查
<a name="example-add-elb-healthcheck"></a>

要将 Elastic Load Balancing 运行状况检查添加到您的 Auto Scaling 组对实例执行的运行状况检查中，请使用以下[update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)命令并指定`ELB`为该`--health-check-type`选项的值。将 `my-asg` 替换为您的组名。

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \
  --health-check-type "ELB"
```

新实例通常需要时间进行短暂的预热，然后才能通过运行状况检查。如果宽限期没有提供足够的预热时间，则实例可能未准备好提供流量。Amazon EC2 Auto Scaling 可能会将这些实例视为运行状况不佳并替换它们。

若要更新运行状况检查宽限期，请在使用 **update-auto-scaling-group** 时使用 `--health-check-grace-period` 选项，如以下示例所示。如果发现新实例运行状况不佳，则将其终止之前，将其替换*300*为保持运行状态的秒数。

```
--health-check-grace-period 300
```

有关更多信息，请参阅 [自动扩缩组中实例的运行状况检查](ec2-auto-scaling-health-checks.md)。

## 更改您的可用区
<a name="example-specify-availability-zones"></a>

更改可用区时，应注意某些限制。有关更多信息，请参阅 [添加可用区删除可用区](as-add-az-console.md)。

**更改应用程序负载均衡器或网络负载均衡器的可用区**

1. 在更改负载均衡器的可用区之前，最好先更新自动扩缩组的可用区，以验证您的实例类型是否可在指定区域中使用。

   要更新您的 Auto Scaling 组的可用区域，请使用以下[update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)命令。将示例子网 IDs 替换 IDs 为可用区中要启用的子网。用指定的子网替换先前启用的子网。将 `my-asg` 替换为您的组名。

   ```
   aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \
     --vpc-zone-identifier "subnet-41767929,subnet-cb663da2,subnet-8360a9e7"
   ```

1. 使用以下[describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html)命令验证新子网中的实例是否已启动。如果实例已启动，您将看到实例及其状态的列表。将 `my-asg` 替换为您的组名。

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
   ```

1. 使用以下 [set-subnets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elbv2/set-subnets.html) 命令为您的负载均衡器指定子网。将示例子网 IDs 替换 IDs 为可用区中要启用的子网。每个可用区您只能指定一个子网。用指定的子网替换先前启用的子网。将 `my-lb-arn` 替换为负载均衡器的 ARN。

   ```
   aws elbv2 set-subnets --load-balancer-arn my-lb-arn \
     --subnets subnet-41767929 subnet-cb663da2 subnet-8360a9e7
   ```

**更改经典负载均衡器的可用区**

1. 在更改负载均衡器的可用区之前，最好先更新自动扩缩组的可用区，以验证您的实例类型是否可在指定区域中使用。

   要更新您的 Auto Scaling 组的可用区域，请使用以下[update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)命令。将示例子网 IDs 替换 IDs 为可用区中要启用的子网。用指定的子网替换先前启用的子网。将 `my-asg` 替换为您的组名。

   ```
   aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \
     --vpc-zone-identifier "subnet-41767929,subnet-cb663da2"
   ```

1. 使用以下[describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html)命令验证新子网中的实例是否已启动。如果实例已启动，您将看到实例及其状态的列表。将 `my-asg` 替换为您的组名。

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
   ```

1. 使用以下 [attach-load-balancer-to-subnet](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/attach-load-balancer-to-subnets.html) s 命令为您的 Classic Load Balancer 启用新的可用区。将示例子网 ID 替换为要启用的可用区的子网 ID。将 `my-lb` 替换为您负载均衡器的名称。

   ```
   aws elb attach-load-balancer-to-subnets --load-balancer-name my-lb \
     --subnets subnet-cb663da2
   ```

   要禁用可用区，请使用以下 [detach-load-balancer-from-subnets 命令](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/detach-load-balancer-from-subnets.html)。将示例子网 ID 替换为要禁用的可用区的子网 ID。将 `my-lb` 替换为您负载均衡器的名称。

   ```
   aws elb detach-load-balancer-from-subnets --load-balancer-name my-lb \
     --subnets subnet-8360a9e7
   ```

## 分离目标组或经典负载均衡器
<a name="example-detach-traffic-sources"></a>

当您不再需要目标组时，以下[detach-traffic-sources](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/detach-traffic-sources.html)命令会将其从 Auto Scaling 组中分离出来。

对于 `--auto-scaling-group-name` 选项，请将 `my-asg` 替换为您的组名称。对于 `--traffic-sources` 选项，将示例 ARN 替换为应用程序负载均衡器、网络负载均衡器或网关负载均衡器的目标组的 ARN。

```
aws autoscaling detach-traffic-sources --auto-scaling-group-name my-asg \
  --traffic-sources "Identifier=arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"
```

要将经典负载均衡器与您的组分离，请指定 `--traffic-sources` 和 `--type` 选项，如以下示例所示。请将 `my-classic-load-balancer` 替换为经典负载均衡器的名称。对于 `--type` 选项，请指定 `elb` 的值。

```
--traffic-sources "Identifier=my-classic-load-balancer" --type elb
```

## 移除 Elastic Load Balancing 运行状况检查
<a name="example-remove-elb-healthcheck"></a>

要从 Auto Scaling 组中移除 Elastic Load Balancing 运行状况检查，请使用以下[update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)命令并指定`EC2`为该`--health-check-type`选项的值。将 `my-asg` 替换为您的组名。

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \
  --health-check-type "EC2"
```

有关更多信息，请参阅 [自动扩缩组中实例的运行状况检查](ec2-auto-scaling-health-checks.md)。

## 旧版命令
<a name="legacy-commands"></a>

以下示例演示如何使用旧版 CLI 命令附加、分离和描述负载均衡器和目标组。本文档中将保留这些命令，以供希望使用它们的客户参考。我们继续支持旧版 CLI 命令，但我们建议您使用新版“流量来源”CLI 命令，该命令可以附加和分离多种流量源类型。您可以在同一自动扩缩组上同时使用旧版 CLI 命令和“流量来源”CLI 命令。

### 附加您的目标组或经典负载均衡器（遗留）
<a name="example-attach-load-balancer-target-group"></a>

**附加您的目标组**  
以下[create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)命令创建带有附加目标组的 Auto Scaling 组。为 Application Load Balancer、Network Load Balancer 或网关负载均衡器指定目标组的 Amazon Resource Name (ARN)。

```
aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \
  --launch-template LaunchTemplateName=my-launch-template,Version='1' \
  --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \
  --target-group-arns "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456" \
  --min-size 1 --max-size 5
```

以下 [attach-load-balancer-target-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/attach-load-balancer-target-groups.html) 命令将目标组附加到现有的 Auto Scaling 组。

```
aws autoscaling attach-load-balancer-target-groups --auto-scaling-group-name my-asg \
  --target-group-arns "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"
```

**附加您的经典负载均衡器**  
以下[create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)命令创建附带了 Classic Load Balancer 的 Auto Scaling 组。

```
aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \
  --launch-configuration-name my-launch-config \
  --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \
  --load-balancer-names "my-load-balancer" \
  --min-size 1 --max-size 5
```

以下[attach-load-balancers](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/attach-load-balancers.html)命令将指定的 Classic Load Balancer 附加到现有的 Auto Scaling 组。

```
aws autoscaling attach-load-balancers --auto-scaling-group-name my-asg \
  --load-balancer-names my-lb
```

### 描述您的目标组或经典负载均衡器（旧版）
<a name="example-describe-load-balancer-target-groups"></a>

**描述目标组**  
要描述与 Auto Scaling 群组关联的目标群组，请使用 [describe-load-balancer-target-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-load-balancer-target-groups.html) 命令。以下示例列出了的目标群体*my-asg*。

```
aws autoscaling describe-load-balancer-target-groups --auto-scaling-group-name my-asg
```

**描述经典负载均衡器**  
要描述与 Auto Scaling 组关联的传统负载均衡器，请使用[describe-load-balancers](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-load-balancers.html)命令。以下示例列出了适用于的经典负载均衡器。*my-asg*

```
aws autoscaling describe-load-balancers --auto-scaling-group-name my-asg
```

### 分离目标组或经典负载均衡器（旧版）
<a name="example-detach-load-balancer-target-group"></a>

**分离目标组**  
当你不再需要目标[detach-load-balancer-target组时，以下-](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/detach-load-balancer-target-groups.html) groups命令会将目标组从你的 Auto Scaling 组中分离出来。

```
aws autoscaling detach-load-balancer-target-groups --auto-scaling-group-name my-asg \
  --target-group-arns "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-targets/1234567890123456"
```

**分离经典负载均衡器**  
当您不再需要 Classic Load Balancer 时，以下[detach-load-balancers](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/detach-load-balancers.html)命令会将其从您的 Auto Scaling 组中分离。

```
aws autoscaling detach-load-balancers --auto-scaling-group-name my-asg \
  --load-balancer-names my-lb
```