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

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

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

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

假设您为计算密集型应用程序配置 Auto Scaling 组,并希望包含 C5、C5a 和 C6g 实例类型的混合。但是,C6g 实例具有Amazon引力处理器基于 64 位臂架构,而 C5 和 C5a 实例在 64 位英特尔 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.large, 和c6g.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 组中实例类型的启动模板

  • 使用以下update-auto-scaling-group命令为实例类型指定不同的启动模板,方法是传递Overrides参数。

    进行此更改后,启动的任何新实例将基于新设置,但现有实例不受影响。为确保 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" }, ... } ] }