使用屬性型執行個體類型選取範圍來建立混合執行個體群組 - Amazon EC2 Auto Scaling

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

使用屬性型執行個體類型選取範圍來建立混合執行個體群組

您可以指定一組描述運算需求的執行個體屬性,而不必手動選擇混合執行個體群組的執行個體類型。Amazon EC2 Auto Scaling 啟動執行個體時,Auto Scaling 群組使用的任何執行個體類型都必須與您所需的執行個體屬性相符。這就是所謂的屬性型執行個體類型選取範圍

此方法非常適合那些可以靈活處理其所使用的執行個體類型的工作負載和架構,例如容器、大數據和 CI/CD。

屬性型執行個體類型選取範圍具有以下優勢:

  • 競價型執行個體的最佳彈性 — Amazon EC2 Auto Scaling 可以從多種執行個體類型中進行選擇,以啟動競價型執行個體。這符合靈活處理執行個體類型的 Spot 最佳實務,讓 Amazon EC2 Spot 服務有更好的機會尋找和分配您所需的運算容量。

  • 輕鬆使用正確的執行個體類型 — 有這麼多可用的執行個體類型,因此尋找適合您工作負載的執行個體類型可能非常耗時。當您指定執行個體類型屬性時,執行個體類型會自動具有工作負載所需的屬性。

  • 自動使用新的執行個體類型 — Auto Scaling 群組可以在發行時使用新一代執行個體類型。當新一代執行個體類型符合您的需求並與您為 Auto Scaling 群組選擇的分配策略保持一致時,系統會自動使用這些執行個體類型。

屬性型執行個體類型選擇的運作方式

選取以屬性為基礎的執行個體類型,而不是提供特定執行個體類型的清單,而是提供執行個體所需的執行個體屬性清單,例如:

  • vCPU 計數 — 每個執行個體的 vCPUs 數目下限和上限。

  • 記憶體 — 每個執行個體 GiBs 的記憶體下限和最大記憶體。

  • 本機儲存區 — 是否使用 EBS 或執行個體儲存磁碟區作為本機儲存區。

  • 高載效能 — 是否使用 T 執行個體系列,包括 T4G、T3A、T3 和 T2 類型。

有許多選項可用於定義執行個體需求。如需每個選項和預設值的說明,請參閱 Amazon EC2 Auto Scaling API 參考InstanceRequirements中的。

當 Auto Scaling 群組需要啟動執行個體時,它會搜尋符合您指定屬性且可在該可用區域中使用的執行個體類型。然後配置策略會決定要啟動哪些相符的執行個體類型。根據預設,以屬性為基礎的執行個體類型選項會啟用價格保護功能,以防止 Auto Scaling 群組啟動超出預算閾值的執行個體類型。

根據預設,在設定 Auto Scaling 群組的所需容量時,會使用執行個體數作為測量單位,這表示每個執行個體都算作一個單位。

或者,您可以將所需容量的值設定為 vCPU 的數量或記憶體量。若要這麼做,請使用 AWS Management Console 或或 UpdateAutoScalingGroup API 作業中的DesiredCapacityType屬性中的 [所需容量類型] 下拉式欄位。CreateAutoScalingGroup然後,Amazon EC2 Auto Scaling 會啟動符合所需 vCPU 或記憶體容量所需的執行個體數量。例如,如果您使用 vCPUs 做為所需容量類型,並使用具有 2 個 vCPUs 的執行個體,則所需容量為 10 個 vCPUs 將啟動 5 個執行個體。這是一個可以替代執行個體加權的有用方案。

價格保護

透過價格保護,您可以指定願意為 Auto Scaling 群組啟動的 EC2 執行個體支付的最高價格。價格保護是一項功能,可防止 Auto Scaling 群組使用執行個體類型,即使它們恰好符合您指定的屬性,您也會認為這些執行個體類型過於昂貴。

價格保護預設為啟用,並且針對隨需執行個體和 Spot 執行個體具有單獨的價格閾值。當 Amazon EC2 Auto Scaling 需要啟動新執行個體時,任何價格超過相關閾值的執行個體類型都不會啟動。

按需價格保護

對於隨需執行個體,您可以將願意支付的最高隨需價格定義為高於識別的隨需價格的百分比。識別的隨需價格是指具有您指定屬性的最低價目前 C、M 或 R 執行個體類型的價格。

如果未明確定義隨需價格保護值,則會使用預設的隨需最高價格,比識別的隨需價格高出 20%。

現貨價格保護

根據預設,Amazon EC2 Auto Scaling 會自動套用最佳競價型執行個體價格保護,以一致地從各種執行個體類型中進行選取。您也可以自行手動設定價格保護。但是,讓 Amazon EC2 Auto Scaling 為您執行此操作,可以提高 Spot 容量滿足的可能性。

