描述 Azure CycleCloud 的基本概念

已完成

許多組織想要將內部部署 HPC 工作負載轉換至 Azure,以利用其超大規模功能。 他們也想要將與這類轉換相關聯的學習曲線最小化,並使用與現有部署 (例如特定的 HPC 排程器) 相關聯的專業知識。 最後,他們會以與其內部部署環境平行的方式,尋找雲端式叢集資源的效能與成本見解。

實作滿足這些需求的自訂解決方案,是一項挑戰。 其需要具備 Azure 計算、網路與儲存體資源的深度知識,而這些資源可用來作為雲端式 HPC 叢集的建置組塊。 此外,如果沒有對應的管理介面,透過依賴標準 Azure 管理工具來操作這類解決方案,將導致大量額外的系統管理負荷。

Azure CycleCloud 可消除這些顧慮,並提供一種簡單、安全且可擴縮的方式,可在 Azure 中實作 HPC 排程器。 在此單元中,您會了解其基本功能。

注意

Azure CycleCloud 的目標是需要使用特定 HPC 排程器的部署案例。 這與 Azure Batch 形成互補,Azure Batch 可在 Azure 上提供排程器即服務。

什麼是 Azure CycleCloud?

Azure CycleCloud 是在 Azure 中部署 HPC 叢集及管理其工作負載的工具。 其提供各式各樣的 HPC 功能,包括:

  • 以範本為基礎的 HPC 叢集部署。 Azure CycleCloud 提供內建的可自訂範本,可用於部署最常見的叢集排程器,包括 Slurm、OpenPBS、LSF、Grid Engine 與 HTCondor。 CycleCloud GitHub 存放庫中提供許多其他您可以匯入 Azure CycleCloud 執行個體的預先定義範本。

    注意

    範本是 INI 格式的檔案,使用宣告式語法來描述在 CycleCloud 叢集中組織節點的方式,包括其各自的關聯性。 範本包含對專案的參考,其會定義節點設定。

  • 手動和自動擴縮叢集節點。 Azure CycleCloud 可根據作業佇列與治理原則的長度,進行受控叢集的手動和自動水平擴縮。 其也提供一個 REST API 來開發自訂排程器的自動擴縮配接器。

  • 透過 cloud-init 指令碼進行節點設定。 Azure CycleCloud 支援以自訂指令碼為基礎的設定管理,其會在任何其他 CycleCloud 特有設定工作之前,於受控叢集節點內執行。

  • 管理內部與外部叢集儲存體。 Azure CycleCloud 可讓您佈建、掛接及格式化 Azure 受控磁碟與網路連接儲存裝置 (例如 NFS 伺服器或 BeeGFS 叢集),以設定叢集儲存體。

  • 監視、記錄和警示。 Azure CycleCloud 提供內建的叢集監視功能,並與 Azure 監視器整合。 您也可以將記錄資料從 CycleCloud 叢集儲存至 Log Analytics,並建立自訂計量儀表板。 此外,您可以建立由遙測資料所觸發的自訂警示與電子郵件通知。 系統會記錄所有 Azure CycleCloud 活動。

  • 驗證與授權。 Azure CycleCloud 支援內建的本機驗證。 或者,您可以將其與 Active Directory Domain Services 或其他以輕量型目錄存取通訊協定 (LDAP) 為基礎的身分識別提供者整合。 根據預設,本機定義的使用者有權存取受控叢集節點上的作業系統,但您可以個別管理叢集使用者。 若要管理 Azure 訂用帳戶中的資源,您可以使用 Microsoft Entra 服務主體或受控識別。

  • 近乎即時的成本報告及控制。 Azure CycleCloud 會追蹤叢集使用量,並估計對應的成本。 此功能可讓您設定當叢集成本超過您指定的貨幣金額時要觸發的預算警示。 Azure CycleCloud 也與 Microsoft 成本管理整合。

您如何實作和使用 Azure CycleCloud?

CycleCloud 會實作為以 Linux 為基礎的 Web 應用程式,您可以將其安裝在任何可存取 Azure 環境的位置中。 最簡單的設定方式是使用對應的 Azure Marketplace 映像來部署 Azure VM,並選擇使用 Azure Resource Manager (ARM) 範本來將部署自動化。 或者,您可以使用 yum 或 apt 套件,或者可從 Microsoft Container Registry 取得的容器映像。

