使用 Amazon EC2 容量提供者加速 Amazon ECS 叢集容量佈建 - Amazon Elastic Container Service

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

使用 Amazon EC2 容量提供者加速 Amazon ECS 叢集容量佈建

在 Amazon EC2 上執行 Amazon ECS 的客戶,可以利用 Amazon ECS 叢集自動擴展 (CAS) 來管理 Amazon EC2 Auto Scaling 群組 (ASG) 的擴展。透過 CAS,您可以設定 Amazon ECS 自動擴展 ASG,從而專注於執行任務。Amazon ECS 將確保 ASG 視需求進行擴展與縮減,無需額外人工介入。Amazon ECS 容量提供者可用來管理叢集中的基礎結構,確保有足夠的容器執行個體可滿足應用程式需求。如需了解 Amazon ECS CAS 的運作方式,請參閱 Deep Dive on Amazon ECS Cluster Auto Scaling

由於 CAS 依賴與 ASG 的 CloudWatch 型整合來調整叢集容量,其本身存在固有延遲,包括:發布 CloudWatch 指標所需的時間、指標 CapacityProviderReservation 觸發 CloudWatch 高/低閾值警報的處理時間,以及新啟動 Amazon EC2 執行個體完成暖機所需的週期。您可以採取下列動作提高 CAS 的回應速度,加速實現部署:

容量提供者步進擴展大小

Amazon ECS 容量提供者最終將擴增/縮小容器執行個體,以滿足應用程式的需求。將 Amazon ECS 會啟動的執行個體數量下限預設為 1。如果需要多個執行個體來放置待處理任務,可能會增加部署所需的時間。您可以透過 Amazon ECS API 增加 minimumScalingStepSize,提高 Amazon ECS 每次可縮減或擴展的執行個體數量下限。太低的 maximumScalingStepSize 會限制每次可縮減或擴展的容器執行個體數量,進而拖慢部署速度。

注意

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

執行個體暖機期間

執行個體暖機期是新啟動的 Amazon EC2 執行個體可以為 Amazon EC2 Auto Scaling 群組貢獻 CloudWatch 指標的期間。在指定的暖機期間到期後,執行個體才會納入 ASG 的彙總指標計算;而 CAS 會接著進行其下一輪計算,以估算所需的執行個體數量。

instanceWarmupPeriod 的預設值為 300 秒,您可透過 CreateCapacityProviderUpdateCapacityProvider API 將其設定為較低的值,從而實現更即時的擴展。

備用容量

如果容量提供者沒有可用於置放任務的容器執行個體,就必須透過即時啟動 Amazon EC2 執行個體來增加 (橫向擴充) 叢集容量,並等待這些執行個體啟動完成後才能在其上部署容器。這會大幅降低任務啟動速率。對此,您有兩種選擇。

在這種情況下,若事先啟動並準備好可用於執行任務的 Amazon EC2 備用容量,即能提高有效的任務啟動速率。您可以透過 Target Capacity 組態來指定希望叢集維持的備用容量。例如,將 Target Capacity 設定為 80%,即指定叢集需隨時保留 20% 的備用容量。這些備用容量可讓任何獨立任務立即啟動,確保任務啟動不會受到限流。但此方法的權衡在於,維持叢集備用容量可能會增加成本。

另一種替代方法是為服務增加緩衝空間,而非為容量提供者設定。這意味著,您不必透過降低 Target Capacity 組態來啟動備用容量,而是可以藉由修改服務自動擴展的目標追蹤擴展指標或步進擴展閾值,直接增加服務中的副本數量。請注意,此方法僅對突發性工作負載有效;在部署新服務並首次從 0 擴展至 N 個任務時,則無法發揮作用。如需有關相關擴展政策的詳細資訊,請參閱目標追蹤擴展政策步進擴展政策