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

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

最佳化 Amazon ECS叢集自動擴展

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

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

  • 發佈 CloudWatch 指標、

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

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

容量提供者步進擴展大小

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

注意

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

執行個體暖機期

執行個體暖機期是新啟動的 Amazon EC2執行個體可以為 Auto Scaling 群組提供 CloudWatch 指標的期間。一旦指定的暖機期過期,執行個體會計入 Auto Scaling 群組的彙總指標,而叢集自動擴展會繼續進行其下一次的計算反覆運算,以估計所需的執行個體數量。

的預設值instanceWarmupPeriod為 300 秒,您可以透過 CreateCapacityProvider或 將 設定為較低的值UpdateCapacityProviderAPIs,以獲得更靈敏的擴展。

備用容量

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

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

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