本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建混合实例组的设置概述
本主题提供创建混合实例自动扩缩的概述和最佳实践。
概述
要创建混合实例组,您有两个选项:
-
基于属性的实例类型选择:定义您的计算要求,以便根据其特定实例属性自动选择实例类型。
-
手动实例类型选择:手动选择适合您工作负载的实例类型。
实例类型灵活性
要提高可用性,请跨多种实例类型部署应用程序。最佳实践是使用多种实例类型来满足容量要求。这样,如果您选择的可用区域中的实例容量不足,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 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 组添加覆盖后,您可以通过UpdateAutoScalingGroup
API调用更新替代项,但不能将其删除。要完全移除覆盖,必须先将自动扩缩组切换为使用启动模板或启动配置,而不是混合实例策略。然后,您可以再次添加混合实例策略,而无需任何覆盖。