在初始設定期間,您可以提供 SSH 金鑰,安全地存取裝載 CycleCloud 應用程式的作業系統與稍後部署的叢集節點。 若要讓 CycleCloud 應用程式與 Azure Resource Manager 互動,您必須選擇 Microsoft Entra 身分識別,以提供此互動的資訊安全內容,並使用 Azure 角色型存取控制 (RBAC),將為其指派目標 Azure 訂用帳戶中的足夠權限。 此身分識別可採用服務主體的形式,或如果將 Azure CycleCloud 應用程式裝載於 Azure VM 上,則採用受控識別。

Azure CycleCloud 執行個體也需要 Azure 儲存體帳戶與隨附的 Blob 容器。 此容器 (稱為保險箱) 提供將專案部署到叢集節點的暫存區域。

安裝之後,Azure CycleCloud 應用程式就會提供圖形化使用者介面,讓使用者能夠管理及監視 HPC 系統與命令列介面 (CLI),以加速 CycleCloud 自動化並整合到現有工作流程。 您也可以使用 CLI 來匯入範本、自動佈建叢集,以及執行更進階的管理工作。

Azure CycleCloud Web 應用程式的圖形化介面螢幕擷取畫面。

Azure CycleCloud 的架構為何?

相較於 Azure Resource Manager,Azure CycleCloud 提供了一層額外的抽象概念,可將使用者直接處理 Azure 計算與儲存體資源的需求降到最低。 其角色是將可透過其圖形化介面或 CLI 存取的排程器層級設定轉換為 Azure Resource Manager (ARM) API 呼叫,以在使用者定義的虛擬網路和子網路中與 Azure VM 和 Azure VM 擴展集互動。 這些呼叫也會考慮區域 vCPU 配額、叢集大小限制,以及 InfiniBand 網路拓撲的限制式。 其也會使用這類建構作為鄰近放置群組,或將叢集節點連線至相同的 InfiniBand 交換器,以便將叢集效能最佳化。

注意

鄰近放置群組可讓共置的 Azure VM 彼此接近,但不會考慮使用 InfiniBand 網路功能。 Azure CycleCloud 可讓您使用其本身的特定建構 (稱為 PlacementGroupId),將叢集節點分組為連線至相同網路交換器的單一 Azure VM 擴展集。 您可以合併這兩個功能,但這可能會減少您可在相同 Azure VM 擴展集中佈建的節點數目。

Azure CycleCloud 會協調 HPC 叢集的生命週期,其通常由一或多個 HPC 排程器前端節點與計算節點所組成,但也可能包含網路連接儲存體,例如,NFS 伺服器或 BeeGFS 叢集、Azure NetApp Files、Azure HPC Cache 與 Microsoft Entra Domain Services。 其包含可快取叢集與節點狀態的內部 NoSQL 資料存放區。 其節點監視系統會啟用警示。 其管理功能會透過 REST API 公開,並可透過 Web 與 CLI 存取。

受控叢集的自動調整依賴「需求計算機」與「自動調整程式庫」。 您將在此課程的下一個單元中了解其特性。

Azure CycleCloud 的高階結構圖表。

什麼是 Azure CycleCloud 叢集生命週期?

叢集的生命週期從選取包含其定義的範本開始。 您可以選擇使用其中一個內建範本,或建立自訂範本,然後將其匯入 CycleCloud 應用程式。 範本通常包含數個參數,可讓您在建立叢集期間自訂叢集設定。 叢集建立流程的細節取決於您使用的是 Web 或 CLI。

當您建立叢集之後,即可啟動它。 啟動叢集會針對屬於以叢集範本為基礎之定義的每個節點觸發一系列工作。 此序列由要求佈建 Azure VM 的 Azure Resource Manager 呼叫所組成,稱為「取得」狀態。 接下來是設定 VM,包括執行其定義於對應專案中的初始化、執行指令碼以安裝並設定排程軟體,以及佈建及掛接檔案系統磁碟區。 當序列完成之後,節點就會到達「已啟動」狀態。 任何未處理或未知的錯誤都會導致「錯誤」狀態。

在執行叢集節點之後,根據其作業系統而定,可透過 SSH 或 RDP 從遠端存取。 您可以使用這類連線來提交叢集作業。 根據叢集設定,這可能會觸發叢集調整。

當叢集完成所有已提交的作業之後,您可以終止該叢集。 終止叢集會停止並移除其節點,並刪除任何非永續性磁碟區,讓叢集處於「關閉」狀態。