使用 容量预留 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 容量预留

要开始使用容量预留,您可以在所需的可用区中创建容量预留。然后,您可以在预留容量中启动实例,实时查看其容量使用情况,以及根据需要增加或减少其容量。

默认情况下,容量预留自动将新实例与具有匹配属性(实例类型、平台和可用区)的运行中实例进行匹配。这意味着,任何具有匹配属性的实例都将自动在容量预留中运行。不过,您还可以将容量预留定位到特定工作负载。这使您可以明确控制允许哪些实例在预留容量中运行。

您可以指定预留如何结束。您可以选择取消 容量预留 或者在指定时间自动结束它。如果您指定结束时间,则容量预留在指定时间的一小时之内取消。例如,如果您指定“5/31/2019, 13:30:55”,则容量预留可确保在 2019 年 5 月 31 日的 13:30:55 到 14:30:55 之间结束。预留结束后,您无法再将实例定位到容量预留中。在预留容量中运行的实例继续运行,不会中断。如果定位到容量预留中的实例停止,在您删除其容量预留定位首选项或者将其配置为定位到其他容量预留之前,无法重新启动这些实例。

创建 容量预留

如果您创建容量预留的请求成功,则容量将立即可用。只要容量预留活动,该容量就为您预留,您可以随时在其中启动实例。如果容量预留处于开放状态,具有匹配属性的新实例和现有实例将会自动在容量预留的容量中运行。如果容量预留处于 targeted 状态,只有专门定位到其中的实例才能在预留容量中运行。

如果出现以下情况之一,创建容量预留的请求会失败:

  • Amazon EC2没有足够的容量来满足请求。请稍后重试、尝试不同的可用区或者尝试较小的请求。如果您的应用程序灵活地跨实例类型和大小,请尝试不同的实例属性。

  • 请求的数量超过选定实例系列的个按需型实例限制。增加该实例系列的个按需型实例限制,然后重试。有关更多信息,请参阅按需型实例限额

