Introduction to Amazon EC2 Auto Scaling
概览
什么是 Amazon EC2 Auto Scaling?
Amazon A EC2 uto Scaling 可帮助你确保有正确数量的亚马逊EC2实例可用来处理应用程序的负载。
你可以创建EC2实例集合,称为 Auto Scaling 组。
你可以指定每个 Auto Scaling 组中的最小实例数,Amazon A EC2 uto Scaling 可确保你的组永远不会低于此大小。
你可以指定每个 Auto Scaling 组中的最大实例数,Amazon A EC2 uto Scaling 可确保你的组永远不会超过此大小。
如果你在创建组时或之后的任何时候指定所需的容量,Amazon A EC2 uto Scaling 可确保你的组拥有这么多的实例。
如果你指定扩展策略,那么 Amazon A EC2 uto Scaling 可以在应用程序需求增加或减少时启动或终止实例。
本实验展示了如何使用 Auto Scaling 来响应指定的条件,自动启动 Amazon EC2 实例。你将终止正在运行的实例并观察 Auto Scaling 如何自动创建替换实例,从而测试 Auto Scaling。
你使用 Amazon A EC2 uto Scaling 时,你的应用程序将获得以下好处:
提高容错能力。Amazon A EC2 uto Scaling 可以检测实例何时运行状况不佳,将其终止,然后启动实例来替换它。你也可以将 Amazon A EC2 uto Scaling 配置为使用多个可用区。如果一个可用区不可用,Amazon A EC2 uto Scaling 可以在另一个可用区中启动实例以进行补偿。
提高可用性。Amazon A EC2 uto Scaling 有助于确保你的应用程序始终具有适当的容量来处理当前的流量需求。
加强成本管理。Amazon A EC2 uto Scaling 可以根据需要动态增加和减少容量。由于你需要为所使用的EC2实例付费,因此你可以通过在需要时启动实例并在不需要时将其终止来节省资金。
eg:Web 应用程序架构
在常见的 Web 应用程序场景中,你同时运行应用程序的多个副本来满足客户流量。你的应用程序的这些多个副本托管在相同的EC2实例(云服务器)上,每个副本都处理客户请求。
Amazon A EC2 uto Scaling 代表你管理这些EC2实例的启动和终止。你可以定义一组标准(例如 Amazon CloudWatch 警报),用于确定 Auto Scaling 组何时启动或终止EC2实例。将 Auto Scaling 组添加到网络架构有助于提高应用程序的可用性和容错能力。
先决条件
本动手实验假定你熟悉 Amazon EC2 实例的启动,并已创建和使用过密钥对和安全组。
技术简介
Amazon EC2 Auto Scaling Auto Scaling 可以确保你拥有合理数量的 Amazon EC2 实例,能够用来处理应用程序的工作负载。你可以创建称为 Auto Scaling 组的 EC2 实例集合。
你可以指定每个 Auto Scaling 组中的最小实例数量,而 Auto Scaling 会确保你的组中的实例永远不会低于这个数量。
你可以指定每个 Auto Scaling 组中的最大实例数量,而 Auto Scaling 会确保你的组中的实例永远不会高于这个数量。
如果你指定所需容量,Auto Scaling 将确保你的组始终具有固定数量的实例。
如果你指定扩展策略,那么当对应用程序的需求增加或减少时,Auto Scaling 将启动新实例或终止现有实例。
Auto Scaling 只会启动新实例或终止现有实例。它不会控制实例的开启或关闭。
Auto Scaling 组
你的 EC2 实例会被归入 Auto Scaling 组中,并作为扩展和管理的逻辑单元。当你创建 Auto Scaling 组时,你可以指定其中的 EC2 实例的最小数量、最大数量和所需数量。
启动模板
你可以在启动模板中存储启动参数,而无需在每次启动实例时都指定这些参数。例如,启动模板可以包含你通常用于启动实例的 AMI ID、实例类型和网络设置。在使用 Amazon EC2 控制台、Amazon SDK 或命令行工具启动实例时,你可以指定要使用的启动模板。
扩展计划
扩展计划可以告诉 Auto Scaling 在什么时间以什么方式扩展。计划的类型包括:
始终保持当前实例等级:Auto Scaling 会对 Auto Scaling 组中正在运行的实例定期执行运行状况检查。如果找到运行不正常的实例,Auto Scaling 将终止该实例并启动一个新实例。
手动扩展:手动扩展是最基本的资源扩展方式。你可以指定 Auto Scaling 组的最大容量、最小容量或所需容量的变化。然后,Auto Scaling 会管理实例的创建或终止过程,以便达到更新后的容量。
按计划扩展:有时你明确知道要在什么时候增加或减少组中的实例数量,因为实际需求与某个可预测的计划相符。按计划扩展意味着扩展操作会按照时间和日期自动执行。
按需求扩展:定义控制 Auto Scaling 流程的参数。例如,你可以创建一项策略,要求在平均 CPU 使用率连续 15 分钟保持在 90% 以上时扩展 EC2 实例。如果你知道如何根据条件变化来进行扩展,但却不知道条件何时改变,那就可以使用这种方法。你可以设置 Auto Scaling 来为自己做出响应。
注:
Auto Scaling 不收取任何额外费用。你只需为启动的 Amazon EC2 实例付费。
任务 1:创建启动模板
要使用启动模板创建 Auto Scaling 组,你必须先创建启动模板,其中需要包括启动 EC2 实例所需的参数,例如 Amazon 系统映像 (AMI) 的 ID 和实例类型。
在此任务中,你将创建启动模板。
在 Services(服务)菜单中,单击 EC2。 如果你在屏幕左上角看到 New EC2 Experience(新 EC2 体验),请确保选中 New EC2 Experience(新 EC2 体验)。本实验旨在使用新的 EC2 控制台。
在左侧导航窗格中,选择 Instances(实例)下的 Launch Templates(启动模板)。
选择 Create launch template(创建启动模板),然后进行以下配置:
在 Launch template name and description(启动模板名称和说明)部分,配置以下各项:
Launch template name(启动模板名称):Lab-template(实验模板) Template version description(模板版本说明):version 1(版本 1) 系统将提示你选择 Amazon 系统映像 (AMI),该 AMI 是实例根卷的模板,可包含操作系统、应用程序服务器和应用程序。你可以使用 AMI 来启动实例,该实例是在云中作为虚拟服务器运行的 AMI 的副本。
AMI 可用于各种版本的 Windows 和 Linux。在本实验中,你将启动一个运行 Amazon Linux 的实例。具体更多查找《亚马逊EC2用户指南》AMI中的 “创建由亚马逊EBS支持
在 Application and OS Images (Amazon machine Image) (应用程式和 OS 映像 (Amazon 机器映像)) 部分設定以下項目: 选取 Amazon Linux。 这个选项直接位于 Quick Start 下方。
对于 Instance Type(实例类型),选择 t3.micro。 当你启动实例时,实例类型将决定分配给实例的硬件。每个实例类型都提供不同的计算、内存和存储功能,并按照这些功能分组到不同实例系列。
对于 Security groups(安全组),请选择 MySecurityGroup。
滚动到屏幕底部,然后单击 Create launch template(创建启动模板)
单击 View launch templates(查看启动模板)
任务 2:创建 Auto Scaling 组
Auto Scaling 组中包含一系列 EC2 实例,这些实例具有相似的特征,并被视为扩展和管理实例时的逻辑组。
例如,如果单个应用程序在多个实例上运行,你可能需要增加该组中的实例数量来提高应用程序性能,或者在需求下降时减少实例数量以便降低成本。
你可以使用 Auto Scaling 组根据你指定的条件自动扩展实例数量,也可以保持固定数量的实例(即使实例运行不正常)。
这种在 Auto Scaling 组中自动扩展和维护实例数量的功能是 Amazon EC2 Auto Scaling 服务的核心功能。
在本任务中,你将使用一个实例配置一个 Auto Scaling 组。
在左侧导航窗格中,单击 Auto Scaling 下的 Auto Scaling Groups(Auto Scaling 组)。
按一下 Create Auto Scaling group (建立 Auto Scaling 群組),接著設定以下項目:
Auto Scaling group name(Auto Scaling 组名称):Lab-Group Launch template(启动模板):选择你创建的启动模板。
在 Network(网络)部分,配置以下各项: VPC:Lab VPC Subnets(子网):选择两个子网
在 Configure advanced options(配置高级选项)页面,配置以下各项:
Health check grace period(运行状况检查宽限期):60 Monitoring(监控): Enable group metrics collection within CloudWatch(在 CloudWatch 中启用组指标收集)
在 Configure group size and scaling policies(配置组大小和扩展策略)页面,配置以下各项:
Minimum capacity(最小容量):1
Maximum capacity(最大容量):2
默认情况下,Auto Scaling 会让该组保持初始大小。这意味着它会让一个实例始终保持运行。如果该实例发生故障,它就会被自动替换。
直至进入 Review(查看)页面。
单击 Create Auto Scaling Group(创建 Auto Scaling 组)
任务 3:验证 Auto Scaling 组
创建了 Auto Scaling 组之后,你可以验证该组是否已启动 EC2 实例。
单击你的 Auto Scaling 组。 检查 Group Details(组详细信息),以查看有关 Auto Scaling 组的信息。
单击 Activity(活动)选项卡。 Status(状态)列会显示实例的当前状态。如果实例正在启动,该列将显示 PreInService(准备运行)。在实例启动后,状态将更改为 Successful(成功)。你可以单击刷新按钮查看实例的当前状态。
单击 Instance management(实例管理)选项卡。 你可以看到 Auto Scaling 组已启动你的 EC2 实例,并且该实例处于 InService(正在运行)生命周期状态。Health Status(运行状态)列将显示对你的实例进行 EC2 实例运行状况检查的结果。
单击 Monitoring(监控)选项卡。你可以在这里看到 Autoscaling 组的监控方面的信息。
任务 4:测试 Auto Scaling
请进行以下实验,以便了解有关 Auto Scaling 的更多信息。你的 Auto Scaling 组的最小容量为 1 个实例。因此,如果你终止运行的实例,Auto Scaling 必须启动一个新实例以替换该实例。
在 Instance management(实例管理)选项卡中,单击 Instance ID(实例 ID)。该 ID 的形式类似于:i-1234abcd1234。 你将进入 Amazon EC2 控制台的实例页面。
如果你收到错误消息
“Amazon Compute Optimizer: This user is not authorized to call Amazon Compute Optimizer(Amazon Compute Optimizer: 此用户无权调用 Amazon Compute Optimizer)”,请忽略该错误。
选择 你的实例。
在 Instance State (实例状态)菜单中,选择 Terminate instance(终止实例)
在 Terminate instance(终止实例)对话框中,单击 Terminate(终止)
实例状态将更改为 shutdown-down(正在关闭)。
请等待实例状态变为 terminated(已终止)。请不时单击刷新 按钮以便更新状态。
在左侧导航窗格中,单击 Auto Scaling Groups(Auto Scaling 组)。
单击你的 Auto Scaling 组。
单击 Instance management(实例管理)选项卡。
你将看到初始实例状态为 Terminating(正在终止)。很快你就会看到一个新实例出现,状态为 Pending(待处理)或 InService(正在运行)。
单击 Activity(活动)选项卡。 扩展活动开始后的所有扩展活动都记录在这里。单击 可以查看第一个实例的启动和终止对应的条目,然后查看新实例的启动对应的条目。