为实例类型指定不同的启动模板 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为实例类型指定不同的启动模板

Overrides 结构允许您为新的或现有 Auto Scaling 组定义单个实例类型的新启动模板。例如,如果实例类型的架构需要与该组其余部分不同的 AMI,则必须指定具有兼容 AMI 的启动模板。

假设您为计算密集型应用程序配置 Auto Scaling 组,并希望混合 C5、C5a 和 C6g 实例类型。但是,C6g 实例具有基于 64 位 Arm 架构的 Amazon 引力处理器,而 C5 和 C5a 实例在 64 位 Intel x86 处理器上运行。C5 实例的 AMI 适用于 C5a 实例,反之亦然,但不适用于 C6g 实例。Overrides 属性允许您为 C6g 实例包含不同的启动模板,同时对 C5 和 C5a 实例仍使用相同的启动模板。

注意

目前,仅当您使用 Amazon CLI 或 SDK 时此功能才可用,并且不可从控制台使用。

添加或更改实例类型的启动模板(Amazon CLI)

以下过程显示如何使用 Amazon CLI 配置 Auto Scaling 组,以便一个或多个实例类型使用与该组其余部分不同的启动模板。

创建和配置新的 Auto Scaling 组
  1. 创建一个配置文件,您可以在其中指定混合实例策略结构并包含 Overrides 结构。

    以下是采用 JSON 格式的示例配置文件的内容。它指定 c5.largec5a.largec6g.large 实例类型,并为 c6g.large 实例类型定义新的启动模板,以确保使用适当的 AMI 启动 Arm 实例。Amazon EC2 Auto Scaling 使用实例类型顺序确定在满足按需容量时应首先使用哪一实例类型。

    { "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":[ ] }
  2. 使用以下 create-auto-scaling-group 命令,引用 JSON 文件作为 Auto Scaling 组的唯一参数。

    aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json
更改现有 Auto Scaling 组中实例类型的启动模板
  • 通过传递 Overrides 结构,使用以下 update-auto-scaling-group 命令为实例类型指定不同的启动模板。

    进行此更改后,启动的任何新实例将基于新设置,但现有实例不受影响。为确保 Auto Scaling 组正在使用新设置,您可以通过启动实例刷新或使用最大实例生命周期功能来替换组中的所有实例。

    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" } ] } } }
验证 Auto Scaling 组的启动模板
  • 使用以下 describe-auto-scaling-groups 命令验证和查看当前指定的启动模板。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    以下为响应示例。

    { "AutoScalingGroups":[ { "AutoScalingGroupName":"my-asg", "AutoScalingGroupARN":"arn", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-0fb0e487336917fb2", "LaunchTemplateName":"my-launch-template-for-x86", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c6g.large", "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-09d958b8fb2ba5bcc", "LaunchTemplateName": "my-launch-template-for-arm", "Version": "$Latest" } }, { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":3, "Instances":[ { "InstanceId":"i-07c63168522c0f620", "InstanceType":"c5.large", "AvailabilityZone":"us-west-2c", "LifecycleState":"InService", "HealthStatus":"Healthy", "LaunchTemplate":{ "LaunchTemplateId":"lt-0fb0e487336917fb2", "LaunchTemplateName":"my-launch-template-for-x86", "Version":"1" }, "ProtectedFromScaleIn":false }, { "InstanceId":"i-0b7ff78be9896a2c2", "InstanceType":"c5.large", "AvailabilityZone":"us-west-2a", "LifecycleState":"InService", "HealthStatus":"Healthy", "LaunchTemplate":{ "LaunchTemplateId":"lt-0fb0e487336917fb2", "LaunchTemplateName":"my-launch-template-for-x86", "Version":"1" }, "ProtectedFromScaleIn":false }, { "InstanceId":"i-0c682c2ceae918bc0", "InstanceType":"c6g.large", "AvailabilityZone":"us-west-2b", "LifecycleState":"InService", "HealthStatus":"Healthy", "LaunchTemplate":{ "LaunchTemplateId":"lt-09d958b8fb2ba5bcc", "LaunchTemplateName":"my-launch-template-for-arm", "Version":"1" }, ... } ] }