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

示例:使用基于属性的实例类型选择创建 Auto Scaling 组

在创建 Auto Scaling 组时,您必须指定配置 Amazon EC2 实例所需的信息、实例的可用区和 VPC 子网、所需容量以及最小和最大容量限制。

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

您的 Auto Scaling 组或启动模板可指定您的实例属性,包括您计划在此实例上所运行的应用程序所需的存储容量和计算能力。此外,您的 Auto Scaling 组或启动模板为竞价型实例和按需型实例指定了两个价格保护阈值,您可以选择自定义这两个阈值,以便在不需要时防止 Amazon EC2 Auto Scaling 启动更昂贵的实例类型。

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

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

  • Amazon EC2 Auto Scaling 可以从各种实例类型中进行选择,从而启动竞价型实例。这是符合灵活处理实例类型的竞价型实例的最佳实践,可以使得 Amazon EC2 竞价型服务有更好的机会查找和分配所需的计算容量。

  • 因为可供选择的选项如此之多,为您的工作负载找到合适的实例类型可能会非常耗时。通过指定实例属性,您可以在配置混合实例组时简化实例类型的选择。

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

您可以通过 Amazon Web Services Management Console、Amazon CLI 或 SDK 使用基于属性的实例类型选择。

有关如何在启动模板中配置基于属性的实例类型选择的信息,请参阅 为 Auto Scaling 组创建启动模板。有关如何通过使用 SDK 在 Amazon EC2 Auto Scaling API 调用中传递参数来配置基于属性的实例类型选择的信息,请参阅 Amazon EC2 Auto Scaling API 参考中的实例要求

要详细了解基于属性的实例类型选择,请参阅 Amazon 博客中的适用于 EC2 Auto Scaling 和 EC2 机群的基于属性的实例类型选择

注意事项

使用基于属性的实例类型选择时需要考虑以下几点:

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

  • 默认情况下,您将 Auto Scaling 组的所需容量值设置为实例的数量。在使用基于属性的实例类型选择时,您可以选择将所需容量类型指定为 vCPU 的数量或内存量。然后,在 Amazon EC2 Auto Scaling 启动实例时,它们的 vCPU 数量或内存量会计入您所需的容量中。在 Amazon EC2 Auto Scaling 控制台中创建您的组时,此设置将显示在 Configure group size and scaling policies(配置组大小和扩展策略)页面的 Group size(组大小)部分中。此功能是实例权重功能的有用替代。

  • 您可以预览符合计算要求的实例类型而无需启动它们,并在必要时调整要求。在 Amazon EC2 Auto Scaling 控制台中创建 Auto Scaling 组时,实例类型的预览将显示在 Choose instance launch options(选择实例启动选项)页面的 Preview matching instance types(预览匹配的实例类型)部分中。

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

了解价格保护

价格保护是一项功能,可以保护您的 Auto Scaling 组免受实例类型之间的极端价格差异影响。当您使用基于属性的实例类型选择创建新的 Auto Scaling 组或更新现有 Auto Scaling 组时,我们将默认启用价格保护。您可以选择为竞价型实例和按需型实例选择价格保护阈值,Amazon EC2 Auto Scaling 不会选择价格高于您指定阈值的实例类型。阈值代表您愿意支付的金额,其定义是高于基准的百分比,而不是绝对值。基准取决于具有指定属性的最便宜当前一代 M、C 或 R 实例类型的价格。如果您的属性与任何 M、C 或 R 实例类型都不匹配,我们将使用价格最低的实例类型。

如果您没有指定阈值,则默认使用以下阈值:

  • 对于按需型实例,价格保护阈值设置为 20%。

  • 对于竞价型实例,价格保护阈值设置为 100%。

要在 Amazon EC2 Auto Scaling 控制台中创建 Auto Scaling 组时更新这些值,请在 Choose instance launch options(选择实例启动选项)页面中,从 Additional instance attributes(额外实例属性)下拉列表选择所需的价格保护属性,然后在文本框中输入或选择属性值。您也可以随时更新这些值,其方法是从控制台编辑 Auto Scaling 组或使用 Amazon CLI 或 SDK 传递相关属性。

注意

如果您将 Desired capacity type(所需容量类型)设置为 vCPUs (vCPU) 或 Memory GiB(内存 GiB),则将根据单位 vCPU 价格或单位内存价格而不是单位实例价格来应用价格保护阈值。

先决条件

创建启动模板,其中包括启动 EC2 实例所需的参数,例如 Amazon Machine Image (AMI) 和安全组。有关更多信息,请参阅 为 Auto Scaling 组创建启动模板

验证您拥有使用启动模板所需的权限。使用启动模板时会检查您的 ec2:RunInstances 权限。如果启动模板指定了 IAM 角色,也会检查您的 iam:PassRole 权限。有关更多信息,请参阅 启动模板支持

使用基于属性的实例类型选择

完成以下步骤,创建使用基于属性的实例类型选择的 Auto Scaling 组。

先决条件 中所述,在开始之前,请确认您已创建启动模板。

验证启动模板尚未请求竞价型实例。

