最佳化 Amazon ECS 叢集自動擴展 - Amazon Elastic Container Service

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

最佳化 Amazon ECS 叢集自動擴展

在 Amazon EC2 上執行 Amazon ECS 的客戶可以利用叢集自動擴展來管理 Amazon EC2 Auto Scaling 群組的擴展。透過叢集自動擴展,您可以設定 Amazon ECS 自動擴展 Auto Scaling 群組,並專注於執行任務。Amazon ECS 可確保 Auto Scaling 群組視需要縱向擴展,而不需要進一步介入。Amazon ECS 容量提供者可用來管理叢集中的基礎設施,確保有足夠的容器執行個體可滿足您的應用程式需求。若要了解叢集自動調整規模的運作方式,請參閱 Amazon ECS Cluster Auto Scaling 上的 Deep Dive

叢集自動擴展依賴與 Auto Scaling 群組的 CloudWatch 型整合來調整叢集容量。因此,它具有與 相關聯的固有延遲

  • 發佈 CloudWatch 指標、

  • 指標CapacityProviderReservation違反 CloudWatch 警示所需的時間 (高和低)

  • 新啟動的 Amazon EC2 執行個體暖機所需的時間。您可以採取下列動作,讓叢集自動擴展回應更快的部署:

容量提供者步進擴展大小

Amazon ECS 容量提供者將擴展/縮減容器執行個體,以滿足應用程式的需求。Amazon ECS 將啟動的執行個體數目下限預設為 1。如果需要多個執行個體來放置待定任務,這可能會為您的部署增加額外的時間。您可以透過 minimumScalingStepSize Amazon ECS API 增加 ,以增加 Amazon ECS 一次向內擴展或向外擴展的執行個體數量下限。太低maximumScalingStepSize的 可以限制一次向內擴展或向外擴展的容器執行個體數量,這可能會減慢部署速度。

注意

此組態目前只能透過 CreateCapacityProviderUpdateCapacityProvider APIs使用。

執行個體暖機期

執行個體暖機期是新啟動的 Amazon EC2 執行個體可以為 Auto Scaling 群組貢獻 CloudWatch 指標的期間。在指定的暖機期到期後,執行個體會計入 Auto Scaling 群組的彙總指標,而叢集自動擴展會繼續進行其下一次的計算重複,以估計所需的執行個體數量。

的預設值instanceWarmupPeriod為 300 秒,您可以透過 CreateCapacityProviderUpdateCapacityProvider APIs 將 設定為較低的值,以獲得更靈敏的擴展。建議您將值設定為大於 60 秒,以避免過度佈建。

備用容量

如果您的容量提供者沒有可用於放置任務的容器執行個體,則需要透過即時啟動 Amazon EC2 執行個體來增加 (橫向擴展) 叢集容量,並等待它們啟動,然後才能在其上啟動容器。這可以大幅降低任務啟動率。您在這裡有兩個選項。

在這種情況下,已啟動備用 Amazon EC2 容量並準備好執行任務,將提高有效的任務啟動率。您可以使用 Target Capacity組態來表示您想要在叢集中維護備用容量。例如,將 設定為 Target Capacity 80% 表示您的叢集始終需要 20% 的備用容量。此備用容量可以允許立即啟動任何獨立任務,確保任務啟動不會受到調節。此方法的權衡是保留備用叢集容量的潛在增加成本。

您可以考慮的替代方法是將空間新增至服務,而不是容量提供者。這表示,您可以修改目標追蹤擴展指標或服務自動擴展的步進擴展閾值,來增加服務中的複本數量,而不是減少啟動備用容量的Target Capacity組態。請注意,此方法只會對尖峰工作負載有所幫助,但當您第一次部署新服務和從 0 到 N 個任務時不會產生影響。如需相關擴展政策的詳細資訊,請參閱《Amazon Elastic Container Service 開發人員指南》中的目標追蹤擴展政策步驟擴展政策