使用容量预留机群 - Amazon Elastic Compute Cloud

使用容量预留机群

开始前的准备工作

在创建容量预留机群之前:

  1. 确定您的工作负载所需的计算容量。

  2. 决定要使用的实例类型和可用区。

  3. 根据您的需求和首选项为每种实例类型分配优先级。有关更多信息,请参阅实例类型优先级

  4. 创建对您的工作负载有意义的容量加权系统。为每种实例类型分配权重并确定您的总目标容量。有关更多信息,请参阅 实例类型权重总目标容量

  5. 确定您是无限期需要容量预留还是仅在指定时间段内需要容量预留。

容量预留机群状态

容量预留机群可以处于以下某种状态:

  • submitted — 容量预留机群请求已提交,且 Amazon EC2 正在准备创建容量预留。

  • modifying — 容量预留机群正在修改中。在修改完成之前,机群将保持这一状态。

  • active — 容量预留机群已实现其总目标容量,并正在尝试维持此容量。机群会保持这一状态,直到其被修改或删除。

  • partially_fulfilled — 容量预留机群已部分实现其总目标容量。Amazon EC2 容量不足,无法实现总目标容量。机群正在尝试异步实现其总目标容量。

  • expiring — 容量预留机群已到达结束日期,目前正在到期的过程中。其中一个或多个容量预留可能仍处于活动状态。

  • expired — 容量预留机群已到达结束日期。机群及其容量预留已过期。机群无法创建新的容量预留。

  • cancelling — 容量预留机群正在取消过程中。其中一个或多个容量预留可能仍处于活动状态。

  • cancelled — 容量预留机群已手动取消。机群及其容量预留已被取消,而且机群无法创建新的容量预留。

  • failed — 容量预留机群未能为指定的实例类型预留容量。

创建容量预留机群

当您创建容量预留机群时,它会自动为机群请求中指定的实例类型创建容量预留,最多可达到指定的总目标容量。容量预留机群为其预留容量的实例数取决于总目标容量和您在请求中指定的实例类型权重。有关更多信息,请参阅 实例类型权重总目标容量

创建机群时,您必须指定要使用的实例类型以及每种实例类型的优先级。有关更多信息,请参阅 分配策略实例类型优先级

注意

AWSServiceRoleForEC2CapacityReservationFleet 服务相关角色在您首次创建容量预留机群时将在您的账户中自动创建。有关更多信息,请参阅将服务相关角色用于容量预留机群

目前,容量预留机群仅支持 open 实例匹配条件。

您只能使用命令行创建容量预留机群。

要创建容量预留机群

使用 create-capacity-reservation-fleet AWS CLI 命令。

C:\> aws ec2 create-capacity-reservation-fleet \ --total-target-capacity capacity_units \ --allocation-strategy prioritized \ --instance-match-criteria open \ --tenancy dedicated|default \ --end-date yyyy-mm-ddThh:mm:ss.000Z \ --instance-type-specifications file://instanceTypeSpecification.json

下面是 instanceTypeSpecification.json 的内容。

{ "InstanceType": "instance_type", "InstancePlatform":"platform", "Weight": instance_type_weight "AvailabilityZone":"availability_zone", "AvailabilityZoneId" : "az_id", "EbsOptimized": true|false, "Priority" : instance_type_priority }

预期输出。

{ "Status": "status", "TotalFulfilledCapacity": fulfilled_capacity, "CapacityReservationFleetId": "cr_fleet_id", "TotalTargetCapacity": capacity_units }

示例

C:\> aws ec2 create-capacity-reservation-fleet \ --total-target-capacity 24 \ --allocation-strategy prioritized \ --instance-match-criteria open \ --tenancy default \ --end-date 2021-12-31T23:59:59.000Z \ --instance-type-specifications file://instanceTypeSpecification.json

instanceTypeSpecification.json

[ { "InstanceType": "m5.xlarge", "InstancePlatform": "Linux/UNIX", "Weight": 3.0, "AvailabilityZone":"us-east-1a", "EbsOptimized": true, "Priority" : 1 } ]

输出示例。

{ "Status": "submitted", "TotalFulfilledCapacity": 0.0, "CapacityReservationFleetId": "crf-abcdef01234567890", "TotalTargetCapacity": 24 }

查看容量预留机群

您可以随时查看容量预留机群的配置和容量信息。查看机群还提供了有关机群内部各个容量预留的详细信息。

您只能使用命令行查看容量预留机群。

要查看容量预留机群

使用 describe-capacity-reservation-fleets AWS CLI 命令。

C:\> aws ec2 describe-capacity-reservation-fleets \ --capacity-reservation-fleet-ids cr_fleet_ids

预期输出

