教學課程:使用目標容量預留啟動隨需執行個體 - Amazon Elastic Compute Cloud

教學課程:使用目標容量預留啟動隨需執行個體

本教學課程將逐步引導您完成必須執行的所有步驟,以便您的 EC2 Fleet 啟動隨需執行個體至 targeted 容量預留。

您將會了解到如何設定機群,以在啟動隨需執行個體時先使用 targeted 隨需容量預留。您也會了解到如何設定機群,以便機群在隨需目標容量總計超過可用的未使用容量預留數目時,使用指定的分配策略來選取要在其中啟動剩餘目標容量的執行個體集區。

EC2 Fleet 組態

本教學課程使用的機群組態如下:

  • 目標容量:10 個隨需執行個體

  • 總計未使用的 targeted 容量預留:6 (小於機群的隨需目標容量:10 個隨需執行個體)

  • 容量預留集區數目:2 (us-east-1aus-east-1b)

  • 每個集區的容量預留數目:3

  • 隨需分配策略:lowest-price (當未使用的容量預留數目小於隨需目標容量時,機群會根據隨需分配策略決定要用來啟動剩餘隨需容量的集區。)

    請注意,您也可以使用 prioritized 分配策略,而不使用 lowest-price 分配策略。

步驟 1:建立容量預留

使用 create-capacity-reservation 命令來建立容量預留,其中三個用於 us-east-1a,另外三個用於 us-east-1b。除了可用區域之外,容量預留的其他屬性皆相同。

us-east-1a 中的 3 個容量預留

aws ec2 create-capacity-reservation \ --availability-zone us-east-1a\ --instance-type c5.xlarge\ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted

最後產生的容量預留 ID 範例

cr-1234567890abcdef1

us-east-1b 中的 3 個容量預留

aws ec2 create-capacity-reservation \ --availability-zone us-east-1b\ --instance-type c5.xlarge\ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted

最後產生的容量預留 ID 範例

cr-54321abcdef567890

步驟 2:建立容量預留資源群組

使用 resource-groups 服務和 create-group 命令來建立容量預留資源群組。在此範例中,資源群組會命名為 my-cr-group。如需為何必須建立資源群組的相關資訊,請參閱 針對 隨需執行個體 使用 容量預留

aws resource-groups create-group \ --name my-cr-group \ --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'

步驟 3:將容量預留新增至容量預留資源群組

使用 resource-groups 服務和 group-resources 命令,將您在步驟 1 中建立的容量預留新增至容量預留資源群組。請注意,您必須參考隨需容量預留的 ARN。

aws resource-groups group-resources \ --group my-cr-group \ --resource-arns \ arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1 \ arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890

範例輸出

{ "Failed": [], "Succeeded": [ "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" ] }

(選用) 步驟 4:檢視資源群組中的容量預留

使用 resource-groups 服務和 list-group-resources 命令可選擇性地描述資源群組以檢視其容量預留。

aws resource-groups list-group-resources --group my-cr-group

範例輸出

{ "ResourceIdentifiers": [ { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1" }, { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" } ] }

步驟 5:建立啟動範本,此範本指定容量預留以特定資源群組為目標

使用 create-launch-template 命令來建立啟動範本,使用此範本來指定要使用的容量預留。在此範例中,機群會使用新增至資源群組的 targeted 容量預留。因此,啟動範本資料會指定容量預留以特定資源群組為目標。在此範例中,啟動範本會命名為 my-launch-template

aws ec2 create-launch-template \ --launch-template-name my-launch-template \ --launch-template-data \ '{"ImageId": "ami-0123456789example", "CapacityReservationSpecification": {"CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" } } }'

(選用) 步驟 6:描述啟動範本

使用 describe-launch-template 命令可選擇性地描述啟動範本以檢視其組態。

aws ec2 describe-launch-template-versions --launch-template-name my-launch-template

範例輸出

{ "LaunchTemplateVersions": [ { "LaunchTemplateId": "lt-01234567890example", "LaunchTemplateName": "my-launch-template", "VersionNumber": 1, "CreateTime": "2021-01-19T20:50:19.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Admin", "DefaultVersion": true, "LaunchTemplateData": { "ImageId": "ami-0947d2ba12ee1ff75", "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" } } } } ] }

步驟 7:建立 EC2 Fleet

建立 EC2 Fleet,該機群會指定將啟動之執行個體的組態資訊。下列 EC2 Fleet 組態僅顯示此範例的相關組態。啟動範本 my-launch-template 是您在步驟 5 中建立的啟動範本。有兩個執行個體集區,每個集區內的執行個體類型相同 (c5.xlarge),但使用不同的可用區域 (us-east-1aus-east-1b)。執行個體集區的價格相同,因為定價是根據區域界定,而不是根據可用區域界定的。總目標容量為 10,預設目標容量類型為 on-demand。隨需分配策略為 lowest-price。容量預留的使用策略為 use-capacity-reservations-first

注意

機群類型必須為 instant。其他機群類型不支援 use-capacity-reservations-first

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1a" }, { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1b" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 10, "DefaultTargetCapacityType": "on-demand" }, "OnDemandOptions": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } }, "Type": "instant" }

使用上述組態建立 instant 機群之後,會啟動以下 10 個執行個體以符合目標容量:

  • 會先使用容量預留來啟動 6 個隨需執行個體,如下所示:

    • 3 個隨需執行個體已在 us-east-1a 中啟動至 3 個 c5.xlarge targeted 容量預留

    • 3 個隨需執行個體已在 c5.xlarge 中啟動至 3 個 targeted us-east-1b 容量預留

  • 為了滿足目標容量,會根據隨需分配策略 (在本例中為 lowest-price) 使用一般隨需容量來啟動 4 個額外的隨需執行個體。不過,由於集區的價格相同 (因為價格是按區域而非可用區域計價),因此機群會使用任一個集區來啟動剩餘的 4 個隨需執行個體。

(選用) 步驟 8:檢視剩餘未使用的容量預留數目

啟動機群後,您也可以執行 describe-capacity-reservations,以查看還剩餘多少個未使用的容量預留。在此範例中,您應該會看到下列回應,其中顯示所有集區中的所有 容量預留 都已使用。

{ "CapacityReservationId": "cr-111", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-222", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 }