

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

# 教程：设置具有扩展和负载均衡功能的应用程序
<a name="tutorial-ec2-auto-scaling-load-balancer"></a>

**重要**  
在开始学习本教程之前，建议您首先阅读以下介绍性教程：[创建您的第一个自动扩缩组](create-your-first-auto-scaling-group.md)。

使用 Elastic Load Balancing 负载均衡器注册 Auto Scaling 组可帮助您设置具有负载均衡功能的应用程序。Elastic Load Balancing 与 Amazon EC2 Auto Scaling 配合使用，在运行状况良好的 Amazon EC2 实例之间分配传入流量。这将提高应用程序的可扩展性和可用性。您可以在多个可用区内启用 Elastic Load Balancing 来提高应用程序的容错能力。

在本教程中，我们介绍了在创建 Auto Scaling 组时设置负载均衡的应用程序的基本步骤。完成后，您的架构看起来应当如下图所示：

![\[具有 Application Load Balancer 的 Auto Scaling 组。\]](http://docs.amazonaws.cn/autoscaling/ec2/userguide/images/elb-tutorial-architecture-diagram.png)


Elastic Load Balancing 支持三类负载均衡器。我们建议您在本教程中使用 Application Load Balancer。

有关在架构中引入负载均衡器的详细信息，请参阅 [使用 Elastic Load Balancing，在自动扩缩组中分配传入的应用程序流量](autoscaling-load-balancer.md)。

**Topics**
+ [

## 先决条件
](#as-register-lbs-prerequisites)
+ [

## 步骤 1：设置启动模板或启动配置
](#as-register-lbs-create-lt-console)
+ [

## 步骤 2：创建 Auto Scaling 组。
](#as-register-lbs-create-asg-console)
+ [

## 步骤 3：验证是否已附加您的负载均衡器
](#as-register-lbs-verify-console)
+ [

## 步骤 4：后续步骤
](#as-lbs-app-next-steps)
+ [

## 第 5 步：清理
](#as-lbs-app-clean-up)
+ [

## 相关资源
](#tutorial-ec2-auto-scaling-load-balancer-related-resources)

## 先决条件
<a name="as-register-lbs-prerequisites"></a>
+ 负载均衡器和目标组。确保针对计划为 Auto Scaling 组使用的负载均衡器选择了相同的可用区。有关更多信息，请参阅 *Elastic Load Balancing 用户指南*中的 [Elastic Load Balancing 入门](https://docs.amazonaws.cn/elasticloadbalancing/latest/userguide/load-balancer-getting-started.html)。
+ 启动模板或启动配置的安全组。安全组必须允许从侦听器端口（通常为 HTTP 流量的端口 80）和您希望 Elastic Load Balancing 用于运行状况检查的端口上的负载均衡器进行访问。有关更多信息，请参阅相应文档：
  + *Application Load Balancer 用户指南*中的[目标安全组](https://docs.amazonaws.cn/elasticloadbalancing/latest/application/target-group-register-targets.html#target-security-groups)
  + 《Network Load Balancer 用户指南》**中的[目标安全组](https://docs.amazonaws.cn/elasticloadbalancing/latest/network/target-group-register-targets.html#target-security-groups)

  如果您的实例将拥有公有 IP 地址，您可以选择允许 SSH 流量连接到这些实例。
+ （可选）一个 IAM 角色，用于向您的应用程序授予访问权限 Amazon。
+ （可选）Amazon Machine Image (AMI)，已定义为 Amazon EC2 实例的源模板。要立即创建一个上述项，请启动一个实例。将 IAM 角色（如果已创建）和所需的任何配置脚本指定为用户数据。连接到实例并对其进行自定义。例如，您可以安装软件和应用程序、复制数据和连接更多的 EBS 卷。测试您的实例上的应用程序以确保实例配置正确。将此更新的配置另存为自定义 AMI。如果您以后不需要该实例，您可以终止它。从该新自定义 AMI 启动的实例包括您在创建 AMI 时设置的自定义项。
+ 虚拟私有云 (VPC)。本教程引用默认 VPC，但您可以使用自己的 VPC。如果使用您自己的 VPC，请确保它拥有映射到您工作时所在区域的每个可用区的子网。您至少必须具有两个公有子网，且这些子网可用于创建负载均衡器。您还必须具有两个私有子网或两个公有子网，以创建 Auto Scaling 组并使用负载均衡器注册。

## 步骤 1：设置启动模板或启动配置
<a name="as-register-lbs-create-lt-console"></a>

对本教程使用启动模板或启动配置。

**Topics**
+ [

### 选择或创建启动模板
](#as-register-lbs-create-lt-console)
+ [

### 创建或选择启动配置
](#as-register-lbs-create-lc-console)

### 选择或创建启动模板
<a name="as-register-lbs-create-lt-console"></a>

如果您已拥有要使用的启动模板，请使用以下过程选择该启动模板。

**选择现有启动模板**

1. 打开 Amazon EC2 控制台的[启动模板页面](https://console.amazonaws.cn/ec2/v2/#LaunchTemplates)。

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

1. 选择启动模板。

1. 选择 **Actions** (操作)、**Create Auto Scaling group** (创建 Auto Scaling 组)。

或者，使用下列过程创建新的启动模板。

**创建启动模板**

1. 打开 Amazon EC2 控制台的[启动模板页面](https://console.amazonaws.cn/ec2/v2/#LaunchTemplates)。

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

1. 选择 **Create launch template** (创建启动模板)。

1. 为启动模板的初始版本输入名称并提供描述。

1. 对于 **Application and OS Images (Amazon Machine Image)** [应用程序和操作系统镜像（Amazon Machine Image）]，选择实例 AMI 的 ID。您可以搜索所有可用的 AMI AMIs，也可以从 “最**近**” 或 “**快速入门**” 列表中选择 AMI。如果您没有看到所需的 AMI，请选择 “**浏览更多**” AMIs 以浏览完整的 AMI 目录。

1. 对于 **Instance type** (实例类型)，选择与您指定的 AMI 兼容的实例硬件配置。

1. （可选）对于 **Key pair (login)** (密钥对（登录）)，请输入在连接到您的实例时使用的密钥对。

1. 对于 **Network settings**（网络设置），展开 **Advanced network configuration**（高级网络配置），然后执行以下操作：

   1. 选择 **Add network interface**（添加网络接口）以配置主网络接口。

   1. 对于**自动分配公有 IP**，指定您的实例是否接收公有 IPv4 地址。默认情况下，如果 EC2 实例在默认子网中启动，或者实例启动到配置为自动分配公有地址的子网，则 Amazon EC2 会分配公 IPv4 有 IPv4 地址。如果不需要连接到您的实例，可以选择**禁用**以防止组中的实例直接从互联网接收流量。在这种情况下，它们将仅从负载均衡器接收流量。

   1. 对于 **Security group ID** (安全组 ID)，从与负载均衡器相同的 VPC 中为您的实例指定一个安全组。

   1. 对于 **Delete on termination** (终止时删除)，请选择 **Yes** (是)。这将在 Auto Scaling 组缩减并终止网络接口附加到的实例时删除网络接口。

1. （可选）要将凭证安全地分配到实例，对于 **Advanced details** (高级详细信息) 和 **IAM instance profile** (IAM 实例配置文件)，输入 IAM 角色的 Amazon Resource Name (ARN)。

1. (可选) 要为实例指定用户数据或配置脚本，请将其粘贴到**高级详细信息**和**用户数据**。

1. 选择**Create launch template**（创建启动模板）。

1. 在确认页面上，选择 **Create Auto Scaling group（创建 Auto Scaling 组）**。

### 创建或选择启动配置
<a name="as-register-lbs-create-lc-console"></a>

**注意**  
强烈建议不要在新应用程序中使用启动配置，因为这是一项没有计划投资的旧版功能。此外，2023 年 6 月 1 日及之后创建的新账户都无法选择通过控制台创建新的启动配置。有关更多信息，请参阅 [自动扩缩启动配置](launch-configurations.md)。

**选择现有的启动配置**

1. 打开 Amazon EC2 控制台的[启动配置页面](https://console.amazonaws.cn/ec2/v2/home?#LaunchConfigurations)。

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

1. 选择启动配置。

1. 选择**操作**、**创建 Auto Scaling 组**。

或者，要创建新的启动配置，请使用以下过程：

**创建启动配置**

1. 打开 Amazon EC2 控制台的[启动配置页面](https://console.amazonaws.cn/ec2/v2/home?#LaunchConfigurations)。当提示您确认时，选择**查看启动配置**以确认您要查看**启动配置**页面。

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

1. 选择**创建启动配置**，然后为您的启动配置输入名称。

1. 对于 **Amazon Machine Image (AMI)**，请输入您的实例的 AMI 的 ID 作为搜索条件。

1. 对于**实例类型**，为您的实例选择硬件配置。

1. 在**其他配置**下，请注意以下字段：

   1. （可选）为将凭证安全分配到您的 EC2 实例，请为 **IAM 实例配置文件**选择您的 IAM 角色。有关更多信息，请参阅 [在 Amazon EC2 实例上运行的应用程序的 IAM 角色](us-iam-role.md)。

   1. （可选）要为实例指定用户数据或配置脚本，请将其粘贴到**高级详细信息**和**用户数据**。

   1. （可选）对于**高级详细信息**、**IP 地址类型**，保留默认值。创建 Auto Scaling 组时，您可以使用已启用公有 IP 寻址属性的子网（如默认 VPC 中的默认子网）为 Auto Scaling 组中的实例分配公有 IP 地址。或者，如果不需要连接到您的实例，可以选择 **Do not assign a public IP address to any instances (不为任何实例分配公有 IP 地址）**以防止组中的实例直接从互联网接收流量。在这种情况下，它们将仅从负载均衡器接收流量。

1. 对于**安全组**，从与负载均衡器相同的 VPC 中选择现有安全组。如果您保留选中**创建新安全组**选项，将为运行 Linux 的 Amazon EC2 实例配置默认 SSH 规则。将为运行 Windows 的 Amazon EC2 实例配置默认 RDP 角色。

1. 对于**密钥对（登录）**，请选择**密钥对选项**下的选项。

   如果您已配置 Amazon EC2 实例密钥对，则可在此处选择它。

   如果您尚未拥有 Amazon EC2 实例密钥对，请选择**创建新密钥对**并为密钥对指定一个可识别的名称。选择**下载密钥对**以将密钥对下载到您的计算机。
**重要**  
如果需要连接到您的实例，不要选择**在没有密钥对的情况下继续**。

1. 选中确认复选框，然后选择 **Create launch configuration**（创建启动配置）。

1. 选中新启动配置名称旁边的复选框，然后选择**操作**、**创建 Auto Scaling 组**。

## 步骤 2：创建 Auto Scaling 组。
<a name="as-register-lbs-create-asg-console"></a>

创建或选择启动模板或启动配置后，使用以下过程从中断的地方继续操作。

**创建 Auto Scaling 组**

1. 在 **Choose launch template or configuration**（选择启动模板或配置）页面上，对于 **Auto Scaling group name**（Auto Scaling 组名称），输入 Auto Scaling 组的名称。

1. [仅启动模板] 对于 **Launch template**（启动模板），选择 Auto Scaling 组在扩展时使用启动模板的默认版本、最新版本还是特定版本。

1. 选择 **Next**（下一步）。

   此时将显示页面 **Choose instance launch options**（选择实例启动选项），以便选择您希望 Auto Scaling 组使用的 VPC 网络设置，并提供启动按需型实例和竞价型实例的选项（如果您选择了启动模板）。

1. 在 **Network**（网络）部分中，对于 **VPC**，选择您用于负载均衡器的 VPC。如果您选择了默认 VPC，则它会自动配置为向您的实例提供 Internet 连接。此 VPC 在区域的每个可用区中均包含一个公有子网。

1. 对于 **Availability Zones and subnets**（可用区和子网），根据负载均衡器所在的可用区从要包含的每个可用区中选择一个或多个子网。有关更多信息，请参阅 [选择 VPC 子网时的注意事项](asg-in-vpc.md#as-vpc-considerations)。

1. [仅限启动模板] 在 **Instance type requirements**（实例类型要求）部分中，使用默认设置简化此步骤。（请勿覆盖启动模板。） 在本教程中，您将仅使用启动模板中指定的实例类型启动按需实例。

1. 选择 **Next**（下一步）转至 **Configure advanced options**（配置高级选项）页面。

1. 要将组连接到现有的负载均衡器，请在 **Load balancing (负载均衡)** 部分中选择 **Attach to an existing load balancer (连接到现有负载均衡器)**。您可以选择 **Choose from your load balancer target groups** (从负载均衡器目标组中进行选择) 或 **Choose from Classic Load Balancers** (从经典负载均衡器中选择)。然后，您可以为创建的 Application Load Balancer 或 Network Load Balancer 选择目标组的名称，或者选择经典负载均衡器的名称。

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

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

1. 完成 Auto Scaling 组的配置后，选择 **Skip to review**（跳过以审核）。

1. 在 **Review**（审核）页面上，审核 Auto Scaling 组的详细信息。您可以选择 **Edit**（编辑）进行更改。在完成后，选择 **Create Auto Scaling group**（创建 Auto Scaling 组）。

在创建附加了负载均衡器的 Auto Scaling 组后，负载均衡器会在新实例联机时自动注册这些实例。此时，您只有一个实例，因此要注册的内容并不多。不过，您可以通过更新组的所需容量来添加其他实例。有关 step-by-step说明，请参阅[更改您自动扩缩组的所需容量](ec2-auto-scaling-scaling-manually.md#change-desired-capacity)。

## 步骤 3：验证是否已附加您的负载均衡器
<a name="as-register-lbs-verify-console"></a>

**验证是否已附加您的负载均衡器**

1. 从 Amazon EC2 控制台的 [Auto Scaling groups page](https://console.amazonaws.cn/ec2/v2/home?#AutoScalingGroups)（Auto Scaling 组页面）中，选择 Auto Scaling 组旁边的复选框。

1. 在**详细信息**选项卡上，**负载均衡**将显示任何附加的负载均衡器目标组或经典负载均衡器。

1. 在 **Activity**（活动）选项卡上，在**Activity history**（活动历史记录）中，您可以验证您的实例是否已成功启动。**Status**（状态）列显示 Auto Scaling 组是否具有已成功启动的实例。如果您的实例无法启动，您可以在 [排查 Amazon EC2 Auto Scaling 中的问题](CHAP_Troubleshooting.md) 中找到常见实例启动问题的故障排除思路。

1. 在 **Instance management**（实例管理）选项卡上的 **Instances**（实例）下，可以验证您的实例是否准备好接收流量。最初，您的实例处于 `Pending` 状态。在实例准备好接收流量时，其状态为 `InService`。**Health status**（运行状况）列显示对您的实例执行 Amazon EC2 Auto Scaling 运行状况检查的结果。尽管实例可能标记为运行状况良好，但负载均衡器只会向通过负载均衡器运行状况检查的实例发送流量。

1. 验证您已向负载均衡器注册您的实例。打开 Amazon EC2 控制台的[目标组页面](https://console.amazonaws.cn/ec2/v2/#TargetGroups)。选择您的目标组，然后选择 **Targets**（目标）选项卡。如果实例的状态为 `initial`，这可能是因为它们仍在注册过程中，或者它们仍在进行运行状况检查。当实例状态为 `healthy` 时，即可供使用。

## 步骤 4：后续步骤
<a name="as-lbs-app-next-steps"></a>

现在您已完成本教程，您可以了解更多信息：
+ Amazon EC2 Auto Scaling 会根据您的自动扩缩组所使用的运行状况检查的状态来确定实例是否运行正常。如果您启用负载均衡器运行状况检查，并且实例未通过运行状况检查，自动扩缩组即认为该实例运行状况不正常并进行替换。有关更多信息，请参阅 [运行状况检查](ec2-auto-scaling-health-checks.md)。
+ 可以将应用程序扩展到同一区域中的其他可用区，来提高服务中断时的容错能力。有关更多信息，请参阅 [添加可用区删除可用区](as-add-az-console.md)。
+ 您可以将 Auto Scaling 组配置为使用目标跟踪扩展策略。这会在实例需求变化时自动增加或减少实例数量。这将允许该组处理应用程序接收的流量的变化。有关更多信息，请参阅 [目标跟踪扩展策略](as-scaling-target-tracking.md)。

## 第 5 步：清理
<a name="as-lbs-app-clean-up"></a>

完成为本教程创建的资源后，应考虑清除这些资源，以免产生不必要的费用。

**要删除 Auto Scaling 组**

1. 打开 Amazon EC2 控制台中的 [自动扩缩组页面](https://console.amazonaws.cn/ec2/v2/home?#AutoScalingGroups)。

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

1. 选择**删除**。

1. 当系统提示进行确认时，键入 **delete** 以确认删除指定自动扩缩组，然后选择 **Delete**（删除）。

   **名称**列中的加载图标指示 Auto Scaling 组正在被删除。发生删除时，**所需**、**最小**和**最大**列显示自动扩缩组具有 `0` 个实例。终止实例并删除组需要几分钟时间。刷新列表以查看当前状态。

如果要保留启动模板，请跳过以下过程。

**删除启动模板**

1. 打开 Amazon EC2 控制台的[启动模板页面](https://console.amazonaws.cn/ec2/v2/#LaunchTemplates)。

1. 选择启动模板。

1. 选择 **Actions**（操作），然后选择 **Delete template**（删除模板）。

1. 当系统提示进行确认时，键入 **Delete** 以确认删除指定启动模板，然后选择 **Delete**（删除）。

如果您要保留启动配置，请跳过以下过程。

**删除启动配置**

1. 打开 Amazon EC2 控制台的[启动配置页面](https://console.amazonaws.cn/ec2/v2/home?#LaunchConfigurations)。

1. 选择启动配置。

1. 依次选择 **Actions**（删除）和 **Delete launch configuration**（删除启动配置）。

1. 当系统提示进行确认时，选择 **Delete（删除）**。

如果您要保留负载均衡器供将来使用，请跳过以下步骤。

**删除您的负载均衡器**

1. 打开 Amazon EC2 控制台的[负载均衡器页面](https://console.amazonaws.cn/ec2/v2/#LoadBalancers)。

1. 选择负载均衡器，然后依次选择 **Actions**（操作）和 **Delete**（删除）。

1. 当系统提示进行确认时，选择 **Yes, Delete**（是，删除）。

**要删除目标组**

1. 打开 Amazon EC2 控制台的[目标组页面](https://console.amazonaws.cn/ec2/v2/#TargetGroups)。

1. 选择目标组，然后依次选择 **Actions**（操作）和 **Delete**（删除）。

1. 当系统提示进行确认时，选择 **Yes, Delete**（是，删除）。

## 相关资源
<a name="tutorial-ec2-auto-scaling-load-balancer-related-resources"></a>

借 Amazon CloudFormation助，您可以使用模板文件将资源集合作为一个单元（*堆栈*）一起创建和删除，从而可预测且重复地创建和配置 Amazon 基础架构部署。有关更多信息，请参阅 [Amazon CloudFormation 《用户指南》](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/Welcome.html)。

有关使用堆栈模板预配自动扩缩组和应用程序负载均衡器的演练，请参阅《Amazon CloudFormation 用户指南》**中的[演练：创建经扩展和负载均衡的应用程序](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/walkthrough-autoscaling.html)。使用这些演练和示例模板作为起点来创建类似的模板以满足您的需求。