使用控制台创建容量预留
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 选择 容量预留 (容量预留),然后选择 Create 容量预留 (创建容量预留)

  3. 在“Create a 容量预留 (创建容量预留)”页面上的实例详细信息部分中,配置以下设置。您启动的实例的实例类型、平台和可用区必须与您在此处指定的实例类型、平台和可用区匹配,否则将不会应用容量预留。例如,如果开放的容量预留不匹配,则明确针对此容量预留的实例启动将失败。

    1. 实例类型 — 在预留容量中启动的实例类型。

    2. 启动 EBS 优化的实例 — 指定是否为 EBS 优化的实例预留容量。一些实例类型默认情况下会选中此选项。有关更多信息,请参阅Amazon EBS 优化的实例

    3. 平台 — 实例的操作系统。有关更多信息,请参阅支持的平台有关受支持的 Windows 平台的更多信息,请参阅 Amazon EC2 用户指南(适用于 Windows 实例)中的支持的平台

    4. 可用区 — 在其中预留容量的可用区。

    5. 租赁 — 指定要在共享硬件(默认)还是专用实例上运行。

    6. (可选置放群组 ARN — 要在其中创建容量预留的集群置放群组的 ARN。

      有关更多信息,请参阅集群置放群组中的容量预留

    7. Quantity (数量) – 为其预留容量的实例的数量。如果指定的数量超过了选定实例类型的剩余个按需型实例限制,将拒绝该请求。

  4. 预留详细信息部分中配置以下设置:

    1. 预留结束 — 选择以下选项之一:

      • 手动 — 容量将预留,直至您明确取消。

      • Specific time (特定时间) – 在指定的日期和时间自动取消容量预留。

    2. 实例资格 — 选择以下选项之一:

      • 开放 —(默认值)容量预留匹配任意具有匹配属性(实例类型、平台和可用区)的实例。如果您启动具有匹配属性的实例,则会自动将其放置到预留容量中。

      • targeted (定位) – 容量预留仅接受具有匹配属性(实例类型、平台和可用区)并明确针对预留的实例。

  5. 选择请求预留

使用 Amazon CLI 创建容量预留

使用 create-capacity-reservation 命令。有关更多信息,请参阅支持的平台有关受支持的 Windows 平台的更多信息,请参阅 Amazon EC2 用户指南(适用于 Windows 实例)中的支持的平台

例如,以下命令会创建一个容量预留,它将为 3 个在 m5.2xlarge 可用区中运行 Red Hat Enterprise Linux AMI 的 us-east-1a 实例保留容量。

aws ec2 create-capacity-reservation --instance-type m5.2xlarge --instance-platform Red Hat Enterprise Linux --availability-zone us-east-1a --instance-count 3

在现有 容量预留 中启动实例

启动实例时,可以指定在任意 open 容量预留中、特定容量预留中还是容量预留组中启动实例。您仅可在具有匹配属性(实例类型、平台和可用区)和充足容量的容量预留中启动实例。或者,您也可以将实例配置为避免在容量预留中运行,即使您拥有具有匹配属性和可用容量的 open 容量预留也是如此。

在容量预留中启动实例会将其可用容量减去所启动实例的数量。例如,如果您启动 3 个实例,容量预留的可用容量将减去 3。

使用控制台在现有容量预留中启动实例
  1. 按照步骤启动实例,但请在完成以下步骤以指定置放群组和容量预留的设置之后再启动实例。

  2. 展开高级详细信息,并执行以下操作:

    1. 对于置放群组,选择要在其中启动实例的集群置放群组。

    2. 对于 Capacity Reservation(容量预留),请选择以下选项之一,具体取决于容量预留的配置:

      • – 阻止实例在容量预留中启动。实例使用按需容量运行。

      • 开放 – 在具有匹配属性以及对于所选实例数具有足够容量的任意容量预留中启动实例。如果没有匹配的容量预留具有足够容量,实例使用按需容量。

      • 按 ID 定位 – 在选定的容量预留中启动实例。如果选定的容量预留没有足够的容量来运行所选数量的实例,实例启动将失败。

      • 按组定位 – 在所选容量预留组中任何具有匹配属性和可用容量的容量预留中启动实例。如果所选组中没有具有匹配属性和可用容量的容量预留,将会在按需容量中启动实例。

  3. Summary(摘要)面板中查看实例配置,然后选择 Launch instance(启动实例)。有关更多信息,请参阅使用新启动实例向导启动实例

使用 Amazon CLI 在现有容量预留中启动实例

使用 run-instances 命令并指定 --capacity-reservation-specification 参数。

以下示例在任意具有匹配属性和可用容量的开放容量预留中启动 t2.micro 实例。

aws ec2 run-instances --image-id ami-abc12345 --count 1 --instance-type t2.micro --key-name MyKeyPair --subnet-id subnet-1234567890abcdef1 --capacity-reservation-specification CapacityReservationPreference=open

以下示例在 t2.micro 容量预留中启动 targeted 实例:

aws ec2 run-instances --image-id ami-abc12345 --count 1 --instance-type t2.micro --key-name MyKeyPair --subnet-id subnet-1234567890abcdef1 --capacity-reservation-specification CapacityReservationTarget={CapacityReservationId=cr-a1234567}

以下示例在容量预留组中启动 t2.micro 实例:

aws ec2 run-instances --image-id ami-abc12345 --count 1 --instance-type t2.micro --key-name MyKeyPair --subnet-id subnet-1234567890abcdef1 --capacity-reservation-specification CapacityReservationTarget={CapacityReservationResourceGroupArn=arn:aws:resource-groups:us-west-1:123456789012:group/my-cr-group}

修改 容量预留

创建活动容量预留后,您可以更改它的属性。在某个容量预留过期后,或者您明确取消后,您无法对其进行修改。

修改容量预留时,您只能增加或减少数量以及更改释放容量的方式。您无法更改容量预留的实例类型、EBS 优化、平台、可用区或实例资格。如果您需要修改任意这些属性,我们建议您取消预留,然后使用所需属性创建新的预留。

如果指定的新数量超过了选定实例类型的剩余个按需型实例限制,更新将失败。

使用控制台修改容量预留
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 选择容量预留,选择要修改的容量预留,然后选择编辑

  3. 根据需要修改数量预留结束选项,然后选择保存更改

使用 Amazon CLI 修改容量预留

使用 modify-capacity-reservation 命令:

例如,以下命令将修改容量预留,使其为 8 个实例预留容量。

aws ec2 modify-capacity-reservation --capacity-reservation-id cr-1234567890abcdef0 --instance-count 8

修改实例的 容量预留 设置

您随时可以为已停止实例修改以下容量预留设置:

  • 在具有匹配属性(实例类型、平台和可用区)以及可用容量的任意 容量预留 上启动。

  • 在特定容量预留中启动实例。

  • 在容量预留组中任何具有匹配属性和可用容量的容量预留中启动

  • 阻止实例在容量预留中启动。

使用控制台修改实例的容量预留设置
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 选择实例并选择要修改的实例。停止实例(如果尚未停止)。

  3. 依次选择操作修改容量预留设置

  4. 对于容量预留,请选择下列选项之一:

    • 开放 — 在具有匹配属性以及对于所选实例数具有足够容量的任意容量预留中启动实例。如果没有匹配的容量预留具有足够容量,实例使用按需容量。

    • — 阻止实例在容量预留中启动。实例使用按需容量运行。

    • 指定容量预留 — 在选定的容量预留中启动实例。如果选定的容量预留没有足够的容量来运行所选数量的实例,实例启动将失败。

    • 指定容量预留 — 在所选容量预留组中任何具有匹配属性和可用容量的容量预留中启动实例。如果所选组中没有具有匹配属性和可用容量的容量预留,将会在按需容量中启动实例。

使用 Amazon CLI 修改实例的容量预留设置

使用 modify-instance-capacity-reservation-attributes 命令。

例如,以下命令会将实例的容量预留设置更改为 opennone

aws ec2 modify-instance-capacity-reservation-attributes --instance-id i-1234567890abcdef0 --capacity-reservation-specification CapacityReservationPreference=none|open

例如,以下命令会将实例修改为定位到特定容量预留。

aws ec2 modify-instance-capacity-reservation-attributes --instance-id i-1234567890abcdef0 --capacity-reservation-specification CapacityReservationTarget={CapacityReservationId=cr-1234567890abcdef0}

例如,以下命令会将实例修改为定位到特定容量预留组。

aws ec2 modify-instance-capacity-reservation-attributes --instance-id i-1234567890abcdef0 --capacity-reservation-specification CapacityReservationTarget={CapacityReservationResourceGroupArn=arn:aws:resource-groups:us-west-1:123456789012:group/my-cr-group}

查看 容量预留

容量预留可能具有以下几种状态:

  • active — 容量可供使用。

  • expired — 容量预留已在您预留请求中指定的日期和时间自动失效。预留容量不再可供您使用。

  • cancelled—容量预留 已取消。预留容量不再可供您使用。

  • pending — 容量预留请求已成功,但容量预配置仍待处理。

  • failed — 容量预留请求失败。请求可能由于无效的请求参数、容量限制或实例限制等约束条件失败。您可以查看 60 分钟内的失败请求。

注意

由于 Amazon EC2 API 遵循的最终一致性模型,创建容量预留后,控制台和 describe-capacity-reservations 响应最高会花费 5 分钟来表明容量预留处于 active 状态。在此期间,控制台和 describe-capacity-reservations 响应可能会表明容量预留位于 pending 状态。但是,容量预留可能已经可供使用,您可以尝试在其中启动实例。

使用控制台查看容量预留
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 选择容量预留并选择要查看的容量预留。

  3. 选择查看此预留已启动的实例

使用 Amazon CLI 查看容量预留

使用 describe-capacity-reservations 命令:

例如,以下命令会描述所有容量预留。

aws ec2 describe-capacity-reservations

输出示例。

{ "CapacityReservations": [ { "CapacityReservationId": "cr-1234abcd56EXAMPLE ", "EndDateType": "unlimited", "AvailabilityZone": "eu-west-1a", "InstanceMatchCriteria": "open", "Tags": [], "EphemeralStorage": false, "CreateDate": "2019-08-16T09:03:18.000Z", "AvailableInstanceCount": 1, "InstancePlatform": "Linux/UNIX", "TotalInstanceCount": 1, "State": "active", "Tenancy": "default", "EbsOptimized": true, "InstanceType": "a1.medium", "PlacementGroupArn": "arn:aws:ec2:us-east-1:123456789012:placement-group/MyPG" }, { "CapacityReservationId": "cr-abcdEXAMPLE9876ef ", "EndDateType": "unlimited", "AvailabilityZone": "eu-west-1a", "InstanceMatchCriteria": "open", "Tags": [], "EphemeralStorage": false, "CreateDate": "2019-08-07T11:34:19.000Z", "AvailableInstanceCount": 3, "InstancePlatform": "Linux/UNIX", "TotalInstanceCount": 3, "State": "cancelled", "Tenancy": "default", "EbsOptimized": true, "InstanceType": "m5.large" } ] }

取消 容量预留

如果不在需要预留容量,您可以随时取消容量预留。取消容量预留之后,该容量将立即释放,不再保留供您使用。

您可以取消空容量预留以及具有正在运行的实例的容量预留。如果您取消具有正在运行的实例的容量预留,这些实例将继续在容量预留之外正常运行并应用标准按需型实例费率;或者,如果您有匹配的 区域预留实例,则应用折扣费率。

取消容量预留之后,定位到其中的实例无法再启动。修改这些实例,使其定位到不同容量预留、启动到任意处于“开放”状态且具有匹配属性和充足容量的容量预留,或者避免将其启动到容量预留中。有关更多信息,请参阅修改实例的 容量预留 设置

使用控制台取消容量预留
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 选择容量预留,然后选择要取消的容量预留。

  3. 依次选择取消预留取消预留

使用 Amazon CLI 取消容量预留

使用 cancel-capacity-reservation 命令:

例如,以下命令会取消 ID 为 cr-1234567890abcdef0 的容量预留。

aws ec2 cancel-capacity-reservation --capacity-reservation-id cr-1234567890abcdef0