Amazon EC2 Auto Scaling 入门 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon EC2 Auto Scaling 入门

在使用 Amazon EC2 Auto Scaling 时,您必须从特定的构建块入手。本教程将引导您完成设置构建块以创建 Amazon EC2 Auto Scaling 的基本基础设施的过程。

在创建用于应用程序的自动扩缩组之前,请全面检查应用程序在 Amazon Web Services 云 中运行时的情况。请考虑以下事项:

  • Auto Scaling 组应跨多少个可用区。

  • 可以使用哪些现有的资源,如安全组或亚马逊系统映像 (AMI)。

  • 无论您是希望进行扩展以增加或减少容量,还是只希望确保始终运行特定数量的服务器,请记住,Amazon EC2 Auto Scaling 可以同时实现这两个目标。

  • 哪些指标与应用程序的性能关系最密切。

  • 启动和配置服务器需要多长时间。

您越了解您的应用程序,Auto Scaling 架构的效率就越高。

注意

演练摘要

在本演练中,您将:

  • 创建用于定义 EC2 实例的配置模板。您可以选择启动模板或启动配置说明。虽然您可以使用启动配置,但我们建议您使用启动模板以便您可以使用 Amazon EC2 和 Amazon EC2 Auto Scaling 的最新功能。

  • 在其中创建包含单个实例的 Auto Scaling 组。

  • 终止实例并验证实例是否已从服务中删除并被替换。为了保持恒定数量的实例,Amazon EC2 Auto Scaling 会自动检测并响应 Amazon EC2 运行状况和可到达性检查。

如果您的 Amazon Web Services 账户是在过去 12 个月内创建的,并且还没有超出 Amazon EC2 的免费套餐权益范围,则学完本教程不需要任何费用,因为我们会帮助您选择免费套餐权益范围内的实例类型。否则,当您按照此教程操作时,您从启动实例的那一刻开始承担标准的 Amazon EC2 使用费,直至删除 Auto Scaling 组(本教程的最后一个任务),且实例状态变为 terminated

准备演练

本演练假定您熟悉 EC2 实例的启动并已创建密钥对和安全组。有关更多信息,请参见适用于 Linux 实例的 Amazon EC2 用户指南中的设置 Amazon EC2

如果您是初次使用 Amazon EC2 Auto Scaling 并希望开始使用该服务,则可以使用 Amazon Web Services 账户的默认 VPC。默认 VPC 在各个可用区中包含一个默认公有子网,以及连接到您 VPC 的 Internet 网关。您可以在 Amazon Virtual Private Cloud (Amazon VPC) 控制台的您的 VPC 页面查看您的 VPC。

步骤 1:创建启动模板

在此步骤中,使用您的 Amazon Web Services 账户凭证登录到 Amazon EC2 控制台并创建启动模板,该模板指定 Amazon EC2 Auto Scaling 为您创建的 EC2 实例的类型。包含一些信息,例如将使用的 Amazon Machine Image (AMI) 的 ID、实例类型、密钥对和安全组。

注意

要改用启动配置,请参阅 Create a launch configuration

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

  2. 在顶部的导航栏上,选择一个Amazon Web Services 区域。您创建的启动模板和自动扩缩组将会与您所指定的区域绑定。

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

  4. 对于 Launch template name(启动模板名称),输入 my-template-for-auto-scaling

  5. Auto Scaling guidance(Auto Scaling 指导)下,选中复选框。

  6. 对于 Application and OS Images (Amazon Machine Image) [应用程序和操作系统镜像(Amazon Machine Image)],请从 Quick Start(快速启动)列表中选择一个 Amazon Linux 2(HVM)版本。AMI 用作实例的基本配置模板。

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

    注意

    如果您的账户不到 12 个月,您可以在特定使用限制下免费使用 t2.micro 实例。有关更多信息,请参阅 Amazon 免费套餐

  8. (可选)对于 Key pair (login) [密钥对(登录)],选择一个现有的密钥对。您可以使用密钥对连接包含 SSH 的 Amazon EC2 实例。有关连接到实例的内容不包括在本教程中。因此,除非您计划使用 SSH 连接到实例,否则不需要指定密钥对。

  9. 对于 Network settings(网络设置)、Security groups(安全组),请选择您计划用作 Auto Scaling 组的 VPC 的同一 VPC 中的安全组。如果您没有指定安全组,实例会自动与 VPC 的默认安全组关联。

  10. 您可以将 Advanced network configuration(高级网络配置)留空。如果将此设置留空,系统将创建一个主网络接口,其中具有我们为您的实例选择的 IP 地址(基于网络接口为之建立的子网)。如果您改为选择配置网络接口,则安全组必须属于该接口。

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

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

