教程:设置具有扩展和负载均衡功能的应用程序 - Amazon EC2 Auto Scaling

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

教程:设置具有扩展和负载均衡功能的应用程序

重要

在探索本教程之前,我们建议您先阅读以下入门教程:创建您的第一个 Auto Scaling 群组

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

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


      具有 Application Load Balancer 的 Auto Scaling 组。

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

有关在架构中引入负载均衡器的详细信息,请参阅 使用 Elastic Load Balancing 跨 Auto Scaling 组中的实例分配流量。

先决条件

  • 负载均衡器和目标组。确保针对计划为 Auto Scaling 组使用的负载均衡器选择了相同的可用区。有关更多信息,请参阅 Elastic Load Balancing 用户指南中的 Elastic Load Balancing 入门

  • 启动模板或启动配置的安全组。安全组必须允许从侦听器端口(通常为 HTTP 流量的端口 80)和您希望 Elastic Load Balancing 用于运行状况检查的端口上的负载均衡器进行访问。有关更多信息,请参阅相应文档:

    如果您的实例将拥有公有 IP 地址,您可以选择允许 SSH 流量连接到这些实例。

  • (可选)向您的应用程序授予访问权限的 IAM 角色 AWS。

  • (可选)Amazon Machine Image (AMI),已定义为 Amazon EC2 实例的源模板。要立即创建一个上述项,请启动一个实例。将 IAM 角色(如果已创建)和所需的任何配置脚本指定为用户数据。连接到实例并对其进行自定义。例如,您可以安装软件和应用程序、复制数据和连接更多的 EBS 卷。测试您的实例上的应用程序以确保实例配置正确。将此更新的配置另存为自定义 AMI。如果您以后不需要该实例,您可以终止它。从该新自定义 AMI 启动的实例包括您在创建 AMI 时设置的自定义项。

  • 虚拟私有云 (VPC)。本教程引用默认 VPC,但您可以使用自己的 VPC。如果使用您自己的 VPC,请确保它拥有映射到您工作时所在区域的每个可用区的子网。您至少必须具有两个公有子网,且这些子网可用于创建负载均衡器。您还必须具有两个私有子网或两个公有子网,以创建 Auto Scaling 组并使用负载均衡器注册。

步骤 1:设置启动模板或启动配置

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

选择或创建启动模板

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

选择现有启动模板
  1. 打开 Amazon EC2 控制台的启动模板页面

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

  3. 选择启动模板。

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

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

创建启动模板
  1. 打开 Amazon EC2 控制台的启动模板页面

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

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

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

  5. 对于 Application and OS Images (Amazon Machine Image) [应用程序和操作系统镜像(Amazon Machine Image)],选择实例 AMI 的 ID。您可以搜索所有可用的 AMI,也可以从 Recents(最近)或 Quick Start(快速启动)列表中选择一个 AMI。如果您没有看到所需的 AMI,请选择 Browser more AMIs(浏览更多 AMI)以浏览完整的 AMI 目录。

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

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

  8. 对于 Network settings(网络设置),展开 Advanced network configuration(高级网络配置),然后执行以下操作:

    1. 选择 Add network interface(添加网络接口)以配置主网络接口。

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

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

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

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

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

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

  12. 在确认页面上,选择 Create Auto Scaling group(创建 Auto Scaling 组)

创建或选择启动配置

注意

我们强烈不鼓励在新应用程序中使用启动配置,因为这是一项没有计划投资的传统功能。此外,在 2023 年 6 月 1 日当天或之后创建的新账户将无法选择通过控制台创建新的启动配置。有关更多信息,请参阅启动配置

选择现有的启动配置
  1. 打开 Amazon EC2 控制台的启动配置页面

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

  3. 选择启动配置。

  4. 选择操作创建 Auto Scaling 组

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

创建启动配置
  1. 打开 Amazon EC2 控制台的启动配置页面。当提示您确认时,选择查看启动配置以确认您要查看启动配置页面。

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

  3. 选择创建启动配置,然后为您的启动配置输入名称。

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

  5. 对于实例类型,为您的实例选择硬件配置。

  6. 其他配置下,请注意以下字段:

    1. (可选)为将凭证安全分配到您的 EC2 实例,请为 IAM 实例配置文件选择您的 IAM 角色。有关更多信息,请参阅在 Amazon EC2 实例上运行的应用程序的 IAM 角色

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

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

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

  8. 对于密钥对(登录),请选择密钥对选项下的选项。

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

    如果您尚未拥有 Amazon EC2 实例密钥对,请选择创建新密钥对并为密钥对指定一个可识别的名称。选择下载密钥对以将密钥对下载到您的计算机。

    重要

    如果需要连接到您的实例,不要选择在没有密钥对的情况下继续

  9. 选中确认复选框,然后选择 Create launch configuration(创建启动配置)。

  10. 选中新启动配置名称旁边的复选框,然后选择操作创建 Auto Scaling 组

