使用叢集自動擴展自動管理 Amazon ECS容量 - Amazon Elastic Container Service

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

使用叢集自動擴展自動管理 Amazon ECS容量

Amazon ECS可以管理已註冊至叢集的 Amazon EC2執行個體擴展。這稱為 Amazon ECS叢集自動擴展。建立 Amazon ECS Auto Scaling 群組容量提供者時,您可以開啟受管擴展。然後,您可以為此 Auto Scaling 群組中的執行個體使用率設定目標百分比 (targetCapacity)。Amazon 會為您的 Auto Scaling 群組ECS建立兩個自訂 CloudWatch 指標和目標追蹤擴展政策。ECS 然後,Amazon 會根據任務使用的資源使用率來管理縮減和縮減動作。

對於與叢集相關聯的每個 Auto Scaling 群組容量提供者,Amazon 會ECS建立和管理下列資源:

  • 低指標值 CloudWatch 警示

  • 高指標值 CloudWatch 警示

  • 目標追蹤擴展政策

    注意

    Amazon 會ECS建立目標追蹤擴展政策,並將其連接至 Auto Scaling 群組。若要更新目標追蹤擴展政策,請更新容量提供者受管擴展設定,而不是直接更新擴展政策。

當您關閉受管擴展或取消容量提供者與叢集的關聯時,Amazon 會ECS移除 CloudWatch 指標和目標追蹤擴展政策資源。

Amazon ECS使用以下指標來決定要採取的動作:

CapacityProviderReservation

特定容量提供者正在使用的容器執行個體百分比。Amazon ECS會產生此指標。

Amazon ECS會將CapacityProviderReservation值設定為介於 0-100 之間的數字。Amazon ECS使用以下公式來表示 Auto Scaling 群組中剩餘容量的比例。然後,Amazon ECS 會將指標發佈至 CloudWatch。如需如何計算指標的詳細資訊,請參閱 Amazon ECS Cluster Auto Scaling 上的深度分析

CapacityProviderReservation = (number of instances needed) / (number of running instances) x 100
DesiredCapacity

Auto Scaling 群組的容量。此指標未發佈 CloudWatch。

Amazon ECS 會將CapacityProviderReservation指標發佈到 AWS/ECS/ManagedScaling 命名空間 CloudWatch 中的 。CapacityProviderReservation 指標會導致發生下列其中一個動作:

CapacityProviderReservation 值等於 targetCapacity

Auto Scaling 群組不需要橫向擴展或縮減。已達到目標使用率百分比。

CapacityProviderReservation 值大於 targetCapacity

有更多任務使用比您的 targetCapacity 百分比高的容量百分比。CapacityProviderReservation 指標的值增加會導致相關聯的 CloudWatch 警示作用。此警示會更新 Auto Scaling 群組的 DesiredCapacity 值。Auto Scaling 群組使用此值啟動EC2執行個體,然後向叢集註冊執行個體。

targetCapacity 的預設值為 100% 時,新任務會在橫向擴展期間處於 PENDING 狀態,因為執行個體上沒有可用容量來執行任務。在新的執行個體向 註冊後ECS,這些任務將在新的執行個體上啟動。

CapacityProviderReservation 值小於 targetCapacity

使用容量百分比低於 targetCapacity 的百分比的任務更少,並且至少有一個可以終止的執行個體。CapacityProviderReservation 指標的減少值會導致相關聯的 CloudWatch 警示作用。此警示會更新 Auto Scaling 群組的 DesiredCapacity 值。Auto Scaling 群組使用此值終止EC2容器執行個體,然後從叢集取消註冊它們。

Auto Scaling 群組遵循群組終止政策來確定在縮減事件期間首先終止哪些執行個體。此外,它還可以避免開啟執行個體縮減保護設定的執行個體。如果您開啟受管終止保護,叢集自動擴展可以管理哪些執行個體具有執行個體縮減保護設定。如需有關受管終止保護的詳細資訊,請參閱 控制 Amazon ECS終止的執行個體。如需 Auto Scaling 群組如何終止執行個體的詳細資訊,請參閱《Amazon Auto Auto Scaling 使用者指南》中的控制哪些 Auto Scaling 執行個體在縮減期間終止 EC2 Auto Scaling

使用叢集自動擴展時應考慮以下事項:

  • 請勿變更或管理 Auto Scaling 群組所需的容量,該群組與具有 Amazon ECS管理以外任何擴展政策的容量提供者相關聯。

  • 當 Amazon 從 0 個執行個體向外ECS擴展時,會自動啟動 2 個執行個體。

  • Amazon ECS會將AWSServiceRoleForECS服務連結IAM角色用於 AWS Auto Scaling 代表您呼叫 所需的許可。如需詳細資訊,請參閱使用 Amazon 的服務連結角色 ECS

  • 將容量提供者與 Auto Scaling 群組搭配使用時,建立容量提供者的使用者、群組或角色需要 autoscaling:CreateOrUpdateTags 許可。這是因為當 Amazon 與容量提供者建立關聯時,會將標籤ECS新增至 Auto Scaling 群組。

    重要

    確保您使用的任何工具不會將 AmazonECSManaged 標籤從 Auto Scaling 群組中移除。如果移除此標籤,Amazon ECS將無法管理擴展。

  • 叢集自動擴展不會修改群組MaximumCapacityMinimumCapacity或 。若要讓群組向外擴展, 的值MaximumCapacity必須大於零。

  • 當自動擴展 (受管擴展) 開啟時,一個容量提供者一次只能連接到一個叢集。如果容量提供者已關閉受管擴展,您可以將其關聯到多個叢集。

  • 當受管擴展關閉時,容量提供者不會縮減或橫向擴展。您可以使用容量提供者策略在容量提供者之間平衡您的任務。

  • binpack 就容量而言,策略是最有效率的策略。

  • 當目標容量低於 100% 時,置放策略需要使用binpack策略,而spread策略的順序不會高於binpack策略。這可防止容量提供者在每項任務都有專用執行個體或達到限制之前向外擴展。

開啟叢集自動擴展

您可以使用 主控台或 開啟叢集自動擴展 AWS CLI。

當您使用主控台建立EC2啟動類型的叢集時,Amazon 會代表您ECS建立 Auto Scaling 群組並設定目標容量。如需詳細資訊,請參閱為 Amazon EC2啟動類型建立 Amazon ECS叢集

您也可以建立 Auto Scaling 群組,然後將其指派給叢集。如需詳細資訊,請參閱更新 Amazon ECS容量提供者

當您使用 時 AWS CLI,在您建立叢集之後

  1. 建立容量提供者前,您需要建立 Auto Scaling 群組。如需詳細資訊,請參閱《Amazon Auto Scaling 使用者指南》中的 Auto Scaling 群組 EC2 Auto Scaling

  2. 使用 put-cluster-capacity-providers 修改叢集容量提供者。如需詳細資訊,請參閱開啟 Amazon ECS叢集自動擴展