本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用基于属性的实例类型选择创建混合实例组
您可以指定一组描述您的计算要求的实例属性,而不必手动为混合实例组选择实例类型。当 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 EC2 Auto Scaling 控制台中创建 Auto Scaling 组时,实例类型的预览将显示在 Choose instance launch options(选择实例启动选项)页面的 Preview matching instance types(预览匹配的实例类型)部分中。
或者,您可以使用Amazon CLI或软件开发工具包调用 Amazon EC2 GetInstanceTypesFromInstanceRequirementsAPI 来预览实例类型。在请求中传递 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 控制台中创建自动扩缩组时,您可以更新这些值。在选择实例启动选项页面上,从其他实例属性下拉列表中选择所需的价格保护属性。然后,在文本框中键入或选择该属性的值。
您也可以稍后通过从控制台编辑自动扩缩组或使用 Amazon CLI 或开发工具包更新这些值。
如果您将 Desired capacity type(所需容量类型)设置为 vCPUs (vCPU) 或 Memory GiB(内存 GiB),则将根据单位 vCPU 价格或单位内存价格而不是单位实例价格来应用价格保护阈值。
先决条件
-
创建启动模板。有关更多信息,请参阅为 Auto Scaling 组创建启动模板:
-
验证启动模板尚未请求竞价型实例。
创建混合实例组(控制台)
使用以下步骤通过基于属性的实例类型选择来创建混合实例组。为了帮助您高效地完成这些步骤,我们跳过了一些可选部分。
对于大多数通用工作负载,只需指定所需的 vCPU 和内存数量即可。对于高级使用案例,您可以指定存储类型、网络接口、CPU 制造商和加速器类型等属性。
要查看设置混合实例组的步骤,请参阅设置概述。
创建混合实例组
访问 https://console.aws.amazon.com/ec2/
,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。 -
在屏幕顶部的导航栏中,选择在创建启动模板时使用的同一 Amazon Web Services 区域。
-
选择 Create an Auto Scaling group (创建 Auto Scaling 组)。
-
在选择启动模板或配置页面上,对于 Auto Scaling 组名称,输入 Auto Scaling 组的名称。
-
要选择启动模板,请执行以下操作:
-
对于启动模板,请选择现有启动模板。
-
对于 Launch template version(启动模板版本),选择 Auto Scaling 组在扩展时使用启动模板的默认版本、最新版本还是特定版本。
-
验证您的启动模板是否支持您计划使用的所有选项,然后选择下一步。
-
-
在选择实例启动选项页面上,执行以下操作:
-
对于 Instance type requirements(实例类型要求),请选择 Override launch template(覆盖启动模板)。
注意
如果您选择的启动模板已经包含一组实例属性(例如 vCPU 和内存),则会显示实例属性。这些属性已添加到 Auto Scaling 组属性中,您可以随时从 Amazon EC2 Auto Scaling 控制台对其进行更新。
-
在 Specify instance attributes(指定实例属性)下,首先输入 vCPU 和内存要求。
-
vCPU:输入计算要求的最小 vCPU 数量和最大 vCPU 数量。或者,选中 “无最小值” 或 “无最大值” 复选框。
-
内存 (GiB):输入您的计算要求的最小和最大内存量(以 GiB 为单位)。或者,选中 “无最小值” 或 “无最大值” 复选框。
-
-
(可选)对于 Additional instance attributes(额外实例属性),选择 Add Attributes(添加属性)以更详细地表达您的计算要求。您在此处选择的属性和值进一步定义了可以启动的实例类型。有关支持的属性,请参阅 InstanceRequirementsAmazon EC2 Auto Scaling API 参考中的。
-
对于 Preview matching instance types(预览匹配的实例类型),请查看符合指定计算要求的实例类型,例如 vCPU、内存和存储。
-
在实例购买选项下,对于实例分布,指定要作为按需实例和竞价型实例启动的组的百分比。如果您的应用程序是无状态的、容错的,并且可以处理被中断的实例,则可以指定更高的竞价型实例百分比。
-
(可选)当您为竞价型实例指定百分比时,请选择包括按需基本容量,然后指定按需实例必须满足的 Auto Scaling 组初始容量的最小数量。超出基本容量的任何内容都使用百分比来确定要启动多少按需实例和 Spot 实例。
-
在 Allocation strategies(分配策略)下,已为 On-Demand allocation strategy(按需分配策略)自动选择 Lowest price(最低价格),无法对其进行更改。
-
对于 Spot allocation strategy(竞价型分配策略),选择分配策略。默认情况下,将选择 Price capacity optimized(价格容量优化)。默认情况下,将隐藏 Lowest price(最低价格),仅在您选择 Show all strategies(显示所有策略)时才会出现。如果您选择 “最低价格”,请输入最低价格池的数量,以便在价格最低的资金池中进行分散。
-
对于容量重新平衡,请选择启用还是禁用容量重新平衡。当您的竞价型实例因竞价中断而接近终止时,使用容量再平衡功能自动做出响应。有关更多信息,请参阅使用容量重新平衡来处理 Amazon EC2 竞价型实例中断:
-
在 Network (网络) 下,对于 VPC,选择相应的 VPC。自动扩缩组必须与您在启动模板中指定的安全组创建在相同的 VPC 中。
-
对于 Availability Zones and subnets (可用区和子网),选择指定 VPC 中的一个或多个子网。可以在多个可用区中使用子网以提供高可用性。有关更多信息,请参阅选择 VPC 子网时的注意事项:
-
选择 “下一步”、“下一步”。
-
-
对于 Configure group size and scaling policies(配置组大小和扩缩策略)步骤,请执行以下操作:
-
要以实例以外的单位衡量所需容量,请为所需容量类型选择相应的选项。支持 Units(单位)、vCPUs(vCPU 数)和 Memory GiB(内存 GiB)。默认情况下,Amazon EC2 Auto Scaling 指会定 Units(单位),这会用实例数量来衡量。
-
为 Desired capacity(所需容量)输入您的 Auto Scaling 组的初始大小,然后根据需要更新 Minimum capacity(最小容量)和 Maximum capacity(最大容量)。有关更多信息,请参阅为 Auto Scaling 组设置容量限制:
-
-
选择 Skip to review (跳转以查看)。
-
在 Review(查看)页面上,选择 Create Auto Scaling group(创建 Auto Scaling 组)。
创建混合实例组 (Amazon CLI)
使用命令行创建混合实例组
使用以下命令之一:
-
create-auto-scaling-group (Amazon CLI)
-
New-as () AutoScalingGroup Amazon Tools for Windows PowerShell
示例配置
要使用创建具有基于属性的实例类型选择的 Auto Scaling 组Amazon CLI,请使用以下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": "price-capacity-optimized" } }, "MinSize":, "MaxSize":
0
, "DesiredCapacity":
100
, "DesiredCapacityType": "units", "VPCZoneIdentifier": "
4
subnet-5ea0c127
,subnet-6194ea3b
,subnet-c934b782
" }
要将所需容量的值设置为 vCPU 的数量或内存量,请在文件中指定 "DesiredCapacityType": "vcpu"
或 "DesiredCapacityType": "memory-mib"
。默认的所需容量类型为 units
,它将所需容量的值设置为实例数。
或者,您可以使用以下create-auto-scaling-group
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
要将所需容量的值设置为 vCPU 的数量或内存量,请在文件中指定 DesiredCapacityType: vcpu
或 DesiredCapacityType: memory-mib
。默认的所需容量类型为 units
,它将所需容量的值设置为实例数。
相关资源
要详细了解基于属性的实例类型选择,请参阅 Amazon 博客中的适用于 EC2 Auto Scaling 和 EC2 机群的基于属性的实例类型选择
在使用创建 Auto Scaling 组时,您可以声明基于属性的实例类型选择。Amazon CloudFormation有关更多信息,请参阅《Amazon CloudFormation用户指南》的 “自动缩放模板片段” 部分中的示例片段。