使用基于属性的实例类型选择(控制台)创建 Auto Scaling 组

  1. 打开 Amazon EC2 Auto Scaling 控制台:https://console.aws.amazon.com/ec2autoscaling/

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

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

  4. 选择启动模板或配置页面上,执行以下操作:

    1. Auto Scaling 组名称中,输入 Auto Scaling 组的名称。

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

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

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

  5. Choose instance launch options(选择实例启动选项)页面的 Network(网络)下方,为 VPC选择相应的 VPC。 Auto Scaling 组必须与您在启动模板中指定的安全组创建在相同的 VPC 中。

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

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

    注意

    如果您已在启动模板中使用基于属性的实例类型选择,则会自动填充您在您的启动模板中定义的设置,例如 vCPU 和内存。

    1. Specify instance attributes(指定实例属性)下,首先输入 vCPU 和内存要求。

      • vCPU:输入计算要求的最小 vCPU 数量和最大 vCPU 数量。选择 No minimum(无最小值)或 No maximum(无最大值)复选框以指示该方向没有限制。

      • Memory (MiB)(内存 (MiB)):为您的计算要求输入最小和最大存储容量(以 MiB 为单位)。选择 No minimum(无最小值)或 No maximum(无最大值)复选框以指示该方向没有限制。

    2. (可选)对于 Additional instance attributes(额外实例属性),选择 Add Attributes(添加属性)以更详细地表达您的计算要求。您在此处选择的属性和值进一步限制了可以启动哪些实例类型。有关支持属性的完整列表,请参阅 Amazon EC2 Auto Scaling API 参考中的实例要求

    3. 对于 Preview matching instance types(预览匹配的实例类型),请查看符合指定计算要求的实例类型,例如 vCPU、内存和存储。

      (可选)要排除实例类型,请选择要排除的实例类型,然后选择 Exclude selected instance types(排除选定的实例类型)。或者,对于 Additional instance attributes(额外实例属性),请选择 Add Attributes(添加属性)、Exclude instance types(排除实例类型),然后选择要排除的实例类型。

  8. Instance purchase options(实例购买选项) 下,根据需要更新购买选项,通过使用竞价型实例降低您的应用程序的成本。

    1. 对于 Instances distribution (实例分配),指定要为 Auto Scaling 组启动的按需型实例与竞价型实例的百分比。如果您的应用程序无状态、容错,并且可以处理中断的实例,则可以指定更高的竞价型实例百分比。

    2. 根据您是否选择启动竞价型实例,可以选中 Include On-Demand base capacity(包括按需基本容量)旁边的复选框,然后指定按需实型例必须达到的 Auto Scaling 组最小初始容量。超出基本容量的任何内容都使用百分比来确定要启动多少按需实例和 Spot 实例。

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

  10. 对于 Spot allocation strategy(竞价型分配策略),选择分配策略。建议您保留 Capacity optimized(优化容量)的默认设置。如果您不希望保留默认值,请选择 Lowest price (最低价格),然后输入为实现多样化所包括的最低价格 Spot 实例池数量。

  11. 对于 Capacity rebalance (容量再平衡),选择启用还是禁用容量再平衡。有关更多信息,请参阅 使用容量重新平衡来处理 Amazon EC2 竞价型实例中断

  12. 选择 Next(下一步) 两次以转至 Configure group size and scaling policies(配置组大小和扩展策略)页面。

    或者,您可接受其余默认值,然后选择 Skip to review (跳到审核)。

  13. (可选)在 Configure group size and scaling policies (配置组大小和扩展策略) 页面上,配置以下选项,然后选择 Next (下一步):

    1. 选择 Desired capacity type(所需容量类型)。支持 Units(单位)(默认值)、vCPUMemory GiB(内存 GiB)。

    2. Desired capacity(所需容量)输入您的 Auto Scaling 组的初始大小,然后根据需要更新 Minimum capacity(最小容量)和 Maximum capacity(最大容量)。有关更多信息,请参阅 为 Auto Scaling 组设置容量限制

    3. 要自动缩放 Auto Scaling 组的大小,请选择 Target tracking scaling policy(目标跟踪扩展策略),并按照说明操作。有关更多信息,请参阅目标跟踪扩展策略

    4. Instance scale-in protection(实例缩减保护)下,选择是否启用实例缩减保护。有关更多信息,请参阅 实例横向缩减保护

  14. (可选)要接收通知,请为 Add notification(添加通知)配置通知,然后选择 Next(下一步)。有关更多信息,请参阅在 Auto Scaling 组扩展时获取 Amazon SNS 通知

  15. (可选)要添加标签,请选择 Add tag(添加标签),为每个标签提供标签键和值,然后选择 Next(下一步)。有关更多信息,请参阅为 Auto Scaling 组和实例添加标签

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

示例:使用基于属性的实例类型选择创建 Auto Scaling 组 (Amazon CLI)

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

指定了以下实例属性:

  • VCpuCount – 实例类型的 vCPU 数量必须最少为 4 个,最多为 8 个。

  • 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": "capacity-optimized" } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 4, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

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

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

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: capacity-optimized MinSize: 0 MaxSize: 100 DesiredCapacity: 4 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

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

限制

  • 您只能为使用启动模板的 Auto Scaling 组配置基于属性的实例类型选择。

  • 如果您现有的 Auto Scaling 组并计划用所需的实例属性替换实例类型,则按需分配策略必须为 lowest-price。要使用 prioritized 分配策略,您必须继续手动添加实例类型并确定其优先级。此外,您的竞价型分配策略必须是 capacity-optimizedlowest-price。要使用 capacity-optimized-prioritized 分配策略,您必须手动添加实例类型并确定其优先级。