您可以使用下列其中一個選項手動指定價格保護。如果您手動設定價格保護,我們建議您使用第一個選項。

  • 已識別隨需價格的百分比 — 識別的隨需價格是指具有您指定屬性的最低價目前 C、M 或 R 執行個體類型的價格。

  • 高於已識別的現貨價格的百分比 — 識別的現貨價格是指具有指定屬性的當前 C、M 或 R 執行個體類型最低價格的價格。我們不建議使用此選項,因為現貨價格可能會波動,因此您的價格保護閾值也可能會波動。

自訂價格保障

您可以在 Amazon EC2 自 Auto Scaling 主控台或使用 AWS CLI 或開發套件自訂價格保護閾值。

  • 在主控台中,使用其他執行個體屬性中的隨需價格保護和競價型價格保護設定。

  • InstanceRequirements結構中,若要指定隨需執行個體價格保護閾值,請使用OnDemandMaxPricePercentageOverLowestPrice屬性。若要指定競價型執行個體價格保護閾值,請使用MaxSpotPriceAsPercentageOfOptimalOnDemandPriceSpotMaxPricePercentageOverLowestPrice屬性。

如果您將 [想要的容量類型] (DesiredCapacityType) 設定為 vCPUs記憶體 GiB,則價格保護會根據每個 vCPU 或每個記憶體價格而非每個執行個體價格套用。

您也可以關閉價格保護。若要指出沒有價格保護閾值,請指定較高的百分比值,例如999999

注意

如果目前的 C、M 或 R 執行個體類型都沒有符合您指定的屬性,價格保護仍然適用。找不到相符項目時,識別的價格是來自最低價目前一代執行個體類型的價格,或是與您的屬性相符的最低價格上一代執行個體類型失敗。

必要條件

建立具有屬性型執行個體類型選項的混合執行個體群組 (主控台)

請遵循以下程序,使用屬性型執行個體類型選取範圍來建立混合執行個體群組。為了協助您有效率地完成這些步驟,我們會略過某些選用的區段。

對於大多數一般用途的工作負載來說,只需指定所需的 vCPU 和記憶體數量就已足夠。對於進階使用案例,您可以指定儲存類型、網路介面、CPU 製造商和加速器類型等屬性。

若要檢閱混合執行個體群組的最佳作法,請參閱設定概觀

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

  2. 在畫面上方的導覽列中,選擇您用來建立啟動範本的相同 AWS 區域 。

  3. 選擇建立 Auto Scaling 群組

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

  5. 若要選擇您的啟動範本,請執行以下操作:

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

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

    3. 確認您的啟動範本支援您打算使用的所有選項,然後選擇 Next (下一步)。

  6. 選擇執行個體啟動選項頁面上,請執行以下操作:

    1. 對於 Instance type requirements (執行個體類型需求),選擇 Override launch template (覆寫啟動範本)。

      注意

      如果您選擇的啟動範本已包含一組執行個體屬性 (例如 vCPU 和記憶體),則會顯示執行個體屬性。這些屬性會新增至 Auto Scaling 群組屬性,您隨時可從 Amazon EC2 Auto Scaling 主控台更新這些屬性。

    2. Specify instance attributes (指定執行個體屬性) 下,首先輸入您的 vCPU 和記憶體需求。

      • 對於 vCPUs,輸入所需的 vCPU 數量下限和上限。若要指定無限制,請選取 No minimum (無下限)、No maximum (無上限),或兩者。

      • 對於 Memory (GiB) (記憶體 (GiB)),輸入所需記憶體數量的下限和上限。若要指定無限制,請選取 No minimum (無下限)、No maximum (無上限),或兩者。

    3. (選用) 對於 Additional instance attributes (其他執行個體屬性),您可以選擇性地指定一或多個屬性,以更詳細地表達您的運算需求。每個額外屬性都會將進一步的限制新增至您的請求。

    4. 展開「預覽相符的執行個體類型」以檢視具有您指定屬性的執行個體類型。

    5. 執行個體購買選項下的執行個體分佈,分別指定群組要以隨需執行個體和 Spot 執行個體啟動的百分比。如果您的應用程式無狀態、可容錯並且可以處理被中斷的執行個體,則您可以指定較高的 Spot 執行個體百分比。

    6. (選用) 當您指定 Spot 執行個體的百分比時,可以選取包含隨需基本容量,然後指定 Auto Scaling 群組初始容量中應以隨需執行個體履行的數量下限。超過基本容量的項目會使用 Instances distribution (執行個體分佈) 設定來決定啟動多少隨需執行個體和 Spot 執行個體。

    7. Allocation strategies (分配策略) 下,On-Demand allocation strategy (隨需分配策略) 會自動選取 Lowest price (最低價格),且無法對其進行變更。

    8. 對於 Spot allocation strategy (Spot 分配策略),選擇分配策略。依預設會選取最佳化的價格容量。預設情況下會隱藏 Lowest price (最低價格),只有在您選擇 Show all strategies (顯示所有策略) 時才會顯示。如果您選擇最低價格,請輸入最低價格集區的數量,以分散在不同的最低價格集區

    9. 針對容量重新平衡,選擇要啟用或是停用容量重新平衡。當 Spot 執行個體因 Spot 中斷而即將終止時,可使用容量重新平衡來自動回應。如需詳細資訊,請參閱 使用容量重新平衡來處理 Amazon EC2 Spot 中斷

    10. Network (網路) 下,對於 VPC,選擇 VPC。Auto Scaling 群組必須與您在啟動範本中指定的安全群組建立在同一個 VPC 中。

    11. 對於可用區域和子網路,請選擇指定 VPC 中的一個或多個子網路。在多個可用區域中,請使用子網路,以獲得高可用性。如需詳細資訊,請參閱 選擇 VPC 子網路時的注意事項

    12. 選擇下一步下一步

  7. 針對設定群組大小和擴展政策步驟,請執行以下操作:

    1. 若要以執行個體以外的單位來量測所需容量,應為群組大小所需容量類型選擇適當的選項。支援 Units (單位)、vCPUMemory GiB (記憶體 GiB)。根據預設,Amazon EC2 Auto Scaling 會指定 Units (單位),其會轉譯為執行個體數目。

    2. 所需容量為 Auto Scaling 群組的初始大小。

    3. 擴展區段的擴展限制下,如果所需容量的新值大於所需容量下限所需容量上限,則所需容量上限會自動增加到新的所需容量值。您可視需要變更這些限制。如需詳細資訊,請參閱 設定 Auto Scaling 群組的擴展限制

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

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

