使用容量保留在特定可用區域中保留容量 - Amazon EC2 Auto Scaling

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用容量保留在特定可用區域中保留容量

Amazon EC2 隨需容量保留可協助您在特定的可用區域中保留運算容量。若要開始使用容量預留,您可以在特定的可用區域中建立容量保留。然後,您可以使用預留容量啟動執行個體,檢視其容量使用率即時狀況,並視需要增加或減少其容量。

容量預留設定為 opentargeted。如果容量保留為 open 中,則具有相符屬性的所有新執行個體和現有執行個體都會使用容量保留的容量自動執行。如果容量預留為 targeted,則執行個體必須特別針對它使用預留容量執行。

本主題示範如何建立一個在 targeted 容量保留中啟動隨需執行個體的 Auto Scaling 群組。這讓您更好地控制何時使用特定的容量保留。

基本步驟為:

  1. 在具有相同執行個體類型、平台和執行個體數量的多個可用區域中建立容量保留。

  2. 使用 AWS Resource Groups 的群組產能預留。

  3. 利用與容量保留相同的可用區域,使用指定資源群組的啟動範本來建立 Auto Scaling 群組。

步驟 1:建立容量保留

第一個步驟是在即將部署 Auto Scaling 群組的每個可用區域中建立容量保留。

注意

您只能在第一次建立容量保留時建立 targeted 保留。

Console
建立容量保留
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 選擇 容量預留,接著選擇 Create 容量預留 (建立 容量預留)

  3. 建立容量保留頁面上,注意執行個體詳細資訊區段中的以下設定。您啟動之執行個體的類型、平台、和可用區域,必須與您在此指定的執行個體相符,否則無法套用於 容量預留。

    1. 對於執行個體類型,請選擇在預留容量中啟動的執行個體類型。

    2. 對於平台,請選擇執行個體的作業系統。

    3. 對於可用區域,請選擇您要預留容量的第一個可用區域。

    4. 對於總容量,請選擇您需要的執行個體數量。計算 Auto Scaling 群組所需的執行個體總數,除以您打算使用的可用區域數目。

  4. 對於容量保留詳細資訊下的容量保留結束方式,請選擇下列其中一種選項:

    • 在特定時間 — 在指定的日期和時間自動取消容量保留。

    • 手動 — 保留容量,直到您明確取消為止。

  5. 對於執行個體資格,請選擇目標:僅限以容量保留為目標的執行個體

  6. (選擇性) 對於標籤,請指定要與容量保留關聯的任何標籤。

  7. 選擇建立

  8. 記下新建立的容量保留的 ID。您需要它來設定容量保留群組。

為您的 Auto Scaling 群組想要啟用的每個可用區域重複此程序,僅變更可用區域選項的值。

AWS CLI
建立容量保留

使用下列create-capacity-reservation命令建立容量保留。取代 --availability-zone--instance-type--instance-platform--instance-count 的範例值。

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 範例

{ "CapacityReservation": { "CapacityReservationId": "cr-1234567890abcdef1", "OwnerId": "123456789012", "CapacityReservationArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", "InstanceType": "c5.xlarge", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "Tenancy": "default", "TotalInstanceCount": 3, "AvailableInstanceCount": 3, "EbsOptimized": false, "EphemeralStorage": false, "State": "active", "StartDate": "2023-07-26T21:36:14+00:00", "EndDateType": "unlimited", "InstanceMatchCriteria": "targeted", "CreateDate": "2023-07-26T21:36:14+00:00" } }

記下新建立的容量保留的 ID。您需要它來設定容量保留群組。

為您的 Auto Scaling 群組想要啟用的每個可用區域重複此命令,僅變更 --availability-zone 選項的值。

步驟 2:建立容量保留群組

完成建立「產能保留」後,您可以使用「 AWS Resource Groups」服務將它們分組在一起。 AWS Resource Groups 支援數種不同類型的群組,以供不同用途使用。Amazon EC2 使用特殊用途群組 (稱為服務連結資源群組) 來定位一組容量保留。若要與此服務連結資源群組互動,您可以使用 AWS CLI 或 SDK,但不能使用主控台。如需有關服務連結 Resource Groups 的詳細資訊,請參閱 《AWS Resource Groups 使用者指南》中的 Resource Groups 的服務組態

若要使用建立容量保留群組 AWS CLI

使用 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"]}]}'

以下是回應範例。

{ "Group": { "GroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group", "Name": "my-cr-group" }, "GroupConfiguration": { "Configuration": [ { "Type": "AWS::EC2::CapacityReservationPool" }, { "Type": "AWS::ResourceGroups::Generic", "Parameters": [ { "Name": "allowed-resource-types", "Values": [ "AWS::EC2::CapacityReservation" ] } ] } ], "Status": "UPDATE_COMPLETE" } }

記下該資源群組的 ARN。您需要它來設定 Auto Scaling 群組的啟動範本。

使用 AWS CLI將您的容量保留與新建立的群組相關聯

使用下列 group-resources 命令將容量保留與新建立的容量保留群組相關聯。對於 --resource-arns 選項,請使用其 ARN 指定容量保留。使用相關區域、您的帳戶 ID 以及您先前記下的保留 ID 來建構 ARN。在此範例中,ID 為 cr-1234567890abcdef1cr-54321abcdef567890 的保留容量將被一起分組在名為 my-cr-group 的群組中。

aws resource-groups group-resources \ --group my-cr-group \ --resource-arns \ arn:aws:ec2:region:account-id:capacity-reservation/cr-1234567890abcdef1 \ arn:aws:ec2:region:account-id:capacity-reservation/cr-54321abcdef567890

以下是回應範例。

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

如需修改或刪除資源群組的詳細資訊,請參閱 AWS Resource Groups API 參考

