描述 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 會使用虛擬機擴展集來實作 nodearrays。 實際上,本節 [[node]] 說明基礎、平臺布建 VM 的屬性,可以是獨立 Azure VM 或屬於 Azure 虛擬機擴展集。 本節 [[nodearray]] 說明 Azure 虛擬機擴展集。
備註
nodearray 可以包含多個 Azure 虛擬機擴展集,每個擴展集都包含不同設定的 VM。 不過,nodearray 中的所有節點都會在叢集中執行相同的角色,例如將資源提供給叢集排程器的單一佇列。
- 磁碟區 會定義應該連結至個別叢集節點或構成 nodearray 的節點的 Azure 受控磁碟。 它是節點或 nodearray 物件的子物件。
- 網路介面 會定義 Azure 網路介面,該網路介面應該附加至構成 nodearray 的個別叢集節點或節點。 它是節點或 nodearray 物件的子物件。
- 組態 會定義節點或 nodearray 的可設定屬性。 它是節點或 nodearray 物件的子物件。
- Cluster-init 會定義要套用至叢集節點的 Azure CycleCloud 項目規格。 專案是資源集合,會以項目規格的形式定義節點組態。 當節點啟動時,它會透過處理這些規格來自動設定。 Cluster-init 是節點或 nodearray 物件的子物件。
- 環境 會定義 Azure Resource Manager 部署,以布建或修改叢集要使用的 Azure 資源。 這是選擇性的最上層物件。
- Noderef 會參考範本內的節點,以表示資源相依性。 這是選擇性的最上層物件。
- 參數 可讓您將範本設為可攜式範本,讓您能夠使用它來部署多個具有相符物件階層但不同組態設定的叢集。 這是選擇性的最上層物件,但您可以選擇建立巢狀參數階層。 針對每個參數,您可以定義其預設值。 參數也可讓您透過 CycleCloud Web 介面在叢集中公開可設定的變數。
每個區段都包含數個索引鍵/值組,這些組態詳細數據會提供區段標頭所代表之對應物件的組態詳細數據。 例如,nodearray 的這類詳細數據可以包含 ImageName 索引鍵,其值會指定要用於其節點的 Azure VM 映射,或 Azure.MaxScalesetSize 指定允許之虛擬機擴展集大小上限的索引鍵作為其值。 同樣地,節點或 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-clusterlab-template的叢集,您會執行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 專案,作為開機程式的一部分。