本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用叢集自動擴展自動管理 Amazon ECS 容量
Amazon ECS 可管理在您的叢集註冊的 Amazon EC2 執行個體的擴展。這稱為 Amazon ECS 叢集自動擴展。當您建立 Amazon ECS Amazon EC2 Auto Scaling 群組容量提供者時,您可以開啟受管擴展。然後,您可以為此 Amazon EC2 Auto Scaling 群組中的執行個體使用率設定目標百分比 (targetCapacity)。Amazon ECS 會為您的 Amazon EC2 Auto Scaling 群組建立兩個自訂 CloudWatch 指標和目標追蹤擴展政策。Amazon ECS 接著會根據任務使用的資源使用率來管理縮減與橫向擴充動作。
對於與叢集相關聯的每個 Amazon EC2 Auto Scaling 群組容量提供者,Amazon ECS 會建立和管理下列資源:
-
低指標值 CloudWatch 警示
-
高指標值 CloudWatch 警示
-
目標追蹤擴展政策
注意
Amazon ECS 會建立目標追蹤擴展政策,並將其連接至 Amazon EC2 Auto Scaling 群組。若要更新目標追蹤擴展政策,請更新容量提供者受管擴展設定,而不是直接更新擴展政策。
如果關閉受管擴展或解除容量提供者與叢集的關聯,Amazon ECS 會移除 CloudWatch 指標和目標追蹤擴展政策資源。
Amazon ECS 使用以下指標來判定要採取的動作:
CapacityProviderReservation-
特定容量提供者正在使用的容器執行個體的百分比。Amazon ECS 會產生此指標。
Amazon ECS 將
CapacityProviderReservation值設定為 0-100 之間的數字。Amazon ECS 使用以下公式來表示 Amazon EC2 Auto Scaling 群組中剩餘容量的比例。之後,Amazon ECS 會將指標發佈到 CloudWatch。如需有關指標計算方式的詳細資訊,請參閱 Deep Dive on Amazon ECS Cluster Auto Scaling。 CapacityProviderReservation = (number of instances needed) / (number of running instances) x 100 DesiredCapacity-
Amazon EC2 Auto Scaling 群組的容量。此指標不會發布至 CloudWatch。
之後,Amazon ECS 會在 AWS/ECS/ManagedScaling 命名空間中將 CapacityProviderReservation 指標發佈到 CloudWatch。CapacityProviderReservation 指標會導致發生下列其中一個動作:
CapacityProviderReservation值等於targetCapacity-
Amazon EC2 Auto Scaling 群組不需要向內擴展或向外擴展。已達到目標使用率百分比。
CapacityProviderReservation值大於targetCapacity-
有更多任務使用比您的
targetCapacity百分比高的容量百分比。CapacityProviderReservation指標增加的值會導致相關聯的 CloudWatch 警示採取動作。此警示會更新 Amazon EC2 Auto Scaling 群組DesiredCapacity的值。Amazon EC2 Auto Scaling 群組使用此值來啟動 EC2 執行個體,然後向叢集註冊它們。當
targetCapacity的預設值為 100% 時,新任務會在橫向擴展期間處於PENDING狀態,因為執行個體上沒有可用容量來執行任務。新執行個體向 ECS 註冊後,這些任務將在新執行個體上開始執行。 CapacityProviderReservation值小於targetCapacity-
使用容量百分比低於
targetCapacity的百分比的任務更少,並且至少有一個可以終止的執行個體。CapacityProviderReservation指標減少的值會導致相關聯的 CloudWatch 警示採取動作。此警示會更新 Amazon EC2 Auto Scaling 群組DesiredCapacity的值。Amazon EC2 Auto Scaling 群組使用此值來終止 EC2 容器執行個體,然後從叢集取消註冊它們。Amazon EC2 Auto Scaling 群組遵循群組終止政策,以判斷在縮減事件期間先終止的執行個體。此外,它還可以避免開啟執行個體縮減保護設定的執行個體。如果您開啟受管終止保護,叢集自動擴展可以管理哪些執行個體具有執行個體縮減保護設定。如需有關受管終止保護的詳細資訊,請參閱 控制 Amazon ECS 終止的執行個體。如需 Amazon EC2 Auto Scaling 群組如何終止執行個體的詳細資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的控制哪些 Amazon EC2 Auto Scaling 執行個體在縮減期間終止。 Amazon EC2 Auto Scaling
使用叢集自動擴展時應考慮以下事項:
-
請勿變更或管理與容量提供者相關聯的 Amazon EC2 Auto Scaling 群組所需的容量,其具有 Amazon ECS 管理以外的任何擴展政策。
-
當 Amazon ECS 從 0 個執行個體橫向擴充時,會自動啟動 2 個執行個體。
-
Amazon ECS 會將
AWSServiceRoleForECS服務連結 IAM 角色用於 AWS Auto Scaling 代表您呼叫 所需的許可。如需詳細資訊,請參閱使用 Amazon ECS 的服務連結角色。 -
搭配 Amazon EC2 Auto Scaling 群組使用容量提供者時,建立容量提供者的使用者、群組或角色需要
autoscaling:CreateOrUpdateTags許可。這是因為當 Amazon ECS 與容量提供者建立關聯時,會將標籤新增至 Amazon EC2 Auto Scaling 群組。重要
請確定您使用的任何工具都不會從 Amazon EC2 Auto Scaling 群組中移除
AmazonECSManaged標籤。如果已移除此標籤,則 Amazon ECS 無法管理擴展。 -
叢集自動擴展不會修改群組的 MinimumCapacity (容量下限) 或 MaximumCapacity (容量上限)。為了讓群組進行橫向擴展,MaximumCapacity (容量上限) 必須大於零。
-
開啟 Amazon EC2 Auto Scaling (受管擴展) 時,容量提供者只能同時連線到一個叢集。如果容量提供者已關閉受管擴展,您可以將其關聯到多個叢集。
-
當受管擴展關閉時,容量提供者不會縮減或橫向擴展。您可以使用容量提供者策略在容量提供者之間平衡您的任務。
-
就容量而言,
binpack策略是最有效率的策略。 -
當目標容量小於 100% 時,在置放策略中,
binpack策略的有限順序必須高於spread策略。這可防止容量提供者橫向擴充,直至每個任務都有專用執行個體或達到限制為止。
開啟叢集自動擴展
您可以使用主控台或 AWS CLI啟用叢集自動擴展。
當您使用主控台建立使用 EC2 容量提供者的叢集時,Amazon ECS 會代表您建立 Amazon EC2 Auto Scaling 群組並設定目標容量。如需詳細資訊,請參閱為 Amazon EC2 工作負載建立 Amazon ECS 叢集。
您也可以建立 Amazon EC2 Auto Scaling 群組,然後將其指派給叢集。如需詳細資訊,請參閱更新 Amazon ECS 容量提供者。
當您使用 時 AWS CLI,在您建立叢集之後
-
建立容量提供者之前,您需要建立 Amazon EC2 Auto Scaling 群組。如需詳細資訊,請參閱《Amazon EC2 Amazon EC2 Auto Scaling 使用者指南》中的 Amazon EC2 Auto Scaling 群組。 Amazon EC2 Auto Scaling
-
使用
put-cluster-capacity-providers修改叢集容量提供者。如需詳細資訊,請參閱啟用 Amazon ECS 叢集自動擴展。