步驟 3:建立啟動範本

Console
建立啟動範本
  1. 前往網址 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格的 Instances (執行個體) 底下,選擇 Launch Templates (啟動範本)

  3. 選擇 Create launch template (建立啟動範本)。為初始版本的啟動範本輸入名稱並提供描述。

  4. Auto Scaling guidance (Auto Scaling 指引) 下,選取核取方塊。

  5. 建立啟動範本。選擇與您計劃使用的容量保留相符的 AMI 和執行個體類型,也可以選擇金鑰對、一個或多個安全群組以及執行個體的任何其他 EBS 磁碟區或執行個體儲存體。

  6. 展開進階詳細資訊,並執行下列動作:

    1. 對於容量保留,請選擇依群組分類的目標

    2. 對於容量保留 — 依群組分類的目標,請選擇您在上一節中建立的容量保留群組,然後選擇儲存

  7. 選擇 Create launch template (建立啟動範本)。

  8. 在確認頁面上,選擇 Create Auto Scaling group (建立 Auto Scaling 群組)。

AWS CLI
建立啟動範本

使用下列create-launch-template命令建立指定容量保留以特定資源群組為目標的啟動範本。取代 --launch-template-name 的範例值。將 c5.xlarge 取代為您在容量保留中使用的執行個體類型,並將 ami-0123456789EXAMPLE 取代為您要使用的 AMI ID。將 arn:aws:resource-groups:region:account-id:group/my-cr-group 取代為您在上一節一開始建立的資源群組的 ARN。

aws ec2 create-launch-template \ --launch-template-name my-launch-template \ --launch-template-data \ '{"InstanceType": "c5.xlarge", "ImageId": "ami-0123456789EXAMPLE", "CapacityReservationSpecification": {"CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:region:account-id:group/my-cr-group" } } }'

以下是回應範例。

{ "LaunchTemplate": { "LaunchTemplateId": "lt-0dd77bd41dEXAMPLE", "LaunchTemplateName": "my-launch-template", "CreateTime": "2023-07-26T21:42:48+00:00", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

步驟 4:建立 Auto Scaling 群組

Console

和平常一樣建立 Auto Scaling 群組,但是當您選擇 VPC 子網路時,請從每個可用區域中選擇符合您建立的 targeted 容量保留的子網路。接著當 Auto Scaling 群組在其中一個可用區域中啟動隨需執行個體時,執行個體將會在該可用區域的預留容量中執行。如果資源群組在滿足您想要的容量之前就已耗盡容量保留,我們會以一般隨需容量的形式啟動超出預留容量的任何項目。

建立簡易 Auto Scaling 群組
  1. 前往網址 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台,然後從導覽窗格中選擇 Auto Scaling 群組

  2. 在畫面頂端的導覽列上,選擇您建立啟動範本時所使用的相同 AWS 區域 項目。

  3. 選擇建立 Auto Scaling 群組

  4. 選擇啟動範本或組態頁面上,針對Auto Scaling 群組名稱,請輸入 Auto Scaling 群組的名稱。

  5. 針對啟動範本,選擇現有的啟動範本。

  6. 針對啟動範本版本,選擇 Auto Scaling 群組擴增時使用啟動範本的預設、最新或特定版本。

  7. 選擇執行個體啟動選項頁面上,略過執行個體類型需求區段,使用在啟動範本中指定的 EC2 執行個體類型。

  8. Network (網路) 下,對於 VPC,選擇 VPC。Auto Scaling 群組必須與您在啟動範本中指定的安全群組建立在同一個 VPC 中。如果您沒有在啟動範本中指定安全群組,則可以選擇與您的容量保留相同的可用區域中任何具有子網路的 VPC。

  9. 對於和可用區域和子網路,請根據容量保留所在的可用區域,從要包含的每個可用區域中選擇子網路。

  10. 選擇 Next (下一步) 兩次。

  11. 設定群組大小和擴展政策上,為所需容量輸入要啟動之執行個體的初始數量。當您將此數量變更為最小或最大容量限制以外的數值時,必須更新 Minimum capacity (最小容量)Maximum capacity (最大容量) 的數值。如需詳細資訊,請參閱 設定 Auto Scaling 群組的擴展限制

  12. 選擇 Skip to review (跳過以進行檢閱)。

  13. Review (檢閱) 頁面上,選擇 Create Auto Scaling group (建立 Auto Scaling 群組)。

AWS CLI
建立簡易 Auto Scaling 群組

使用下列指create-auto-scaling-group令,並指定啟動範本的名稱和版本做為--launch-template選項的值。取代 --auto-scaling-group-name--min-size--max-size--vpc-zone-identifier 的範例值。

針對 --availability-zones 選項,指定您建立容量保留的可用區域。例如,如果您的容量保留指定了 us-east-1aus-east-1b 可用區域,則您必須在相同的區域中建立 Auto Scaling 群組。接著當 Auto Scaling 群組在其中一個可用區域中啟動隨需執行個體時,執行個體將會在該可用區域的預留容量中執行。如果資源群組在滿足您想要的容量之前就已耗盡容量保留,我們會以一般隨需容量的形式啟動超出預留容量的任何項目。

aws autoscaling create-auto-scaling-group \ --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateName=my-launch-template,Version='1' \ --min-size 6 \ --max-size 6 \ --vpc-zone-identifier "subnet-5f46ec3b,subnet-0ecac448" \ --availability-zones us-east-1a us-east-1b

有關示例實現,請參閱以下示 AWS 例 GitHub 存儲庫中的 AWS CloudFormation 模板:https://github.com/aws-samples/ aws-auto-scaling-backed-by-on-demand-capacity-保留/

下列相關主題可能會幫助您了解容量保留。