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

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

使用基于属性的实例类型选择创建混合实例组

在创建混合实例组时手动选择实例类型有一个替代方法,您可以指定一组用于描述计算要求的实例属性。当 Amazon A EC2 uto Scaling 启动实例时,Auto Scaling 组使用的任何实例类型都必须与您所需的实例属性相匹配。这称为基于属性的实例类型选择

这种方法非常适合于可以灵活处理所使用实例类型的工作负载和框架,例如容器、大数据和 CI/CD。

选择基于属性的实例类型具有以下优势:

  • 竞价型实例的最佳灵活性 — Amazon A EC2 uto Scaling 可以从多种实例类型中进行选择,用于启动竞价型实例。这符合灵活处理实例类型的 Spot 最佳实践,这使得 Amazon EC2 Spot 服务更有可能找到和分配所需的计算容量。

  • 轻松使用正确的实例类型 – 有如此多的实例类型可供使用,因此找到适用于您的工作负载的实例类型可能非常耗时。当您指定实例属性时,实例类型将自动具有工作负载所需的属性。

  • 自动使用新实例类型:您的自动扩缩组可以在发布新一代实例类型时使用这些实例类型。新一代实例类型将自动投入使用,如果它们符合您的要求并与您为 Auto Scaling 组选择的分配策略保持一致。

基于属性的实例类型选择的工作原理

通过基于属性的实例类型选择,您无需提供特定实例类型列表,而是提供实例所需的实例属性列表,例如:

  • v CPU count — vCPUs 每个实例的最小和最大数量。

  • 内存-每个实例的最小 GiBs 和最大内存。

  • 本地存储 — 是使用EBS还是使用实例存储卷作为本地存储。

  • 可突增性能 - 是否使用 T 实例系列(包括 T4g、T3a、T3 和 T2 类型)。

有许多选项可用于定义您的实例要求。有关每个选项和默认值的描述,请参阅InstanceRequirementsAmazon A EC2 uto Scaling API 参考》。

当您的自动扩缩组需要启动实例时,它将搜索与您指定的属性匹配且在该可用区中可用的实例类型。然后,分配策略确定启动哪种匹配的实例类型。默认情况下,基于属性的实例类型选择启用了价格保护功能,以防止您的自动扩缩组启动超出预算阈值的实例类型。

默认情况下,在设置自动扩缩组所需的容量时,使用实例数作为计量单位,这意味着每个实例算作一个单位。

或者,您可以将所需容量的值设置为内存的数量 vCPUs 或容量。为此,请使用或UpdateAutoScalingGroupAPI操作中 Amazon Web Services Management Console 或DesiredCapacityType属性的所需容量类型下拉字段。CreateAutoScalingGroup然后,Amazon A EC2 uto Scaling 会启动满足所需的 v CPU 或内存容量所需的实例数量。例如,如果您使用 vCPUs 作为所需容量类型并使用 vCPUs 每个 2 个实例,则所需容量为 10 vCPUs 将启动 5 个实例。这是实例权重的实用替代方案。

价格保护

借助价格保护,您可以指定愿意为 Auto Scaling 组启动的EC2实例支付的最高价格。价格保护是一项功能,可以防止自动扩缩组使用您认为成本过高的实例类型,即使其恰好适合您指定的属性。

默认已启用价格保护,价格保护为按需型实例和竞价型实例设置了单独的价格阈值。当 Amazon A EC2 uto Scaling 需要启动新实例时,任何定价高于相关阈值的实例类型都不会启动。

按需价格保护

对于按需型实例,您可以将愿意支付的最高按需价格定义为高于已确定按需价格的百分比。已确定按需价格是具有指定属性的、价格最低的最新一代 C、M 或 R 实例类型的价格。

如果未明确定义按需价格保护值,则将使用比已确定按需价格高 20% 的默认最高按需价格。

竞价价格保护

默认情况下,Amazon A EC2 uto Scaling 将自动应用最佳竞价型实例价格保护,以便始终如一地从各种实例类型中进行选择。您也可以自行手动设置价格保护。但是,让 Amazon A EC2 uto Scaling 帮你做这件事可以提高竞价容量得到满足的可能性。

