本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過叢集自動擴展自動管理 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 會將
CapacityProviderReservation
值ECS設定為介於 0-100 之間的數字。Amazon ECS使用下列公式來表示 Auto Scaling 群組中剩餘容量的比例。然後,Amazon ECS 會將指標發佈至 CloudWatch。如需如何計算指標的詳細資訊,請參閱 Amazon ECS Cluster Auto Scaling 上的 Deep Dive。 CapacityProviderReservation = (number of instances needed) / (number of running instances) x 100
DesiredCapacity
-
Auto Scaling 群組的容量。此指標未發佈 CloudWatch。
Amazon ECS 會在AWS/ECS/ManagedScaling
命名空間 CloudWatch 中將指標發佈至 CapacityProviderReservation
。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 ECS會將
AWSServiceRoleForECS
服務連結IAM角色用於代表您呼叫所需的許可 AWS Auto Scaling 。如需詳細資訊,請參閱使用 Amazon 的服務連結角色 ECS。 -
將容量提供者與 Auto Scaling 群組搭配使用時,建立容量提供者的使用者、群組或角色需要
autoscaling:CreateOrUpdateTags
許可。這是因為當 Amazon 與容量提供者建立關聯時,會將標籤ECS新增至 Auto Scaling 群組。重要
確保您使用的任何工具不會將
AmazonECSManaged
標籤從 Auto Scaling 群組中移除。如果移除此標籤,Amazon ECS將無法管理擴展。 -
叢集自動擴展不會修改群組MaximumCapacity的 MinimumCapacity或 。若要讓群組橫向擴展, 的值MaximumCapacity必須大於零。
-
當自動擴展 (受管擴展) 開啟時,一個容量提供者一次只能連接到一個叢集。如果容量提供者已關閉受管擴展,您可以將其關聯到多個叢集。
-
當受管擴展關閉時,容量提供者不會縮減或橫向擴展。您可以使用容量提供者策略在容量提供者之間平衡您的任務。
-
就容量而言,此
binpack
策略是最有效率的策略。 -
當目標容量低於 100% 時,置放策略需要使用
binpack
策略,而spread
策略的順序不高於binpack
策略。這可避免容量提供者在每項任務有專用執行個體或達到限制之前向外擴展。