使用以屬性為基礎的執行個體類型選取建立混合例證群組 ()AWS CLI

使用命令列建立混合執行個體群組

請使用以下其中一個命令:

範例組態

若要使用 AWS CLI建立具有屬性型執行個體類型選取範圍的 Auto Scaling 群組,請使用以下 create-auto-scaling-group 命令。

會指定以下執行個體屬性:

  • VCpuCount – 執行個體類型必須具有最少 4 個,最多 8 個的 vCPU。

  • MemoryMiB – 執行個體類型必須具有最少 16,384 MiB 的記憶體。

  • CpuManufacturers – 執行個體類型必須具有 Intel 製造的 CPU。

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

以下是範例 config.json 檔案。

{ "AutoScalingGroupName": "my-asg", "DesiredCapacityType": "units", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": {"Min": 4, "Max": 8}, "MemoryMiB": {"Min": 16384}, "CpuManufacturers": ["intel"] } }] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 50, "SpotAllocationStrategy": "price-capacity-optimized" } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 4, "DesiredCapacityType": "units", "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

要將所需容量的值設定為 vCPU 的數量或記憶體容量,請在檔案中指定 "DesiredCapacityType": "vcpu""DesiredCapacityType": "memory-mib"。預設所需的容量類型為 units,它將所需容量的值設定為執行個體數量。

或者,您可使用以下 create-auto-scaling-group 命令建立 Auto Scaling 群組。這將參考 YAML 檔案作為 Auto Scaling 群組的唯一參數。

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

以下是範例 config.yaml 檔案。

--- AutoScalingGroupName: my-asg DesiredCapacityType: units MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceRequirements: VCpuCount: Min: 2 Max: 4 MemoryMiB: Min: 2048 CpuManufacturers: - intel InstancesDistribution: OnDemandPercentageAboveBaseCapacity: 50 SpotAllocationStrategy: price-capacity-optimized MinSize: 0 MaxSize: 100 DesiredCapacity: 4 DesiredCapacityType: units VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

要將所需容量的值設定為 vCPU 的數量或記憶體容量,請在檔案中指定 DesiredCapacityType: vcpuDesiredCapacityType: memory-mib。預設所需的容量類型為 units,它將所需容量的值設定為執行個體數量。

預覽執行個體類型

您可以預覽符合運算需求的執行個體類型,而無需啟動它們,並根據需要調整您的需求。在 Amazon EC2 Auto Scaling 主控台中建立 Auto Scaling 群組時,執行個體類型的預覽會顯示在 Choose instance launch options (選擇執行個體啟動選項) 頁面的 Preview matching instance types (預覽相符執行個體類型) 中。

或者,您也可以使用或開發套件進行 Amazon EC2 GetInstanceTypesFromInstanceRequirementsAPI 呼叫來預覽執 AWS CLI 行個體類型。傳遞請求中的 InstanceRequirements 參數,使用您會用於建立或更新 Auto Scaling 群組的相同格式。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的預覽具有指定屬性的執行個體類型

若要進一步了解以屬性為基礎的執行個體類型選擇,請參閱部落格上的 EC2 Auto Scaling 和 EC2 叢集的屬性型執行個體類型選擇。 AWS

使用 AWS CloudFormation建立 Auto Scaling 群組時,您可以宣告屬性型執行個體類型選取範圍。如需詳細資訊,請參閱《AWS CloudFormation 使用者指南》中的 Auto scaling 範本程式碼片段一節。