本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS ParallelCluster Auto Scaling
注意
本節僅適用於AWS ParallelCluster 2.11.4 及 之前的版本。從 2.11.5 版開始,AWS ParallelCluster不支援使用 SGE或 Torque排程器。您可以在 和 2.11.4 之前的版本中繼續使用它們,但他們不符合未來更新的資格,也不符合服務和AWS支援團隊對AWS支援進行故障診斷的資格。
從 2.9.0 AWS ParallelCluster版開始,不支援 Auto Scaling 搭配 Slurm Workload Manager(Slurm) 使用。若要了解 Slurm和多個佇列擴展,請參閱 多佇列模式教學課程。
本主題中所述的自動擴展策略適用於使用 Son of Grid Engine(SGE) 或 Torque Resource Manager() 部署的 HPC 叢集Torque。使用其中一個排程器部署時,AWS ParallelCluster會管理運算節點的 Auto Scaling 群組,然後視需要變更排程器組態,以實作擴展功能。對於以 為基礎的 HPC 叢集AWS Batch,AWS ParallelCluster依賴AWS受管任務排程器提供的彈性擴展功能。如需詳細資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的什麼是 Amazon EC2 Auto Scaling。
使用 部署的叢集AWS ParallelCluster有數種彈性。設定 會initial_queue_size指定 ComputeFleet Auto Scaling 群組的最小大小值,以及所需的容量值。設定 會max_queue_size指定 ComputeFleet Auto Scaling 群組的大小上限值。
向上擴展
每分鐘,稱為 的程序會在前端節點jobwatcher
使用 SGE 排程器,每個任務需要一些插槽才能執行 (一個插槽對應一個處理單位,例如,vCPU)。若要評估處理目前待處理任務所需的執行個體數目,jobwatcher 會將請求的插槽總數除以單一運算節點的容量。對應至可用 vCPUs 數量的運算節點容量,取決於叢集組態中指定的 Amazon EC2 執行個體類型。
使用 Slurm(2.9.0 AWS ParallelCluster版之前) 和 Torque 排程器時,每個任務可能需要多個節點和每個節點的多個插槽,視情況而定。對於每個請求,jobwatcher 會判斷滿足新運算需求所需的運算節點數目。例如,假設有一個叢集具有 c5.2xlarge (8 vCPU) 做為運算執行個體類型,且有三個排入佇列的待處理任務具有下列需求:
-
任務 1:2 個節點/每個節點 4 個插槽
-
任務 2:3 個節點/每個節點 2 個插槽
-
任務 3:1 個節點/每個節點 4 個插槽
在此範例中, jobwatcher需要 Auto Scaling 群組中的三個新運算執行個體,才能提供這三個任務。
目前限制:自動擴展邏輯不會考慮部分載入的忙碌節點。例如,即使有空的槽,執行任務的節點也會被視為忙碌。
向下擴展
在每個運算節點上,稱為 nodewatcher
-
執行個體沒有任務的時段超過 scaledown_idletime (預設設定為 10 分鐘)
-
叢集中沒有待處理任務
若要終止執行個體, 會nodewatcher呼叫 TerminateInstanceInAutoScalingGroup API 操作,如果 Auto Scaling 群組的大小至少為 Auto Scaling 群組大小下限,則會移除執行個體。此程序會縮減叢集,而不會影響執行中任務。它也會啟用具有固定基本執行個體數量的彈性叢集。
靜態叢集
對於 HPC,自動擴展的值與任何其他工作負載相同。唯一的差別是,AWS ParallelCluster具備的程式碼可讓它的互動方式更聰明。例如,如果需要靜態叢集,您可以將 initial_queue_size和 max_queue_size 參數設定為所需叢集的確切大小。然後,將 maintain_initial_size 參數設定為 true。這會導致 ComputeFleet Auto Scaling 群組的最小、最大和所需容量具有相同的值。