使用 AWS EC2 自动缩放入门

在运行网站或应用程序时,并不一定需要花费很多钱。事实上,有方法可以在提供用户出色体验的同时节省资源成本。其中一个例子是通过AWS EC2自动缩放。

EC2自动缩放是一项服务,可以根据您定义的条件自动调整亚马逊EC2容量的大小。在本教程中,您将学习如何在AWS上为您的应用程序设置和应用基本的EC2自动缩放配置。

继续阅读,确保您的应用程序始终具有所需的资源,而不会支付超过所需的费用!

先决条件

本教程包含实际演示。要跟随操作,您需要一个AWS账户,而且免费套餐账户就足够了。

创建启动模板

在进入AWS EC2自动缩放之前,您首先需要一种启动EC2实例的方式,即启动模板(类似于启动配置)。启动模板包含启动EC2实例所需的所有信息,例如实例类型、子网和安全组。

AWS建议使用启动模板,它提供比启动配置更灵活和高级的功能。EC2自动缩放使用启动模板在扩展时启动新实例。

创建启动模板的步骤如下:

1. 打开您喜欢的网络浏览器,并登录到AWS管理控制台

2. 在搜索栏中搜索EC2启动模板,并从结果中选择“启动模板”以打开EC2启动模板页面。

Opening the launch templates page

3. 接下来,从下拉列表(右上角)中选择一个区域,然后单击“创建启动模板”以初始化创建启动模板。

您可以在支持EC2自动扩展的任何区域中使用自动扩展,但本教程使用美国东部(弗吉尼亚北部)区域。

Initiating creating a launch template

4. 现在,使用以下内容配置新的启动模板名称和描述:

  • 启动模板名称 – 必填项 – 为您的启动模板提供一个名称(ec2-autoscaling-template-demo)。名称必须在区域内唯一,不超过128个字符,并且不包含除连字符(-)、下划线(_)和句点(.)之外的特殊字符。
  • 模板版本描述 – 输入您的启动模板描述(ec2自动缩放模板演示),不超过255个字符。
  • 自动扩展指南 – 选中“提供指南以帮助我设置可与 EC2 自动扩展一起使用的模板”选项以启用自动扩展指南。此选项使得创建与 EC2 自动扩展兼容的启动模板更加容易。
Configuring a launch template

5. 滚动到启动模板内容部分,并按以下方式为您的启动模板选择应用程序和操作系统镜像:

  • 应用程序和操作系统镜像(Amazon Machine Image) – 为您的模板选择引导镜像,但本教程使用的是Amazon Linux 2 AMI。您的 EC2 实例将根据所选的引导镜像启动。

您可以选择任何您喜欢的引导镜像,但建议使用Amazon Linux 2 AMI,因为它符合免费套餐资格。

  • 架构 – 为您的模板选择架构,但本教程使用的是 x86-64(64 位)。
Providing launch template contents

6. 接下来,按以下方式设置启动模板的实例类型和密钥对(登录):

  • 实例类型 – 为您的模板选择实例类型。但本教程选择的是t2.micro,因为它符合免费套餐资格。

在选择实例类型时,请考虑其他因素,例如 CPU 和内存需求,因为某些实例类型的成本比其他类型更高。

  • 密钥对登录) – 选择不包含在启动模板中,因为这对于自动扩展是不需要的。

当指定密钥对时,EC2 自动扩展将使用该密钥对启动您的实例。

Selecting an Instance type, and Key par (login)

7. 在网络设置下,选择选择现有安全组选项,并为您的EC2实例指定安全组设置。这样做将使EC2自动缩放使用此安全组启动您的实例。

请注意,如果您希望为您的EC2实例创建新的安全组,则可以选择创建安全组选项。

Selecting an existing security groups

8. 保留其他默认设置,然后单击摘要切换列表下方的创建启动模板(右下角)以创建您的启动模板。

Creating the new launch template

9. 最后,在“从您的模板创建自动缩放组”部分下,单击创建自动缩放组,以继续。

不要关闭启动模板页面,因为您将在接下来的部分逐个创建您的自动缩放组。

Initiating creating an Auto Scaling group

创建AWS EC2自动缩放组

现在您有了一个EC2启动模板,您需要创建一个AWS EC2自动缩放组来包含您的EC2实例。AWS EC2自动缩放具有使用健康检查替代和缩放策略的功能。

如果您愿意,可以创建一个具有多个实例的自动缩放组。但在本教程中,您将创建一个单实例自动缩放组,以演示自动缩放的工作原理。

1. 在仍处于创建启动模板页面时,使用以下配置自动缩放组:

  • **自动缩放组名称** – 输入您的自动缩放组名称(ec2-autoscaling-group-demo)。名称必须在您的AWS区域内唯一,长度不超过255个字符。
  • **启动模板** – 从下拉列表中选择您的EC2启动模板(ec2-autoscaling-template-demo)。
  • 点击下一步继续。
Naming the AWS EC2 Auto Scaling group

2. 接下来,保留所有默认设置不变,但为您的自动缩放组选择现有的VPC和子网,然后点击下一步继续。

