CycleCloud 叢集

在 CycleCloud 中, 叢集 一詞是用來描述一組連線的電腦, (節點) 當成單一系統一起運作。 叢集可以是巢狀結構;例如,由 Grid Engine 排程器前端節點和計算節點組成的計算叢集,可能會掛接由數個中繼資料和儲存體伺服器組成的 BeeGFS 叢集,而計算和儲存體叢集則會在單一父 HPC 叢集或系統下聯合。

概觀圖表

節點和節點陣列

叢集基本上是由節點組成,每個節點都會在 HPC 系統中執行特定角色。 節點VM這兩個詞彙偶爾會交替使用,但在 CycleCloud 中會以語意分隔。 組成叢集的節點基本上是 Azure 上已完成準備和設定程式的虛擬機器。 換句話說, VM 會從 Azure 基礎結構服務層級布建,而其結束狀態是在完成軟體安裝和設定步驟之後 HPC 叢集的 節點

架構圖

CycleCloud 中的節點有兩個不同的迴圈。 第一個做為獨立節點,第二個節點是 nodearray 的集合,這是相同設定的節點集合 (節點與 nodearray 區別會遵循) 中的 DevOpsPet 與設定類比。 廣泛但並非嚴格來說,獨立節點是從 Azure 上的單一 VM 建構,而 nodearray 會對應至虛擬機器擴展集 (VMSS) 。

不過,nodearray 與 VM 擴展集之間有重要差異,主要差異在於單一 nodearray 可以組成多個 VM 擴展集。 這可讓單一 nodearray 從不同大小的 VM 或甚至不同的 VM 系列進行建置,唯一的限制在於 nodearray 中的所有節點在叢集中執行相同的角色,例如,將資源提供給排程器的單一佇列。

叢集範本

拓撲或節點在 CycleCloud 叢集中的組織方式,是在文字模板中定義,以配置叢集節點之間的關聯性,以及在巢狀叢集的情況下,為叢集的父子式關聯性。 範本也會提供定義每個節點所扮演角色的方法。

叢集範本會以 INI 格式定義。 使用方括弧來描述的 [] 區段可用來定義叢集、節點和 nodearray。 INI 檔案的基本元素是索引鍵/值組判斷提示,可提供每個區段的組態詳細資料。 這些設定詳細資料提供用來建立叢集每個節點的內容資訊,從用來開機 VM 的虛擬機器映射到要布建 VM 的子網。 深入瞭解 CycleCloud 叢集範本

節點準備和設定

CycleCloud 會從叢集範本中定義的基底 VM 映射布建 VM,並透過 CycleCloud 代理程式所管理的一系列步驟,在開機程式期間 (Jetpack) ,初始化並設定 VM 上的 OS,以將其轉換成運作中的 HPC 節點。 這些步驟的範圍從腳本安裝及設定排程軟體,到掛接檔案系統的最後一英哩設定。

節點準備圖表

在每個節點的組態區段中定義是 叢集 init 規格 -- 提供給每個開機 VM 的規格,用來為叢集中的特定角色做好準備。 CycleCloud 會利用 Chef 作為基礎結構自動化平臺,以準備和設定每個節點。 基本上,每個 cluster-init 規格 都會對應至一個需要在開機 VM 上執行的 Chef 角色 和/或 Cookbook 配方

CycleCloud 會以不依賴集中式 Chef 伺服器的獨立模式利用 Chef。 相反地,準備每個 VM 所需的整組 Chef Cookbook 會從屬於 VM 開機階段的使用者 Azure 儲存體帳戶下載。 這組 Cookbook 會在叢集建立階段從 CycleCloud 應用程式伺服器快取到儲存體帳戶。

下載這些 Cookbook 之後,Chef 會處理節點 叢集 init 規格中定義的配方清單,並觸發準備和設定階段,以將 VM 轉換成運作中的 HPC 節點。

規格是以稱為 Projects的邏輯集合撰寫。 例如,Slurm 這類批次排程器的專案至少包含兩個規格:一個用於排程器前端節點,另一個則用於計算節點。 深入瞭解 CycleCloud 專案

節點協調流程

根據叢集中所使用的排程器和服務,CycleCloud 有時需要透過協調不同的節點協調,協調叢集中節點的準備階段。 例如,某些排程器會要求每個計算節點都向排程器精靈註冊自己,這不僅需要讓計算節點知道前端節點的位址,也可以辨識前端節點已完整備妥,如果不是的話,請等候。

Service Discovery的這個元素也用於檔案系統伺服器用戶端關聯性,而且是 CycleCloud 中的功能。

深入閱讀