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

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

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

重要

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

使用 Elastic Load Balancing 负载均衡器注册 Auto Scaling 组可帮助您设置具有负载均衡功能的应用程序。Elastic Load Balancing 与 Amazon A EC2 uto Scaling 配合使用,在健康的亚马逊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。

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

  • 虚拟私有云 (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. 对于应用程序和操作系统映像(Amazon 系统映像),请AMI为您的实例选择的 ID。您可以搜索所有可用内容AMIs,也可以AMI从 “最” 或 “快速入门” 列表中选择。如果您没有看到所需的内容AMI,请选择 “浏览更多” AMIs 以浏览完整AMI目录。

  6. 对于实例类型,请为您的实例选择与您指定的兼容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. 安全组 ID 中,为您的实例指定与负载均衡器VPC相同的安全组。

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

  9. (可选)要安全地向您的实例分发证书,请输入您IAM角色的 Amazon 资源名称 (ARN),以了解高级详情IAM实例配置文件

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

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

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

创建或选择启动配置

注意

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

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

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

  3. 选择启动配置。

  4. 选择操作创建 Auto Scaling 组

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

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

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

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

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

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

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

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

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

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

  7. 对于安全组,请从与负载均衡器VPC相同的安全组中选择一个现有安全组。如果您保持选中创建新安全组选项,则会为运行 Linux 的 Amazon EC2 实例配置默认SSH规则。为运行 Windows 的亚马逊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 (下一步)。

    将出现 “选择实例启动选项” 页面,允许您选择希望 Auto Scaling 组使用的VPC网络设置,并为您提供启动按需实例和竞价型实例的选项(如果您选择了启动模板)。

  4. 在 “网络” 部分中 VPC,对于,选择您用于负载均衡器的。VPC如果您选择默认设置VPC,则会自动将其配置为为您的实例提供互联网连接。这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 运行状况检查

  10. (可选)对于运行状况检查宽限期,输入时间长短(以秒为单位)。这段时间是 Amazon A EC2 uto Scaling 在实例进入状态后需要等待多长时间才能检查其运行InService状况。有关更多信息,请参阅 设置自动扩缩组的运行状况检查宽限期

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

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

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

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

验证是否已附加您的负载均衡器
  1. 在亚马逊EC2控制台的 A uto Scaling 群组页面上,选中 Auto Scaling 群组旁边的复选框。

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

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

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

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

步骤 4:后续步骤

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

  • Amazon A EC2 uto Scaling 根据您的 Auto Scaling 组使用的运行状况检查的状态来确定实例是否运行正常。如果您启用了负载均衡器运行状况检查但实例未通过运行状况检查,则您的 Auto Scaling 组会认为该实例运行状况不佳并替换它。有关更多信息,请参阅 运行状况检查

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

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

第 5 步:清理

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

要删除 Auto Scaling 组
  1. 打开亚马逊EC2控制台的 A uto Scaling 群组页面

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

  3. 选择删除

  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 用户指南》中的演练:创建经扩展和负载均衡的应用程序。使用这些演练和示例模板作为起点来创建类似的模板以满足您的需求。