您可以使用以下选项之一,手动指定价格保护。如果您手动设置价格保护,则建议您使用第一个选项。

  • 已确定按需价格的百分比:已确定按需价格是具有指定属性的、价格最低的最新一代 C、M 或 R 实例类型的价格。

  • 高于已确定竞价价格的百分比:已确定竞价价格是具有指定属性的、价格最低的最新一代 C、M 或 R 实例类型的价格。不建议使用此选项,因为竞价价格可能会波动,因此您的价格保护阈值也可能会波动。

自定义价格保护

您可以在 Amazon A EC2 uto Scaling 控制台中或使用或自定义价格保护阈值SDKs。 Amazon CLI

  • 在控制台中,使用其他实例属性中的按需价格保护竞价价格保护设置。

  • InstanceRequirements结构中,要指定按需实例价格保护阈值,请使用OnDemandMaxPricePercentageOverLowestPrice属性。要指定竞价型实例价格保护阈值,请使用 MaxSpotPriceAsPercentageOfOptimalOnDemandPriceSpotMaxPricePercentageOverLowestPrice 属性。

如果您将 “所需容量类型” (DesiredCapacityType) 设置为vCPUs内存 GiB,则价格保护将根据每 v CPU 或每内存的价格而非每个实例的价格适用。

您也可以关闭价格保护。要表明无价格保护阈值,请指定一个较高的百分比值,如 999999

注意

如果没有与指定属性匹配的最新一代 C、M 或 R 实例类型,则价格保护仍然适用。如果找不到匹配项,则已确定价格来自匹配指定属性的、价格最低的最新一代实例类型;如果没有,则来自价格最低的上一代实例类型。

性能保护

性能保护是一项功能,可确保您的 Auto Scaling 组使用的实例类型与指定性能基准相似或超过指定性能基准。要使用性能保护,您需要指定实例系列作为基准参考。指定实例系列的功能确立了可接受的最低性能水平。Auto Scaling 在选择实例类型时,会考虑您指定的属性和性能基准。低于性能基准的实例类型将被自动排除在选择范围之外,即使它们与您的其他指定属性相匹配。这样可以确保所有选定的实例类型提供的性能与指定实例系列确定的基准相似或更好。Auto Scaling 使用此基准来指导实例类型选择,但不能保证所选实例类型始终会超过每个应用程序的基准。

目前,此功能仅支持将CPU性能作为基准性能因素。指定实例系列的CPU性能作为性能基准,确保所选实例类型与该基准相似或超过该基准。具有相同CPU处理器的实例系列会得到相同的过滤结果,即使它们的网络或磁盘性能不同。例如,将c6in或指定c6i为基准参考将产生相同的基于性能的筛选结果,因为两个实例系列使用相同的CPU处理器。

不支持的实例系列

性能保护不支持以下实例系列:

  • c1

  • g3 | g3s

  • hpc7g

  • m1 | m2

  • mac1 | mac2 | mac2-m1ultra | mac2-m2 | mac2-m2pro

  • p3dn | p4d | p5

  • t1

  • u-12tb1 | u-18tb1 | u-24tb1 | u-3tb1 | u-6tb1 | u-9tb1 | u7i-12tb | u7in-16tb | u7in-24tb | u7in-32tb

如果您通过指定支持的实例系列来启用性能保护,则返回的实例类型将排除上述不支持的实例系列。

示例:设置CPU性能基准

在以下示例中,实例要求启动的实例类型必须具有与c6i实例系列一样高的CPU内核。这将筛选出CPU处理器性能较低的实例类型,即使它们满足其他指定的实例要求,例如数量vCPUs。例如,如果您指定的实例属性包括 4 vCPUs 和 16 GB 的内存,则具有这些属性但CPU性能低于该值的实例类型c6i将被排除在选择范围之外。

