使用多个启动模板 - Amazon EC2 Auto Scaling

使用多个启动模板

除了使用多种实例类型外,您还可以使用多种启动模板。

例如,假设您为计算密集型应用程序配置自动扩缩组,并希望混合 C5、C5a 和 C6g 实例类型。但是,C6g 实例具有基于 64 位 Arm 架构的 AWS 引力处理器,而 C5 和 C5a 实例在 64 位 Intel x86 处理器上运行。C5 实例和 C5a 实例的 AMI 都适用于彼此,但不适用于 C6g 实例。要解决此问题,请对 C6g 实例使用不同的启动模板。您仍然可以对 C5 和 C5a 实例使用相同的启动模板。

本节包含使用 AWS CLI 来执行与使用多个启动模板相关的任务的过程。目前,仅当您使用 AWS CLI 或 SDK 时此功能才可用,并且不可从控制台使用。

配置自动扩缩组以使用多个启动模板

您可以将自动扩缩组配置为使用多个启动模板,如以下示例所示。

要将新的自动扩缩组配置为使用多个启动模板 (AWS CLI)

使用 create-auto-scaling-group 命令。例如,以下命令将创建一个新的自动扩缩组。它指定 c5.largec5a.largec6g.large 实例类型,并为 c6g.large 实例类型定义新的启动模板,以确保使用适当的 AMI 启动 Arm 实例。Amazon EC2 Auto Scaling 使用实例类型顺序确定在满足按需容量时应首先使用哪一实例类型。

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

config.json 文件包含以下内容。

{ "AutoScalingGroupName":"my-asg", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateName":"my-launch-template-for-x86", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c6g.large", "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template-for-arm", "Version": "$Latest" } }, { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" } ] }, "InstancesDistribution":{ "OnDemandBaseCapacity": 1, "OnDemandPercentageAboveBaseCapacity": 50, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":3, "VPCZoneIdentifier":"subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags":[ ] }
将现有自动扩缩组配置为使用多个启动模板 (AWS CLI)

使用 update-auto-scaling-group 命令。例如,以下命令将名为 my-launch-template-for-arm 的自动扩缩组的 c6g.large 实例类型分配名为 my-asg 的启动模板。

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

config.json 文件包含以下内容。

{ "AutoScalingGroupName":"my-asg", "MixedInstancesPolicy":{ "LaunchTemplate":{ "Overrides":[ { "InstanceType":"c6g.large", "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template-for-arm", "Version": "$Latest" } }, { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" } ] } } }
将新的自动扩缩组配置为使用多个启动模板和基于属性的实例类型选择 (AWS CLI)

使用 create-auto-scaling-group 命令。例如,以下命令通过为搭载 ARM AMI 的 AWS Graviton 实例指定一个启动模板,并为搭载 x86 AMI 的基于 AMD 或 Intel 的实例再指定一个启动模板,从而创建新的自动扩缩组。然后,该命令两次使用基于属性的实例选择,从多种实例类型中为每个 CPU 架构选择实例。您可以使用 update-autoscaling-group 命令,向现有自动扩缩组添加类似配置。

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

config.json 文件包含以下内容。

{ "AutoScalingGroupName":"my-asg", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateName":"my-launch-template-for-arm", "Version":"$Latest" }, "Overrides":[ { "InstanceRequirements": { "VCpuCount": {"Min": 2}, "MemoryMiB": {"Min": 2048}, "CpuManufacturers": ["amazon-web-services"] } }, { "InstanceRequirements": { "VCpuCount": {"Min": 2}, "MemoryMiB": {"Min": 2048}, "CpuManufacturers": ["intel", "amd"] }, "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template-for-x86", "Version": "$Latest" } } ] }, "InstancesDistribution":{ "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "price-capacity-optimized" } }, "MinSize":1, "MaxSize":10, "DesiredCapacity":6, "VPCZoneIdentifier":"subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags":[ ] }
验证 Auto Scaling 组的启动模板

使用以下命令之一:

您可以在 AWS re:Post 上的 CloudFormation 模板中找到使用基于属性的实例类型选择来指定多个启动模板的示例。