{ "CapacityReservationFleets": [ { "Status": "status", "EndDate": "yyyy-mm-ddThh:mm:ss.000Z", "InstanceMatchCriteria": "open", "Tags": [], "CapacityReservationFleetId": "cr_fleet_id", "Tenancy": "dedicated|default", "InstanceTypeSpecifications": [ { "CapacityReservationId": "cr1_id", "AvailabilityZone": "cr1_availability_zone", "FulfilledCapacity": cr1_used_capacity, "Weight": cr1_instance_type_weight, "CreateDate": "yyyy-mm-ddThh:mm:ss.000Z", "InstancePlatform": "cr1_platform", "TotalInstanceCount": cr1_number of instances, "Priority": cr1_instance_type_priority, "EbsOptimized": true|false, "InstanceType": "cr1_instance_type" }, { "CapacityReservationId": "cr2_id", "AvailabilityZone": "cr2_availability_zone", "FulfilledCapacity": cr2_used_capacity, "Weight": cr2_instance_type_weight, "CreateDate": "yyyy-mm-ddThh:mm:ss.000Z", "InstancePlatform": "cr2_platform", "TotalInstanceCount": cr2_number of instances, "Priority": cr2_instance_type_priority, "EbsOptimized": true|false, "InstanceType": "cr2_instance_type" }, ], "TotalTargetCapacity": total_target_capacity, "TotalFulfilledCapacity": total_target_capacity, "CreateTime": "yyyy-mm-ddThh:mm:ss.000Z", "AllocationStrategy": "prioritized" } ] }

示例

C:\> aws ec2 describe-capacity-reservation-fleets \ --capacity-reservation-fleet-ids crf-abcdef01234567890

输出示例

{ "CapacityReservationFleets": [ { "Status": "active", "EndDate": "2021-12-31T23:59:59.000Z", "InstanceMatchCriteria": "open", "Tags": [], "CapacityReservationFleetId": "crf-abcdef01234567890", "Tenancy": "default", "InstanceTypeSpecifications": [ { "CapacityReservationId": "cr-1234567890abcdef0", "AvailabilityZone": "us-east-1a", "FulfilledCapacity": 5.0, "Weight": 1.0, "CreateDate": "2021-07-02T08:34:33.398Z", "InstancePlatform": "Linux/UNIX", "TotalInstanceCount": 5, "Priority": 1, "EbsOptimized": true, "InstanceType": "m5.xlarge" } ], "TotalTargetCapacity": 5, "TotalFulfilledCapacity": 5.0, "CreateTime": "2021-07-02T08:34:33.397Z", "AllocationStrategy": "prioritized" } ] }

修改容量预留机群

您可以随时修改容量预留机群的总目标容量和日期。当您修改容量预留机群的总目标容量时,机群会自动创建新的容量预留,或者修改或取消机群中的现有容量预留以满足新的总目标容量。当您修改机群的结束日期时,所有单个容量预留的结束日期都会相应更新。

修改机群后,其状态将转换为 modifying。当机群处于 modifying 状态时,您无法尝试对其进行其他修改。

您无法修改容量预留机群使用的租赁、可用区、实例类型、实例平台、优先级或权重。如果您需要更改这些参数中的任何一个,您可能需要取消现有机群并创建具有所需参数的新机群。

您只能使用命令行修改容量预留机群。

要修改容量预留机群

使用 modify-capacity-reservation-fleet AWS CLI 命令。

注意

您不能在同一个命令中指定 --end-date--remove-end-date

C:\> aws ec2 modify-capacity-reservation-fleet \ --capacity-reservation-fleet-id cr_fleet_ids \ --total-target-capacity capacity_units \ --end-date yyyy-mm-ddThh:mm:ss.000Z \ --remove-end-date

预期输出

{ "Return": true }

示例:修改总目标容量

C:\> aws ec2 modify-capacity-reservation-fleet \ --capacity-reservation-fleet-id crf-01234567890abcedf \ --total-target-capacity 160

示例:修改结束日期

C:\> aws ec2 modify-capacity-reservation-fleet \ --capacity-reservation-fleet-id crf-01234567890abcedf \ --end-date 2021-07-04T23:59:59.000Z

示例:删除结束日期

C:\> aws ec2 modify-capacity-reservation-fleet \ --capacity-reservation-fleet-id crf-01234567890abcedf \ --remove-end-date

输出示例

{ "Return": true }

取消容量预留机群

当您不再需要容量预留机群及其预留的容量时,可以取消它。当您取消机群时,机群状态将更改为 cancelled,且其不能再创建新的容量预留。此外,机群中的所有单个容量预留都将被取消,之前在预留容量中运行的实例将继续以共享容量正常运行。

您只能使用命令行取消容量预留机群。

要取消容量预留机群

使用 cancel-capacity-reservation-fleet AWS CLI 命令。

C:\> aws ec2 cancel-capacity-reservation-fleets \ --capacity-reservation-fleet-ids cr_fleet_ids

预期输出

{ "SuccessfulFleetCancellations": [ { "CurrentFleetState": "state", "PreviousFleetState": "state", "CapacityReservationFleetId": "cr_fleet_id_1" }, { "CurrentFleetState": "state", "PreviousFleetState": "state", "CapacityReservationFleetId": "cr_fleet_id_2" } ], "FailedFleetCancellations": [ { "CapacityReservationFleetId": "cr_fleet_id_3", "CancelCapacityReservationFleetError": [ { "Code": "code", "Message": "message" } ] } ] }

示例:成功取消

C:\> aws ec2 cancel-capacity-reservation-fleets \ --capacity-reservation-fleet-ids crf-abcdef01234567890

输出示例

{ "SuccessfulFleetCancellations": [ { "CurrentFleetState": "cancelling", "PreviousFleetState": "active", "CapacityReservationFleetId": "crf-abcdef01234567890" } ], "FailedFleetCancellations": [] }