本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本教學課程將逐步引導您完成必須執行的所有步驟,以便您的 EC2 Fleet 啟動隨需執行個體至 targeted
容量預留。
您將會了解到如何設定機群,以在啟動隨需執行個體時先使用 targeted
隨需容量預留。您也會了解到如何設定機群,以便機群在隨需目標容量總計超過可用的未使用容量預留數目時,使用指定的分配策略來選取要在其中啟動剩餘目標容量的執行個體集區。
EC2 Fleet 組態
本教學課程機群設定如下所示:
-
目標容量:10 個隨需執行個體
-
總計未使用的
targeted
容量保留:6 (小於機群的隨需目標容量:10 個隨需執行個體) -
容量保留集區數目:2 (
us-east-1a
和us-east-1b
) -
每個集區的容量保留數目:3
-
隨需分配策略:
lowest-price
(當未使用的容量保留數目小於隨需目標容量時,機群會根據隨需分配策略決定要用來啟動剩餘隨需容量的集區。)請注意,您也可以使用
prioritized
分配策略,而不使用lowest-price
分配策略。
若要按照 targeted 容量預留來啟動隨需執行個體,必須執行以下幾個步驟:
步驟 1:建立容量預留
使用 create-capacity-reservationus-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-groupmy-cr-group
。如需為何必須建立資源群組的相關資訊,請參閱 使用容量保留功能來保留 EC2 機群中的隨需容量。
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
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-templatetargeted
容量預留。因此,啟動範本資料會指定容量預留以特定資源群組為目標。在此範例中,啟動範本會命名為 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-versions
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-1a
和 us-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
}