使用 A EC2 uto Scaling 进行可中断的容量预留 - Amazon A EC2 uto Scaling

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

使用 A EC2 uto Scaling 进行可中断的容量预留

可中断容量预留是指 AWS 组织内按需容量预留所有者借给您的备用容量。这些预留适用于可中断的工作负载,因为容量所有者可以随时收回容量,发出中断通知 2 分钟,之后实例就会终止。有关可中断容量预留及其工作原理的概述,请参阅 A mazon EC2 用户指南中的可中断容量预留

首先,您可以通过从账户中的任何按需容量预留中分配未使用的容量来创建可中断的预留。接下来,创建启动模板,指定可中断容量预留 ID 和相应的市场类型。最后,创建您的 Auto Scaling 群组以使用您创建的启动模板。

注意
  • 可中断容量预留不支持混合实例组。

  • 可中断的容量预留将显示在您的账户中,新属性interruptible设置为。true

操作指导方针

以下是在 Auto Scaling 组中使用可中断容量预留时应遵循的基本操作准则。

  • 从可中断的容量预留中启动的实例可以在容量回收后提前 2 分钟通知终止。设计您的应用程序以应对正常关机。

  • Amazon EC2 会在终止实例前 2 分钟发送 EventBridge 通知。虽然 Auto Scaling 不会自动对这些事件做出反应,但您可以设置自定义自动化以响应中断通知。

  • 当实例因容量回收而终止时,Auto Scaling 的运行状况检查器将检测终止情况,并根据您的组的配置自动启动替换实例。

  • 指向启动模板的特定版本,而不是$Default$Latest版本,以确保一致性。

注意

回收可中断容量预留实例时,您的 Auto Scaling 组的扩展活动将显示:taken out of service in response to an Amazon EC2 health check that indicated it had been terminated or stopped。Auto Scaling 将尝试替换实例,方法与替换任何未通过运行状况检查的实例的方式相同。

在启动模板中指定可中断容量预留

要创建针对您的 Auto Scaling 组的特定可中断容量预留的启动模板,请使用以下方法之一:

Console
在启动模板中指定可中断容量预留(控制台)
  1. 打开亚马逊 EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在顶部导航栏上,选择可中断容量预留 AWS 区域 的位置。

  3. 在导航窗格中的实例下,选择启动模板

  4. 选择创建启动模板,然后创建启动模板。根据需要包括 AMI 的 ID、实例类型和任何其他启动模板设置。

  5. 展开高级详细信息部分以查看高级设置。

  6. 对于购买选项,选择可中断容量预留

  7. 在 “容量预留” 中,选择 “按 ID 定位”,然后在 “容量预留-按 ID 定位” 中,选择现有可中断容量预留的容量预留的容量预留 ID。

  8. 完成后,选择创建启动模板

有关使用启动模板创建自动扩缩组的帮助,请参阅使用启动模板创建 Auto Scaling 组

AWS CLI
在启动模板中指定可中断容量预留 ()AWS CLI

使用以下create-launch-template命令创建用于指定现有可中断容量预留 ID 的启动模板。将每个用户输入占位符替换为您自己的信息。

aws ec2 create-launch-template --launch-template-name my-template-for-interruptible-cr \ --version-description AutoScalingVersion1 --region us-east-2 \ --launch-template-data file://config.json
提示

如果此命令引发错误,请确保已将 AWS CLI 本地版本更新到最新版本。

config.json 的内容:

{ "ImageId": "ami-04d5cc9b88example", "InstanceType": "t3.nano", "SecurityGroupIds": [ "sg-903004f88example" ], "KeyName": "MyKeyPair", "InstanceMarketOptions": { "MarketType": "interruptible-capacity-reservation" }, "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationId": "cr-02168da1478b509e0" } } }

下面是示例输出:

{ "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b724example", "LaunchTemplateName": "my-template-for-interruptible-cr", "CreateTime": "2023-10-27T15:12:44.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

您可以使用以下describe-launch-template-versions命令验证与启动模板关联的可中断容量预留 ID:

aws ec2 describe-launch-template-versions --launch-template-names my-template-for-interruptible-cr \ --region us-east-2
Auto Scaling 组级别配置

您可以选择在 Auto Scaling 组级别指定容量预留设置以覆盖启动模板设置:

  • 容量预留首选项capacity-reservations-only仅支持可中断的容量预留。不支持该capacity-reservations-first首选项。

  • 目标规范:您可以在组级别指定不同的可中断容量预留 ID 来覆盖启动模板设置。

限制

  • 可中断容量预留不支持混合实例策略。

  • 您必须在启动模板中指定正确的市场类型 (interruptible-capacity-reservation) 以及容量预留 ID。