描述 Azure CycleCloud 排程器整合和自動調整

已完成

使用雲端彈性可讓公司充分利用 Azure 的超大規模功能,同時將使用計算資源的相關營運成本降至最低。 自動調整資源量以回應其使用量模式的能力,是該彈性的核心元件。 在 Azure CycleCloud 和 HPC 的內容中,這會轉譯來在叢集作業的資源需求和叢集計算節點的數目之間實作密切的相互關聯。

一般來說,叢集節點縮放的協調流程是排程器的責任。 排程器必須能夠將其需求傳達給提供計算資源的平台。 Azure CycleCloud 可協助實作此功能。 在此單元中,您將了解此實作的準則。

Azure CycleCloud 在叢集自動調整中扮演何種角色?

Azure CycleCloud 可加速在 Azure 中部署排程器,進而發佈和管理在包含 Azure 資源的叢集上執行的作業。 Azure CycleCloud 不是用來作為排程器, 而是用來作為排程器和基礎平台之間的媒介。 Azure CycleCloud 也提供以 REST API 為基礎的程式設計介面和以 Python 為基礎的用戶端程式庫,以簡化對應排程器自動調整功能的開發。

Azure CycleCloud 可讓您將受控叢集的自動調整行為與叢集作業佇列的長度相互關聯。 您可以透過定義範本參數進一步自訂此行為,例如,控制閒置節點終止之後的時間量或自動停止檢查的頻率。

所有內建範本都會直接在 Azure CycleCloud 圖形化介面中公開自動調整設定。 在每個案例中,設定都包含選項來指定自動調整範圍的下限和上限,以 CPU 核心數目表示。 上限可協助您將非預期費用的可能性降至最低。 您可以透過設定預算警示,進一步降低此風險。

當閾值下限設為 0 時,建立叢集將只會導致排程器前端節點的佈建。 不過,當排程器偵測到佇列作業時,其會起始執行對應工作負載所需的計算節點佈建,最多可達您定義的限制。 為了支援結合度低的作業或平行作業 (個別工作彼此獨立執行),作業會在第一個節點變成可用狀態時立即開始執行。 針對緊密結合的作業 (例如,使用訊息傳遞介面 (MPI) 功能的作業),根據節點間的相依性程度而定,等候時間將比較長。 當作業佇列空白的時間量超過允許的閒置時間之後,計算節點就會開始自動停止,而您的叢集會再次僅由排程器前端節點組成。

注意

此單元所述的基本概念是排程器之間的通用概念。 不過,它們的實作詳細資料是排程器特有的。 如需每個實作的深入資訊,請參閱個別排程器文件。

如何整合排程器與 Azure CycleCloud 自動調整

實作整合 Azure CycleCloud 自動調整的兩個主要元件是 Azure CycleCloud 自動調整程式庫和需求計算機。

Azure CycleCloud 的高階結構圖表。

Azure CycleCloud 自動調整程式庫是開放原始碼且 GitHub 裝載的專案,可讓 Python 協助程式簡化任何部署至 Azure 之排程器的自動調整開發。 協助程式使用 Azure CycleCloud REST API 來協調 Azure 資源的佈建。 此專案使用 Python 3,並有許多 Python 相依性。 但其核心功能依賴 Azure CycleCloud Python 用戶端程式庫。 自動調整會與監視作業佇列的排程器前端節點整合。 自動調整透過與 Azure CycleCloud 應用程式伺服器上執行的自動調整 REST API 進行互動,來增加或減少計算節點數目。

需求計算機負責根據排程器所收集的計算節點和作業資料來評估資源需求。 此評估會考慮計算和網路限制式,例如,最大叢集大小或與 InfiniBand 相關的限制。 產生的資源需求會轉譯為佈建或取消佈建特定大小和設定之 Azure VM 的要求。 自動調整程式庫會將這些要求轉送至 Azure CycleCloud REST API,然後透過其協調器將這些要求傳遞至 Azure Resource Manager。

注意

儘管排程器整合可容納結合度低或平行的工作負載 (其中管理叢集的大小是主要考慮),Azure CycleCloud 也支援緊密結合的工作負載 (其中節點鄰近性和網路延遲至關重要)。