"BaselinePerformanceFactors": { "Cpu": { "References": [ { "InstanceFamily": "c6i" } ] }
注意事项

使用性能保护时,请考虑以下几点:

  • 您可以指定实例类型或实例属性,但不能同时指定两者。

  • 在一个请求配置中,最多可以指定四个 InstanceRequirements 结构。

先决条件

使用基于属性的实例类型选择创建一个混合实例组(控制台)

通过以下过程使用基于属性的实例类型选择创建混合实例组。为了帮助您高效地完成这些步骤,我们跳过了一些可选部分。

对于大多数通用工作负载,指定所需的数量 vCPUs 和内存就足够了。对于高级用例,您可以指定存储类型、网络接口、CPU制造商和加速器类型等属性。

要查看混合实例组的最佳实践,请参阅创建混合实例组的设置概述

创建一个混合实例组
  1. 在上打开亚马逊EC2控制台 https://console.aws.amazon.com/ec2/,然后从导航窗格中选择 A uto Scaling Gro ups。

  2. 在屏幕顶部的导航栏中,选择在创建启动模板时使用的同一 Amazon Web Services 区域 。

  3. 选择 Create an Auto Scaling group (创建 Auto Scaling 组)。

  4. 选择启动模板或配置页面上,对于 Auto Scaling 组名称,输入 Auto Scaling 组的名称。

  5. 要选择启动模板,请执行以下操作:

    1. 对于启动模板,请选择现有启动模板。

    2. 对于 Launch template version(启动模板版本),选择 Auto Scaling 组在扩展时使用启动模板的默认版本、最新版本还是特定版本。

    3. 验证您的启动模板是否支持您计划使用的所有选项,然后选择下一步

  6. 选择实例启动选项页面上,执行以下操作:

    1. 对于 Instance type requirements(实例类型要求),请选择 Override launch template(覆盖启动模板)。

      注意

      如果您选择的启动模板已经包含一组实例属性(例如 vCPUs 和内存),则会显示实例属性。这些属性已添加到 Auto Scaling 组属性中,您可以随时从 Amazon A EC2 uto Scaling 控制台对其进行更新。

    2. “指定实例属性” 下,首先输入您的 vCPUs 和内存要求。

      • 对于 vCPUs,输入所需的最小和最大数量vCPUs。要指定没有限制,请选择 No minimum(没有最小值)和/或 No maximum(没有最大值)。

      • 对于 Memory (GiB)(内存 (GiB)),输入所需的最小和最大内存量。要指定没有限制,请选择 No minimum(没有最小值)和/或 No maximum(没有最大值)。

    3. (可选)对于 Additional instance attributes(其它实例属性),您可以选择指定一个或多个属性以更详细地表达计算要求。每个额外属性都会进一步增加对您的请求的限制。

    4. (可选)展开预览匹配的实例类型以查看具有指定属性的实例类型。

    5. 实例购买选项下,对于 实例分配,指定要启动的按需型实例和竞价型实例在该组中所占的百分比。如果您的应用程序无状态、容错,并且可以处理中断的实例,则可以指定更高的竞价型实例百分比。

    6. (可选)如果您指定了一个竞价型实例百分比,请选中包括按需型基本容量旁边的复选框,然后指定按需型实例在自动扩缩组的最小初始容量中必须达到的数量。超出基本容量的任何内容都使用百分比来确定要启动多少按需实例和 Spot 实例。

    7. Allocation strategies(分配策略)下,已为 On-Demand allocation strategy(按需分配策略)自动选择 Lowest price(最低价格),无法对其进行更改。

    8. 对于 Spot allocation strategy(竞价型分配策略),选择分配策略。默认情况下,将选择 Price capacity optimized(价格容量优化)。默认情况下,将隐藏 Lowest price(最低价格),仅在您选择 Show all strategies(显示所有策略)时才会出现。如果您选择最低价格,则请输入价格最低的池的数量,以跨价格最低的池实现多样化。

    9. 对于容量再平衡,选择启用还是禁用容量再平衡。使用容量再平衡功能,以自动响应竞价型实例因竞价中断而即将终止的情况。有关更多信息,请参阅 使用容量重新平衡来处理 Amazon EC2 竞价型实例中断

    10. 在 “网络” 下 VPC,为,选择一个VPC。Auto Scaling 组必须与您在启动模板中指定的安全组VPC相同。

    11. 对于可用区和子网,请在指定的中选择一个或多个子网。VPC可以在多个可用区中使用子网以提供高可用性。有关更多信息,请参阅 选择VPC子网时的注意事项

    12. 选择下一步下一步

  7. 对于 Configure group size and scaling policies(配置组大小和扩缩策略)步骤,请执行以下操作:

    1. 如果您希望以实例以外的其他单位来衡量所需容量,请为组大小所需容量类型选择合适的选项。支持单位vCPUs、和内存 GiB。默认情况下,Amazon A EC2 uto Scaling 会指定单位,单位转换为实例的数量。

    2. 为自动扩缩组设置初始 所需容量

    3. 扩展部分的扩展限制下,如果所需容量的新值大于所需的最小容量最大所需容量,则所需的最大容量将自动增加到新的所需容量值。您可以按需更改这些限制。有关更多信息,请参阅 为自动扩缩组设置扩缩限制

  8. 选择 Skip to review (跳转以查看)。

  9. Review(查看)页面上,选择 Create Auto Scaling group(创建 Auto Scaling 组)。

使用基于属性的实例类型选择创建一个混合实例组(Amazon CLI)

使用命令行创建一个混合实例组

使用以下命令之一:

示例配置

要使用创建具有基于属性的实例类型选择的 Auto Scaling 组 Amazon CLI,请使用以下create-auto-scaling-group命令。

指定了以下实例属性:

  • VCpuCount— 实例类型必须最少为四个vCPUs,最多为八个vCPUs。

  • MemoryMiB – 实例类型的最小内存必须为 16384 MiB。

  • CpuManufacturers— 实例类型必须由英特尔制造CPU。

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

下面是一个 config.json 示例文件。

{ "AutoScalingGroupName": "my-asg", "DesiredCapacityType": "units", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": {"Min": 4, "Max": 8}, "MemoryMiB": {"Min": 16384}, "CpuManufacturers": ["intel"] } }] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 50, "SpotAllocationStrategy": "price-capacity-optimized" } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 4, "DesiredCapacityType": "units", "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

要将所需容量的值设置为内存数量 vCPUs 或内存量,请在文件"DesiredCapacityType": "memory-mib"中指定"DesiredCapacityType": "vcpu"或。默认的所需容量类型为 units,它将所需容量的值设置为实例数。

或者,您可以使用以下create-auto-scaling-group命令创建 Auto Scaling 组。这将引用一个YAML文件作为 Auto Scaling 组的唯一参数。

aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

下面是一个 config.yaml 示例文件。

--- AutoScalingGroupName: my-asg DesiredCapacityType: units MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceRequirements: VCpuCount: Min: 2 Max: 4 MemoryMiB: Min: 2048 CpuManufacturers: - intel InstancesDistribution: OnDemandPercentageAboveBaseCapacity: 50 SpotAllocationStrategy: price-capacity-optimized MinSize: 0 MaxSize: 100 DesiredCapacity: 4 DesiredCapacityType: units VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

要将所需容量的值设置为内存数量 vCPUs 或内存量,请在文件DesiredCapacityType: memory-mib中指定DesiredCapacityType: vcpu或。默认的所需容量类型为 units,它将所需容量的值设置为实例数。

预览您的实例类型

您可以预览符合计算要求的实例类型而无需启动它们,并在必要时调整要求。在 Amazon Auto Scaling 控制台中创建 A EC2 uto Scaling 组时,实例类型的预览会显示在选择实例启动选项页面的预览匹配的实例类型部分。

或者,您可以使用 Amazon CLI 或EC2GetInstanceTypesFromInstanceRequirementsAPI拨打 Amazon 来预览实例类型SDK。在请求中传递 InstanceRequirements 参数,其格式与用于创建或更新 Auto Scaling 组的格式一致。有关更多信息,请参阅 Amazon EC2 用户指南中的预览具有指定属性的实例类型

要详细了解基于属性的实例类型选择,请参阅博客上的 Auto Scaling EC2 和 EC2 Fleet 基于属性的实例类型选择。 Amazon

当您使用 Amazon CloudFormation创建一个自动缩放组时,您可以声明基于属性的实例类型选择。有关更多信息,请参阅 Amazon CloudFormation 用户指南中的 自动扩缩模板片段部分中的示例片段。