步骤 2:创建 Auto Scaling 组。

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

创建 Auto Scaling 组
  1. Choose launch template or configuration(选择启动模板或配置)页面上,对于 Auto Scaling group name(Auto Scaling 组名称),输入 Auto Scaling 组的名称。

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

  3. 选择 Next(下一步)。

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

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

  5. 对于 Availability Zones and subnets(可用区和子网),根据负载均衡器所在的可用区从要包含的每个可用区中选择一个或多个子网。有关更多信息,请参阅 选择 VPC 子网时的注意事项

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

  7. 选择 Next(下一步)转至 Configure advanced options(配置高级选项)页面。

  8. 要将组连接到现有的负载均衡器,请在 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 选择目标组的名称,或者选择经典负载均衡器的名称。

  9. (可选)要使用 Elastic Load Balancing 运行状况检查,对于 Health checks(运行状况检查),请选择 Health check type(运行状况检查类型)下的 ELB

  10. 完成 Auto Scaling 组的配置后,选择 Skip to review(跳过以审核)。

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

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

步骤 3:验证是否已附加您的负载均衡器

验证是否已附加您的负载均衡器
  1. 从 Amazon EC2 控制台的 Auto Scaling groups page(Auto Scaling 组页面)中,选择 Auto Scaling 组旁边的复选框。

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

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

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

  5. 验证您已向负载均衡器注册您的实例。打开 Amazon EC2 控制台的目标组页面。选择您的目标组,然后选择 Targets(目标)选项卡。如果实例的状态为 initial,这可能是因为它们仍在注册过程中,或者它们仍在进行运行状况检查。当实例状态为 healthy 时,即可供使用。

步骤 4:后续步骤

现在您已完成本教程,您可以了解更多信息:

  • 您可以将 Auto Scaling 组配置为使用 Elastic Load Balancing 运行状况检查。如果您启用负载均衡器运行状况检查,并且一个实例未通过运行状况检查,Auto Scaling 组即认为该实例运行状况不正常并进行替换。有关更多信息,请参阅添加 Elastic Load Balancing 运行状况检查

  • 可以将应用程序扩展到同一区域中的其他可用区,来提高服务中断时的容错能力。有关更多信息,请参阅添加可用区

  • 您可以将 Auto Scaling 组配置为使用目标跟踪扩展策略。这会在实例需求变化时自动增加或减少实例数量。这将允许该组处理应用程序接收的流量的变化。有关更多信息,请参阅目标跟踪扩展策略

第 5 步:清理

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

要删除 Auto Scaling 组
  1. 打开 Amazon EC2 控制台中的 自动扩缩组页面

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

  3. 选择 Delete (删除)

  4. 当系统提示进行确认时,键入 delete 以确认删除指定自动扩缩组,然后选择 Delete(删除)。

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

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

删除启动模板
  1. 打开 Amazon EC2 控制台的启动模板页面

  2. 选择启动模板。

  3. 选择 Actions(操作),然后选择 Delete template(删除模板)。

  4. 当系统提示进行确认时,键入 Delete 以确认删除指定启动模板,然后选择 Delete(删除)。

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

删除启动配置
  1. 打开 Amazon EC2 控制台的启动配置页面

  2. 选择启动配置。

  3. 依次选择 Actions(删除)和 Delete launch configuration(删除启动配置)。

  4. 当系统提示进行确认时,选择 Delete(删除)

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

删除您的负载均衡器
  1. 打开 Amazon EC2 控制台的负载均衡器页面

  2. 选择负载均衡器,然后依次选择 Actions(操作)和 Delete(删除)。

  3. 当系统提示进行确认时,选择 Yes, Delete(是,删除)。

要删除目标组
  1. 打开 Amazon EC2 控制台的目标组页面

  2. 选择目标组,然后依次选择 Actions(操作)和 Delete(删除)。

  3. 当系统提示进行确认时,选择 Yes, Delete(是,删除)。

借 AWS CloudFormation助,您可以使用模板文件将资源集合作为一个单元(堆栈)一起创建和删除,从而可预测且重复地创建和配置 AWS 基础架构部署。有关更多信息,请参阅 AWS CloudFormation 用户指南

有关使用堆栈模板预配自动扩缩组和应用程序负载均衡器的演练,请参阅《AWS CloudFormation 用户指南》中的演练:创建经扩展和负载均衡的应用程序。使用这些演练和示例模板作为起点来创建类似的模板以满足您的需求。