使用容量预留机群
开始前的准备工作
在创建容量预留机群之前:
容量预留机群状态
容量预留机群可以处于以下某种状态:
-
submitted
— 容量预留机群请求已提交,且 Amazon EC2 正在准备创建容量预留。 -
modifying
— 容量预留机群正在修改中。在修改完成之前,机群将保持这一状态。 -
active
— 容量预留机群已实现其总目标容量,并正在尝试维持此容量。机群会保持这一状态,直到其被修改或删除。 -
partially_fulfilled
— 容量预留机群已部分实现其总目标容量。Amazon EC2 容量不足,无法实现总目标容量。机群正在尝试异步实现其总目标容量。 -
expiring
— 容量预留机群已到达结束日期,目前正在到期的过程中。其中一个或多个容量预留可能仍处于活动状态。 -
expired
— 容量预留机群已到达结束日期。机群及其容量预留已过期。机群无法创建新的容量预留。 -
cancelling
— 容量预留机群正在取消过程中。其中一个或多个容量预留可能仍处于活动状态。 -
cancelled
— 容量预留机群已手动取消。机群及其容量预留已被取消,而且机群无法创建新的容量预留。 -
failed
— 容量预留机群未能为指定的实例类型预留容量。
创建容量预留机群
当您创建容量预留机群时,它会自动为机群请求中指定的实例类型创建容量预留,最多可达到指定的总目标容量。容量预留机群为其预留容量的实例数取决于总目标容量和您在请求中指定的实例类型权重。有关更多信息,请参阅 实例类型权重 和 总目标容量。
创建机群时,您必须指定要使用的实例类型以及每种实例类型的优先级。有关更多信息,请参阅 分配策略 和 实例类型优先级。
注意
Amazon Web Services ServiceRoleForEC2CapacityReservationFleet 服务相关角色在您首次创建容量预留机群时将在您的账户中自动创建。有关更多信息,请参阅将服务相关角色用于容量预留实例集。
目前,容量预留机群仅支持 open
实例匹配条件。
您只能使用命令行创建容量预留机群。
要创建容量预留机群
使用 create-capacity-reservation-fleet AWS CLI 命令。
$
aws ec2 create-capacity-reservation-fleet \ --total-target-capacitycapacity_units
\ --allocation-strategy prioritized \ --instance-match-criteria open \ --tenancydedicated|default
\ --end-dateyyyy-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
}
示例
$
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 命令。
$
aws ec2 describe-capacity-reservation-fleets \ --capacity-reservation-fleet-idscr_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"
}
]
}
示例
$
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
。
$
aws ec2 modify-capacity-reservation-fleet \ --capacity-reservation-fleet-idcr_fleet_ids
\ --total-target-capacitycapacity_units
\ --end-dateyyyy-mm-ddThh:mm:ss.000Z
\ --remove-end-date
预期输出
{
"Return": true
}
示例:修改总目标容量
$
aws ec2 modify-capacity-reservation-fleet \ --capacity-reservation-fleet-id crf-01234567890abcedf \ --total-target-capacity 160
示例:修改结束日期
$
aws ec2 modify-capacity-reservation-fleet \ --capacity-reservation-fleet-id crf-01234567890abcedf \ --end-date 2021-07-04T23:59:59.000Z
示例:删除结束日期
$
aws ec2 modify-capacity-reservation-fleet \ --capacity-reservation-fleet-id crf-01234567890abcedf \ --remove-end-date
输出示例
{
"Return": true
}
取消容量预留机群
当您不再需要容量预留机群及其预留的容量时,可以取消它。当您取消机群时,机群状态将更改为 cancelled
,且其不能再创建新的容量预留。此外,机群中的所有单个容量预留都将被取消,之前在预留容量中运行的实例将继续以共享容量正常运行。
您只能使用命令行取消容量预留机群。
要取消容量预留机群
使用 cancel-capacity-reservation-fleet AWS CLI 命令。
$
aws ec2 cancel-capacity-reservation-fleets \ --capacity-reservation-fleet-idscr_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
"
}
]
}
]
}
示例:成功取消
$
aws ec2 cancel-capacity-reservation-fleets \ --capacity-reservation-fleet-ids crf-abcdef01234567890
输出示例
{
"SuccessfulFleetCancellations": [
{
"CurrentFleetState": "cancelling",
"PreviousFleetState": "active",
"CapacityReservationFleetId": "crf-abcdef01234567890"
}
],
"FailedFleetCancellations": []
}