如果您当前未使用启动模板,并且不希望立即创建启动模板,则可以改为创建启动配置。

启动配置类似于启动模板,它指定 Amazon EC2 Auto Scaling 为您创建的 EC2 实例的类型。您可以包含一些信息以创建启动配置,例如,要使用的 Amazon Machine Image (AMI) 的 ID、实例类型、密钥对和安全组。

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

  2. 在顶部的导航栏上,选择一个Amazon Web Services 区域。您创建的启动配置和自动扩缩组将会与您所指定的区域绑定。

  3. 选择 Create launch configuration(创建启动配置),然后在 Name(名称)字段中输入 my-first-launch-configuration

  4. 对于 Amazon Machine Image (AMI),选择 AMI。要查找特定 AMI,您可以查找合适的 AMI,记下其 ID,然后输入 ID 作为搜索条件。

    要获取 Amazon Linux 2 AMI 的 ID,请执行以下操作:

    1. 打开 Amazon EC2 控制台

    2. 在左侧导航窗格的 “实例” 下,选择 “实例”,然后选择 “启动实例”。

    3. Choose an Amazon Machine Image(选择 Amazon Machine Image)页面的 Quick Start 选项卡上,请注意 Amazon Linux 2 AMI (HVM) 旁边的 AMI 的 ID。请注意,此 AMI 标记为"Free tier eligible"(符合条件的免费套餐)。

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

    注意

    如果您的账户不到 12 个月,您可以在特定使用限制下免费使用 t2.micro 实例。有关更多信息,请参阅 Amazon 免费套餐

  6. Additional configuration(其他配置)下,对于 Advanced details(高级详细信息)、IP address type(IP 地址类型),请做出选择。要为 VPC 中的实例提供 Internet 连接,请选择一个指定了公有 IP 地址的选项。如果实例在默认 VPC 中启动,则默认分配公有 IP 地址。如果您要向实例提供 Internet 连接,但是不确定您是否有默认 VPC,请选择 Assign a public IP address to every instance(向每个实例分配公有 IP 地址)。

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

  8. 对于密钥对(登录),请按照指示选择密钥对选项下的选项。有关连接到实例的内容不包括在本教程中。因此,您可以选择 Proceed without a key pair(在没有密钥对的情况下继续),除非您计划使用 SSH 连接到您的实例。

  9. 选择 Create launch configuration(创建启动配置)。

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

步骤 2:创建单个实例 Auto Scaling 组

现在,使用 Amazon EC2 Auto Scaling 创建 Auto Scaling 组并将启动模板或启动配置添加到组。还包括实例的 VPC 子网等信息。

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

创建 自动扩缩组
  1. 选择启动模板或配置页面上,对于 Auto Scaling 组名称,输入 my-first-asg

  2. 选择 Next(下一步)。

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

  3. Network(网络)部分中,VPC 设置可保留您选择的 Amazon Web Services 区域的默认 VPC,也可选择您自己的 VPC。默认 VPC 会自动配置为向您的实例提供 Internet 连接。此 VPC 在区域的每个可用区中均包含一个公有子网。

  4. 对于 Availability Zones and subnets(可用区和子网),请从您希望包含的每个可用区中选择一个子网。可以在多个可用区中使用子网以提供高可用性。有关更多信息,请参阅 选择 VPC 子网时的注意事项

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

  6. 保留本教程的其余默认值,然后选择 Skip to review(跳到审核)。

    注意

    组的初始规模由其所需容量决定。默认值为 1 实例。

  7. Review(审核)页面上,查看组的信息,然后选择 Create Auto Scaling group(创建 Auto Scaling 组)。

步骤 3:验证您的 Auto Scaling 组

现在,您已创建 Auto Scaling 组,可验证该组是否已启动 EC2 实例。

提示

在以下过程中,您需要查看 Auto Scaling 组的 Activity history(活动历史记录)和 Instances(实例)部分。这两个部分都会已经显示已命名的列。要显示隐藏的列或更改显示的行数,请选择每个部分右上角的齿轮图标以打开首选项模式,根据需要更新设置,然后选择 Confirm(确认)。

