使用容量預留機群 - 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": [] }