指定这些设置可以使您的自动缩放组知道在哪里启动您的EC2实例。

Selecting an existing VPC and subnet for your Auto Scaling group

3. 保留默认设置,然后点击下一步继续。

Leaving other default settings

4. 现在,使用以下设置配置您的自动缩放组的组大小:

Capacity Limit Details
Desired 1 Set the number of instances you want in your Auto Scaling group. The desired capacity must be greater than or equal to the minimum capacity and less than or equal to the maximum capacity.
Minimum 1 Set the minimum number of instances in your Auto Scaling group. The value must be greater than or equal to 1 and less than or equal to the maximum capacity.
Maximum 1 Set the maximum number of instances you want in your Auto Scaling group.
Specifying the Auto Scaling group’s capacity

5. 向下滚动,保留默认设置,然后点击跳过进行审阅继续。

  • **缩放策略** – 保留“无”选项,因为您将使用简单的缩放策略。该策略在旧的组中的实例被终止后,将自动缩放组的期望容量增加一个EC2实例。
  • **实例缩小保护** – 保持此选项禁用,因为在本教程中您不需要它。启用此选项可控制自动缩放组在缩小时是否可以终止您的实例。
Keeping details settings for scaling policies and instance scale-in protection

6. 最后,审阅您的自动缩放组设置,然后点击创建自动缩放组(右下角)以创建您的自动缩放组。

Creating the Auto Scaling group

一旦创建,您将看到列出您的自动扩展组,如下所示。

Verifying the newly-created Auto Scaling group

测试 AWS EC2 自动扩展组

太棒了!您已成功创建了一个 AWS EC2 自动扩展组来容纳您的 EC2 实例。但是,您如何知道您的自动扩展组是否起作用呢?

您将验证您的 AWS EC2 自动扩展组是否已启动一个 EC2 实例。此实例是您在“创建 AWS EC2 自动扩展组”部分的第四步中指定的期望容量。

1. 选中您新创建的自动扩展组旁边的复选框,然后单击“活动”选项卡以查看自动扩展组中的所有活动。

在底部的活动历史部分,您将看到自动扩展组中最近事件的描述。在本例中,描述显示正在启动新的 EC2 实例,状态成功,实例 ID 为 (i-09b699064f6e06070)。

复制实例 ID,因为您将在以下步骤中需要用它来验证您的实例。

Viewing your activity history.

2. 转到 EC2 仪表板,并将在第一步中复制的实例 ID 与任何运行中的实例进行比较。

看到两个实例 ID 匹配表示您的自动扩展组已成功启动了一个 EC2 实例。

Comparing the instance ID

3. 回到自动扩展组页面,单击实例管理选项卡,您将在一个位置上看到关于您的 EC2 实例的所有信息。此选项卡上最关键的信息是:

  • 生命周期列 – 您可以看到Auto Scaling组中的EC2实例处于InService状态,表示该实例可以处理请求。
  • 健康状态列 – 您可以看到EC2实例的健康检查状态为Healthy,表示实例通过了所有健康检查。

终止EC2实例

现在您已经验证了Auto Scaling组的工作原理,可以通过终止其中的EC2实例来进一步测试Auto Scaling组。请记住,在组中终止一个实例会导致Auto Scaling组自动启动一个新的EC2实例作为替代。

在实际情况下,您会使用Auto Scaling组根据自动变化的条件进行扩展。何时?例如,您的一个NGINX Web服务器被请求过载,并有可能崩溃。

但现在,您将通过手动终止EC2实例来测试Auto Scaling组,以模拟如果实例失败会发生什么。

1. 导航到您的实例,并在实例旁边的复选框中选中它。

选中后,点击“实例状态”下拉菜单 → “终止实例”以终止所选实例。

Terminating an EC2 instance

2. 接下来,当要求确认终止实例时,点击“终止”。

Confirming instance termination.

以下是一条消息,指示EC2实例已成功终止。

自动扩展组的默认冷却期为300秒(5分钟),这意味着在终止旧实例后,自动扩展组将至少需要五分钟来启动一个新实例。

Verifying successful instance termination

最后,在等待新实例启动时,检查自动扩展组中的活动历史。

如下所示,您将看到一个新的EC2实例已被自动启动。此输出确认您的自动扩展组正在按预期工作。

Checking a new EC2 instance is launched automatically

结论

处理应用程序的负载是保持其正常运行的重要组成部分。幸运的是,借助AWS EC2自动扩展,您可以确保应用程序始终具有处理变化流量模式所需的资源。

在本教程中,您已经学会了如何创建自动扩展组、将实例启动到组中,并根据变化的条件来调整组。在这一点上,您现在可以自信地为您的应用程序创建AWS EC2自动扩展组。

有了这些新知识,为什么不使用AWS CloudFormation创建自动扩展组,以获得更多便利呢?当您的负载增加时,您将会感谢自己,因为您不必担心手动提供更多资源!

Source:
https://adamtheautomator.com/ec2-autoscaling/