验证 Auto Scaling 组已启动 EC2 实例
  1. 打开 Amazon EC2 控制台台台台台台台台台台台台台台台的

  2. 选中刚创建的 Auto Scaling 组旁边的复选框。

    这时将在 Auto Scaling groups(Auto Scaling 组)页面底部打开一个拆分窗格。可用的第一个选项卡是 Details(详细信息)选项卡,显示有关 Auto Scaling 组的信息。

  3. 选择第二个选项卡,即 Activity(活动)。在 Activity history(活动历史记录)下,您可以查看与 Auto Scaling 组关联的活动的进度。Status(状态)列显示您实例的当前状态。当您的实例启动时,状态列将显示 PreInService。该实例启动后,状态会变为 Successful。您还可以使用刷新按钮来查看您的实例的当前状态。

  4. Instance management(实例管理)选项卡上的 Instances(实例)下,您可以查看实例的状态。

  5. 验证您的实例已成功启动。启动实例只需很短的时间。

    • Lifecycle(生命周期)列显示您的实例的状态。最初,您的实例处于 Pending 状态。在实例准备好接收流量时,其状态为 InService

    • Health status(运行状态)列显示对您的实例进行 EC2 实例运行状况检查的结果。

步骤 4:终止 Auto Scaling 组中的实例

使用这些步骤了解有关 Amazon EC2 Auto Scaling 工作原理的更多信息,特别是如何在必要时启动新实例。您在本教程中创建的 Auto Scaling 组的最小大小为一个实例。因此,如果您终止正在运行的实例,Amazon EC2 Auto Scaling 必须启动一个新实例以替换该实例。

  1. 打开 Amazon EC2 控制台台台台台台台台台台台台台台台的

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

  3. Instance management(实例管理)选项卡上的 Instances(实例)下,选择实例的 ID。

    这时您将会跳转到 Amazon EC2 控制台中的 Instances(实例)页面,您可在其中终止实例。

  4. 依次选择 Actions(操作)、Instance State(实例状态)和 Terminate(终止)。当系统提示您确认时,选择 Yes, Terminate(是,终止)。

  5. 在导航窗格的 Auto Scaling 下,选择 自动扩缩组。选择您的 Auto Scaling 组,然后选择 Activity(活动)选项卡。

    Auto Scaling 组的默认冷却时间是 300 秒(5 分钟),因此您大约需要等 5 分钟才能看到扩展活动。在活动历史记录中,当扩展活动启动时,将会看到有关终止第一个实例的条目以及有关启动新实例的条目。

  6. Instance management(实例管理)选项卡上,Instances(实例)部分仅显示新实例。

  7. 在导航窗格上的 Instances(实例)下,选择 Instances(实例)。此页面同时显示已终止的实例和新的正在运行的实例。

步骤 5:后续步骤

如果您想删除刚创建的用于自动扩展的基本基础设施,请转到下一步。否则,您可以将该基础设施作为基础,然后尝试以下一个或多个操作:

您也可以通过阅读关于 目标跟踪扩展策略 的内容开始熟悉自动扩缩概念。如果应用程序的负载发生变化,自动扩缩组可以通过在最小和最大容量限制之间调整组的所需容量来自动横向扩展(添加实例)和横向缩减(运行更少的实例)。有关这些限制的更多信息,请参阅 为 Auto Scaling 组设置容量限制

如果您计划将负载均衡器附加到自动扩缩组,您可以学习如何使用 Amazon EC2 Auto Scaling 控制台快速创建负载均衡器。有关更多信息,请参阅从 Amazon EC2 Auto Scaling 控制台配置 Application Load Balancer 或 Network Load Balancer。

步骤 6:清除

您可以删除扩展基础设施,或者仅删除 Auto Scaling 组而保留启动模板或启动配置以供将来使用。

如果您启动的实例不在 Amazon 免费套餐范围内,则应终止实例以避免产生额外费用。当您终止实例时,与其关联的数据也将被删除。

删除 Auto Scaling 组
  1. 打开 Amazon EC2 控制台台台台台台台台台台台台台台台的

  2. 选中您的自动扩缩组 (my-first-asg) 旁边的复选框。

  3. 选择删除

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

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

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

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

  2. 选择您的启动模板 (my-template-for-auto-scaling)。

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

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

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

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

  2. 选择您的启动配置 (my-first-launch-configuration)。

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

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