创建混合实例组的设置概述 - Amazon A EC2 uto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建混合实例组的设置概述

本主题提供创建混合实例自动扩缩的概述和最佳实践。

概述

要创建混合实例组,您有两个选项:

Manual selection

以下步骤介绍如何通过手动选择实例类型来创建混合实例组:

  1. 选择具有启动EC2实例的参数的启动模板。启动模板中的参数是可选的,但是如果启动模板中缺少亚马逊系统映像 (AMI) ID,Amazon A EC2 uto Scaling 将无法启动实例。

  2. 选择选项以覆盖启动模板。

  3. 手动选择适合您的工作负载的实例类型。

  4. 指定要启动的按需型实例和竞价型实例的百分比。

  5. 从可能的实例类型中选择分配策略,以确定 Amazon A EC2 uto Scaling 如何满足您的按需和竞价容量。

  6. 选择要在其中启动实例的可用区和VPC子网。

  7. 指定组的初始大小(所需容量)以及该组的最小和最大大小。

必须进行覆盖,才能覆盖启动模板中声明的实例类型并使用嵌入在自动扩缩组自有资源定义中的多个实例类型。有关可用实例类型的更多信息,请参阅 Amazon EC2 用户指南中的实例类型

您还可以为每种实例类型配置以下可选参数:

  • LaunchTemplateSpecification:您可以根据需要为实例类型分配不同的启动模板。此选项目前在控制台中不可用。有关更多信息,请参阅 为实例类型使作不同的启动模板

  • WeightedCapacity:与组中其余实例相比,您可以决定该实例在所需容量中所占的比例。如果您为一种实例类型指定 WeightedCapacity 值,则必须为所有实例类型指定 WeightedCapacity 值。默认情况下,每个实例在您的所需容量中计为一个。有关更多信息,请参阅 配置自动扩缩组以使用实例权重

Attribute-based selection

要让 Amazon A EC2 uto Scaling 根据实例的特定属性自动选择您的实例类型,请使用以下步骤通过指定您的计算要求来创建混合实例组:

  1. 选择具有启动EC2实例的参数的启动模板。启动模板中的参数是可选的,但是如果启动模板中缺少亚马逊系统映像 (AMI) ID,Amazon A EC2 uto Scaling 将无法启动实例。

  2. 选择选项以覆盖启动模板。

  3. 指定与您的计算要求相匹配的实例属性,例如 vCPUs 和内存要求。

  4. 指定要启动的按需型实例和竞价型实例的百分比。

  5. 从可能的实例类型中选择分配策略,以确定 Amazon A EC2 uto Scaling 如何满足您的按需和竞价容量。

  6. 选择要在其中启动实例的可用区和VPC子网。

  7. 指定组的初始大小(所需容量)以及该组的最小和最大大小。

必须进行覆盖,才能覆盖启动模板中声明的实例类型并使用一组实例属性来描述您的计算要求。有关支持的属性,请参阅 Amazon A EC2 uto Scaling API 参考InstanceRequirements中的。或者,您可以使用已有实例属性定义的启动模板。

您也可以在覆盖结构中配置 LaunchTemplateSpecification 参数,以便根据需要为一组实例要求分配不同的启动模板。此选项目前在控制台中不可用。有关更多信息,请参阅LaunchTemplateOverridesAmazon A EC2 uto Scaling API 参考》。

默认情况下,您将自动扩缩组的所需容量值设置为实例的数量。

或者,您可以将所需容量的值设置为内存的数量 vCPUs 或容量。为此,请使用CreateAutoScalingGroupAPI操作中的DesiredCapacityType属性或中的所需容量类型下拉字段 Amazon Web Services Management Console。这是实例权重的实用替代方案。

实例类型灵活性

要提高可用性,请跨多种实例类型部署应用程序。最佳实践是使用多种实例类型来满足容量要求。这样,如果您选择的可用区域中的实例容量不足,Amazon A EC2 uto Scaling 就可以启动另一种实例类型。

如果竞价型实例的实例容量不足,Amazon A EC2 uto Scaling 会继续尝试从其他竞价型实例池启动。(它使用的池由您选择的实例类型和分配策略决定。) Amazon A EC2 uto Scaling 通过启动竞价型实例代替按需实例,帮助您利用竞价型实例节省的成本。

我们建议灵活地为每种工作负载在至少 10 种实例类型之间进行选择。选择实例类型时,不要局限于最热门的新实例类型。选择老一代实例类型往往会导致竞价型中断较少,因为按需客户对它们的需求较少。

可用区灵活性

我们强烈推荐您在多个可用区之间跨越您的自动扩缩组。利用多个可用区,您可以设计在可用区之间自动实现故障转移的应用程序,从而提高弹性。

此外,与单个可用区中的群组相比,您可以访问更深的 Amazon EC2 容量池。由于可用区内每个实例类型的容量分开波动,您可以灵活使用实例类型和可用区,通常可以获得更多计算容量。

有关使用多可用区的详细信息,请参阅 示例:在可用区之间分配实例

Spot 最高价

