描述 Azure CycleCloud 叢集範本
Azure CycleCloud 可讓您以範本為基礎部署 HPC 叢集。 根據預設,Azure CycleCloud 應用程式包含數個內建範本,可用來部署最常見的叢集排程器,包括 Slurm、PBSPro、LSF、Grid Engine 和 HT-Condor。 Azure CycleCloud GitHub 存放庫提供許多排程器專屬的專案,您可加以自訂,並匯入 Azure CycleCloud 執行個體中。 您也可以選擇使用 CycleCloud 自動調整外掛程式,針對您自己的內部開發排程器實作以範本為基礎的佈建。
範本可加速實作多種 Azure CycleCloud 功能,包括支援自訂虛擬機器 (VM) 映像、自動調整和現成 VM。 範本也可讓使用者以最低的相關額外負荷來佈建和維護採用相同設定的多個叢集部署;這通常用來隔離生產、開發和測試環境。
這些優點可因應您為 Contoso 實作新 Azure 常駐叢集的目標。 為了充分發揮這些優點,您決定要進一步了解實作 Azure CycleCloud 範本的格式和程序。
Azure CycleCloud 範本的格式為何?
範本是 INI 格式的檔案,使用宣告式語法來說明 CycleCloud 叢集的結構和設定,包括叢集節點角色及其各自的關聯性。 範本是由具名區段組成,具有由一或多組方括弧指定的標頭。 這些區段會形成階層,對應至叢集物件的階層及其對應的參數。 方括弧的數目代表該階層內的層級,並隨著每一層而遞增。
[cluster]
[[node, nodearray]]
[[[volume]]]
[[[network-interface]]]
[[[cluster-init]]]
[[[input-endpoint]]]
[[[configuration]]]
[environment]
[noderef]
[parameters]
[[parameters]]
[[[parameter]]]
實際上,[cluster]
區段可能包含一或多個 [[node]]
區段,而後者可能包含多個 [[[volume]]]
區段。 同樣地,在相同的範本內,您可以在 [cluster]
區段內定義一或多個 [[nodearray]]
區段,每個區段各有其本身的 [[[configuration]]]
。
注意
相同層級內的區段順序是任意的。
範本的主要區段為何?
範本包含下列主要區段:
- 叢集:
[cluster]
區段包含 Azure CycleCloud 叢集物件的定義。 範本至少須包含一個[cluster]
區段,其中包含一或多個[[node]]
和[[nodearray]]
區段,說明該叢集的子物件。 - 節點:這代表平台佈建的單一 VM。
- Nodearray:這代表一或多個 Azure 虛擬機器擴展集。
注意
叢集中包含多個節點,為處理叢集化工作負載中指定的角色提供服務。 從實作的觀點來看,Azure CycleCloud 依賴 Azure Resource Manager 將其佈建為個別的 Azure VM,或虛擬機器擴展集的成員。 後者代表採用相同設定的 VM 集合,不同於 Azure VM,可支援水平自動調整。 Azure CycleCloud 會使用虛擬機器擴展集來實作 nodearray。 實際上,[[node]]
區段會說明平台佈建的基礎 VM 的屬性;這些 VM 可以是獨立的 Azure VM,也可以屬於 Azure 虛擬機器擴展集。 [[nodearray]]
區段會說明 Azure 虛擬機器擴展集。
注意
nodearray 可包含多個 Azure 虛擬機器擴展集,每個擴展集分別包含採用不同設定的 VM。 不過,nodearray 中的所有節點在叢集中會執行相同的角色,例如將資源佈建至叢集排程器的單一佇列。
- Volume 會定義應與個別叢集節點或形成 nodearray 的節點相連結的 Azure 受控磁碟。 此設定是節點物件或 nodearray 物件的子物件。
- Network-interface 會定義應與個別叢集節點或形成 nodearray 的節點相連結的 Azure 網路介面。 此設定是節點物件或 nodearray 物件的子物件。
- Configuration 會定義節點或 nodearray 的可設定屬性。 此設定是節點物件或 nodearray 物件的子物件。
- Cluster-init 會定義要套用至叢集節點的 Azure CycleCloud 專案規格。 專案是資源的集合,會以專案規格的形式定義節點設定。 當節點啟動時,會藉由處理這些規格自動進行設定。 Cluster-init 是節點物件或 nodearray 物件的子物件。
- Environment 會定義 Azure Resource Manager 部署,用以佈建或修改叢集所要使用的 Azure 資源。 這是選用的最上層物件。
- Noderef 會參考範本內的節點以表示資源相依性。 這是選用的最上層物件。
- Parameters 可讓您的範本具可攜性,以便您用它來部署具有相符物件階層、但具有不同組態設定的多個叢集。 這是選用的最上層物件,但是您可以選擇建立巢狀參數階層。 您可以為每個參數定義預設值。 參數也可讓您透過 CycleCloud Web 介面,在叢集中公開可設定的變數。
每個區段都包含數個索引鍵/值組,以提供關於對應物件的設定詳細資料 (以區段標頭表示)。 例如,nodearray 的詳細資料可能會包含以值指定要將 Azure VM 映像用於其節點的 ImageName
索引鍵,或包含將允許的虛擬機器擴展集大小上限指定為其值的 Azure.MaxScalesetSize
索引鍵。 同樣地,node 或 nodearray 區段可包含一或多個 [[[configuration]]]
區段。
如何根據範本佈建叢集?
識別您想要用來佈建 Azure CycleCloud 叢集的範本後,您可以套用下列任何一種實作方法:
- 使用 Azure CycleCloud CLI 將範本匯入 Azure CycleCloud 應用程式中,然後使用應用程式的圖形化介面來佈建叢集。 若要觸發匯入,請執行
cyclecloud import_template -f <template_file>
命令 (其中,<template_file>
預留位置代表包含範本的檔案名稱)。 如果範本包含多個叢集定義,請將其參考為-c
參數的值,藉以指定您想要匯入的叢集名稱。 - 使用 Azure CycleCloud CLI 將範本匯入 Azure CycleCloud 應用程式中,然後佈建叢集。 若要觸發匯入,請執行
cyclecloud import_template -t -f <template_file>
命令 (其中,<template_file>
預留位置代表包含範本的檔案名稱)。 匯入完成後,請執行cyclecloud create_cluster
命令。 例如,若要從名為lab-template
的匯入範本建立名為lab-cluster
的叢集,您可以執行cyclecloud create_cluster lab-template lab-cluster
。 - 使用 Azure CycleCloud CLI 來佈建叢集,而無須明確匯入範本。 若要觸發匯入,請執行
cyclecloud import_cluster
命令。
無論您選擇何種方法,都必須在叢集佈建期間提供任何必要參數的值。 使用 Azure CycleCloud CLI 時,您可以藉由參考 JSON 格式的參數檔案來提供這些值。
注意
該檔案包含索引鍵/值組,其中的索引鍵代表參數名稱。 若要檢閱現有叢集的格式,請使用 cyclecloud export_parameters <cluster_name> > params.json
命令,其中,<cluster_name>
預留位置代表現有叢集的名稱。
注意
在根據匯入的範本部署叢集之前,您也必須將對應專案的內容上傳至 Azure CycleCloud 保險箱。 若要執行上傳,請使用 cyclecloud project upload <locker_name>
Azure CycleCloud CLI 命令 (其中,<locker_name>
預留位置代表保險箱的名稱)。 若要列出可用的保險箱,請執行 cyclecloud locker list
Azure CycleCloud CLI 命令。 保險箱名稱可從 [[[cluster-init]]]
區段中參考。
注意
設定 Azure CycleCloud 安裝的其中一個步驟,是在 Azure 儲存體帳戶中建立 Blob 容器。 此容器會作為 CycleCloud 伺服器用來為叢集節點暫存 CycleCloud 專案的保險箱。 隨後會設定 Azure CycleCloud 管理叢集的節點,使其在開機程序中從這個保險箱下載 CycleCloud 專案。