View a markdown version of this page

啟用容量重新平衡以主動取代具有風險的 Spot 執行個體 - Amazon EC2 Auto Scaling

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

啟用容量重新平衡以主動取代具有風險的 Spot 執行個體

您可以使用 AWS 管理主控台 或 AWS CLI 來啟用 Auto Scaling 群組的容量重新平衡。啟用容量重新平衡時,Amazon EC2 Auto Scaling 會嘗試主動取代群組中收到 EC2 執行個體重新平衡建議的 Spot 執行個體。

啟用容量重新平衡 (主控台)

您可以在建立或更新 Auto Scaling 群組時啟用或停用容量重新平衡。

啟用新 Auto Scaling 群組的容量重新平衡
  1. 前往網址 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台,然後從導覽窗格中選擇 Auto Scaling 群組。

  2. 選擇 Create Auto Scaling group (建立 Auto Scaling 群組)。

  3. 在步驟 1:選擇啟動範本或組態中,輸入 Auto Scaling 群組的名稱,選擇啟動範本,然後選擇下一步以繼續下一個步驟。

  4. 在步驟 2:選擇執行個體啟動選項中,針對執行個體類型需求,選擇建立混合執行個體群組的設定。這包括可啟動的執行個體類型、執行個體購買選項,以及 Spot 和隨需執行個體的配置策略。依預設,這些設定並未設定。要進行設定,您必須選擇 Override launch template (覆寫啟動範本)。如需有關建立混合執行個體群組的詳細資訊,請參閱 具有多種執行個體類型和購買選項的 Auto Scaling 群組。

  5. 在網路下,視需要選擇選項。驗證您想要使用的子網路是否位於不同的可用區域中。

  6. 在配置策略區段下,選擇 Spot 的配置策略。勾選或清除容量重新平衡核取方塊,即可啟用或停用容量重新平衡。您唯有在執行個體購買選項區段中請求了要作為 Spot 執行個體啟動的 Auto Scaling 群組的百分比時,才能看到這個選項。

  7. 建立 Auto Scaling 群組。

  8. (選用) 視需要新增生命週期關聯。如需詳細資訊,請參閱將生命週期掛鉤新增至 Auto Scaling 群組。

啟用或停用現有 Auto Scaling 群組的容量重新平衡
  1. 前往網址 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台,然後從導覽窗格中選擇 Auto Scaling 群組。

  2. 選取 Auto Scaling 群組旁的核取方塊。頁面底部會開啟一個分割窗格。

  3. 在 Details (詳細資訊) 索引標籤上,依次選擇 Allocation strategies (分配策略)、Edit (編輯)。

  4. 在配置策略區段下,選取或清除容量重新平衡下的核取方塊,以啟用或停用容量重新平衡。

  5. 選擇更新。

啟用容量重新平衡 (AWS CLI)

下列範例示範如何使用 AWS CLI 來啟用和停用容量重新平衡。

搭配以下參數使用 create-auto-scaling-group 或 update-auto-scaling-group 命令:

  • --capacity-rebalance / --no-capacity-rebalance – 指出是否啟用容量重新平衡的布林值。

在呼叫 create-auto-scaling-group 命令前,您需要設定供 Auto Scaling 群組使用的啟動範本名稱。如需詳細資訊,請參閱 為 Auto Scaling 群組建立啟動範本。

注意

以下程序說明如何使用 JSON 或 YAML 格式組態檔案。如果您使用 AWS CLI 版本 1,則必須指定 JSON 格式的組態檔案。如果您使用 AWS CLI 版本 2,您可以指定 YAML 或 JSON 格式的組態檔案。

要建立和設定新的 Auto Scaling 群組
  • 使用下列 create-auto-scaling-group 命令建立新的 Auto Scaling 群組並啟用容量重新平衡。此命令參考 JSON 檔案作為 Auto Scaling 群組的唯一參數。

    aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

    如果您尚未擁有指定混合執行個體政策的 CLI 組態檔案,請建立一個。

    在組態檔案中,將以下命令列新增至最上層 JSON 物件。

    { "CapacityRebalance": true }

    以下是範例 config.json 檔案。

    { "AutoScalingGroupName": "my-asg", "DesiredCapacity": 12, "MinSize": 12, "MaxSize": 15, "CapacityRebalance": true, "MixedInstancesPolicy": { "InstancesDistribution": { "OnDemandBaseCapacity": 0, "OnDemandPercentageAboveBaseCapacity": 25, "SpotAllocationStrategy": "price-capacity-optimized" }, "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] } }, "TargetGroupARNs": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-alb-target-group/943f017f100becff", "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }
要建立和設定新的 Auto Scaling 群組
  • 使用下列 create-auto-scaling-group 命令建立新的 Auto Scaling 群組並啟用容量重新平衡。此命令參考 YAML 檔案作為 Auto Scaling 群組的唯一參數。

    aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

    將下命令列新增至 YAML 格式組態檔案。

    CapacityRebalance: true

    以下是範例 config.yaml 檔案。

    --- AutoScalingGroupName: my-asg DesiredCapacity: 12 MinSize: 12 MaxSize: 15 CapacityRebalance: true MixedInstancesPolicy: InstancesDistribution: OnDemandBaseCapacity: 0 OnDemandPercentageAboveBaseCapacity: 25 SpotAllocationStrategy: price-capacity-optimized LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large TargetGroupARNs: - arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-alb-target-group/943f017f100becff VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782
要啟用現有 Auto Scaling 群組的容量重新平衡
  • 使用下列 update-auto-scaling-group 命令來啟用容量重新平衡。

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --capacity-rebalance
驗證是否已為 Auto Scaling 群組啟用容量重新平衡
  • 使用下列 describe-auto-scaling-groups 命令來驗證是否已啟用容量重新平衡,並檢視詳細資訊。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    以下是回應範例。

    { "AutoScalingGroups": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", ... "CapacityRebalance": true } ] }
停用容量重新平衡

使用 update-auto-scaling-group 命令與 --no-capacity-rebalance 選項來停用容量重新平衡。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --no-capacity-rebalance

如需容量重新平衡的詳細資訊,請參閱 AWS 運算部落格上的使用適用於 Amazon EC2 Auto Scaling 的新容量重新平衡功能主動管理 Spot 執行個體生命週期。

如需 EC2 執行個體重新平衡建議的詳細資訊,請參閱《Amazon EC2 使用者指南》中的 EC2 執行個體重新平衡建議。 Amazon EC2

若要進一步了解生命週期關聯,請參閱下列資源。

限制

  • 只有在執行個體未受到縮減保護的情況下,Amazon EC2 Auto Scaling 才能取代接收重新平衡通知的執行個體。但是,縮減保護不會防止 Spot 中斷的終止。如需詳細資訊,請參閱使用執行個體縮減保護來控制執行個體終止。

  • 容量重新平衡的支援可在所有 AWS 區域 提供 Amazon EC2 Auto Scaling 的商業區域使用,中東 (阿拉伯聯合大公國) 區域除外。