使用 Amazon CLI 或创建 Auto Scaling 组时SDK,可以指定SpotMaxPrice参数。SpotMaxPrice 参数确定您愿意为竞价型实例一小时支付的最高价。

当您在覆盖(或 "DesiredCapacityType": "vcpu" 或在组级别的 "DesiredCapacityType": "memory-mib")中指定 WeightedCapacity 参数时,最高价格代表的是最高单价,而不是整个实例的最高价格。

我们强烈建议您不要指定最高价。如果您未收到任何竞价型实例 (例如当您的最高价太低时),您的应用程序可能不运行。如果未指定最高价,则默认最高价为按需价格。您只需为您启动的竞价型实例支付 Spot 价格。您仍然可以享受竞价型实例提供的大幅折扣。这些折扣得以实现,是由于借助竞价型定价模型带来了稳定的竞价型定价。有关更多信息,请参阅 Amazon EC2 用户指南中的定价和优惠

主动容量再平衡

如果您的用例允许,我们建议您进行容量再平衡。容量再平衡功能可在运行中的竞价型实例收到两分钟的竞价型实例中断通知之前,主动使用新的竞价型实例扩展您的队列,从而帮助您维护工作负载的可用性。

启用容量再平衡后,Amazon A EC2 uto Scaling 会尝试主动替换已收到再平衡建议的竞价型实例。这让您能够将工作负载转移到不具有较高中断风险的新竞价型实例。

有关更多信息,请参阅 使用容量重新平衡来处理 Amazon EC2 竞价型实例中断

扩展行为

当您创建混合实例组时,它默认使用按需型实例。要使用竞价型实例,您必须修改要启动的按需型实例启动的百分比。您可以指定 0 到 100 之间的任意数字来作为按需百分比。

或者,您也可以指定要开始使用的按需型实例的基本数量。如果您这样做,Amazon A EC2 uto Scaling 会等待竞价型实例的启动,直到按需实例组扩展时启动按需实例的基本容量。超出基本容量的任何内容都使用按需百分比来确定要启动多少按需型实例和竞价型实例。

Amazon A EC2 uto Scaling 将百分比转换为等值的实例数。如果结果创建一个小数,向上舍入为下一个整数,以支持按需型实例。

下表展示了自动扩缩组随着规模的增加和减少而采取的行为。

示例:扩展行为
购买选项 各购买选项的运行实例的组大小和数量
10 20 30 40

示例 1:以 10 为基准,50/ 50% 按需/竞价型

按需实例(基本金额) 10 10 10 10
按需型实例 0 5 10 15
竞价型实例 0 5 10 15

示例 2:以 0 为基准,0/ 100% 按需/竞价型

按需实例(基本金额) 0 0 0 0
按需型实例 0 0 0 0
竞价型实例 10 20 30 40

示例 3:以 0 为基准,60/ 40% 按需/竞价型

按需实例(基本金额) 0 0 0 0
按需型实例 6 12 18 24
竞价型实例 4 8 12 16

示例 4:以 0 为基准,100/ 0% 按需/竞价型

按需实例(基本金额) 0 0 0 0
按需型实例 10 20 30 40
竞价型实例 0 0 0 0

示例 5:以 12 为基准,0/ 100% 按需/竞价型

按需实例(基本金额) 10 12 12 12
按需型实例 0 0 0 0
竞价型实例 0 8 18 28

当群组规模增加时,Amazon A EC2 uto Scaling 会尝试在您指定的可用区域内均衡您的容量。然后,它根据指定的分配策略启动实例类型。

当群组规模缩小时,Amazon A EC2 uto Scaling 首先确定应终止两种类型(竞价型或按需型)中的哪一种。然后,它会尝试以平衡的方式终止您指定的可用区的实例。它还倾向于以更接近您的分配策略的方式终止实例。有关终止策略的更多信息,请参阅 为 Amazon A EC2 uto Scaling 配置终止策略

实例类型的区域可用性

EC2实例类型的可用性因您而异 Amazon Web Services 区域。例如,最新一代实例类型可能尚未在给定区域中可用。由于不同区域的实例可用性存在差异,如果您的覆盖中的多个实例类型在您所在的地区不可用,则在提出编程请求时可能会遇到问题。使用您所在地区不可用的多个实例类型可能会导致请求完全失败。要解决此问题,请使用不同的实例类型重试请求,确保每个实例类型在该区域中都可用。要搜索按位置提供的实例类型,请使用describe-instance-type-offerings命令。有关更多信息,请参阅亚马逊EC2用户指南中的查找亚马逊EC2实例类型

有关竞价型实例的更多最佳实践,请参阅 Amazon EC2 用户指南中的EC2竞价型最佳实践

限制

使用混合实例策略向 Auto Scaling 组添加覆盖后,您可以通过UpdateAutoScalingGroupAPI调用更新替代项,但不能将其删除。要完全移除覆盖,必须先将自动扩缩组切换为使用启动模板或启动配置,而不是混合实例策略。然后,您可以再次添加混合实例策略,而无需任何覆盖。