本文介紹叢集系統中的資源管理主要任務和系統管理主要任務,然後列舉並比較了幾種常用的資源管理軟體和系統管理軟體。
1 叢集作業管理
從使用者角度看,叢集系統就好像一台伺服器或者PC。很多使用者可以同時使用這個系統。但是當太多的使用者使用叢集系統時,系統效能會變得很差。資源管理就是系統管理使用者提交的作業,合理給各個作業分配資源從而確保充分利用叢集系統計算能力並儘可能快的得到運算結果。簡單的說,叢集資源由實現如下幾個部分:
- 資源管理員:為了確保分配給作業合適的資源,叢集資源管理需要維護一個資料庫。這個資料庫記錄了叢集系統中各種資源的屬性和狀態、所有使用者提交的請求和正在啟動並執行作業。策略管理器根據這些資料和指定的調度策略產生優先順序列表。資源管理員根據這個優先順序列表調度作業。資源管理員還應該具有資源預留能力。這樣不僅可以保留強大的資源給需要的作業,而且可以預留一定的冗餘資源以應付叢集中的結點失效和突發的計算。
- 作業調度策略管理器:策略管理器根據資源管理員得到各個結點上的資源狀況和系統的作業資訊產生一個優先順序列表。這個列表告訴資源管理員何時在哪些結點上運行哪個作業。策略管理器不僅要提供一個複雜的參數集合去定義計算環境和作業,而且要為這個定義提供簡捷靈活的表達方式以允許系統管理員實現策略驅動的資源調度。
2 Beowulf叢集中的作業管理軟體
有很多種選擇去管理叢集系統中的資源。其中PBS資源管理員和Maui作業調度器最適合叢集系統。
2.1 PBS
PBS(Portable Batch System)是由NASA開發的靈活的批處理系統。它被用於叢集系統、超級電腦和大規模並行系統。PBS主要有如下特徵:
- 易用性:為所有的資源提供統一的介面,易於配置以滿足不同系統的需求,靈活的作業調度器允許不同系統採用自己的調度策略。
- 移植性:符合POSIX 1003.2標準,可以用於shell和批處理等各種環境。
- 適配性:可以適配與各種管理原則,並提供可擴充的認證和安全模型。支援廣域網路上的負載的動態分發和建立在多個物理位置不同的實體上的虛擬組織。
- 靈活性:支援互動和批次工作。
OpenPBS( http://www.OpenPBS.org/)是PBS的Open Source的實現。商業版本的PBS可以參照: http://www.pbspro.com/。
2.2 Maui
Maui 是一個進階的作業調度器。它採用積極的調度策略最佳化資源的利用和減少作業的回應時間。Maui的資源和負載管理允許進階的參數配置:作業優先順序(Job Priority)、調度和分配(Scheduling and Allocation)、公平性和公平共用(Fairness and Fairshare)和預留策略(Reservation Policy)。Maui的QoS機制允許資源和服務的直接傳遞、策略解除(Policy Exemption)和指定特徵的受限訪問。Maui採用進階的資源預留架構可以保證精確控制資源何時、何地、被誰、怎樣使用。Maui的預留架構完全支援非入侵式的元調度。
Maui的設計得益於世界最大的高效能運算中心的經驗。Maui本身也提供測試載入器和模擬器用於估計和調節系統效能。
Maui需要資源管理員與其配合使用。我們可以把Maui想象為PBS中的一個插入組件。
更多Maui的資訊可以訪問: http://www.supercluster.org
3 叢集系統管理
從系統組成角度說,叢集系統是由多台電腦群組成的超級電腦。但是從終端使用者看來,叢集系統是一台電腦,也就是說,叢集系統的構成對使用者是透明的。所以叢集系統的管理的目的就是讓叢集系統象一台電腦一樣利於管理。歸納起來,叢集系統管理一般完成如下任務:
3.1 資源管理
簡單地說,資源管理就是分配系統的資源和監控系統資源的使用狀態。這裡的資源是個很廣泛的概念,各種硬體裝置、資料和程式都可以看成資源:如CPU、儲存、網卡,甚至系統的事件和log。
3.2 事件服務
事件(Event)就是系統的狀態的一次變化。如"CPU的利用率超過90%"就可以理解為一次事件。簡單的說,事件服務就是事件通知服務,也就是當一次事件發生時,通知對這類事件感興趣的個體這個事件發生了。事件服務可以分為Push(也稱為Subscribe-Publish)和Pull方式。系統管理員還應該能夠通過事件服務設定系統對事件的自動響應。
3.3 分布式命令和檔案
分布式命令和檔案是指讓命令和檔案操作同時在整個叢集結點或指定的一組結點上並存執行。
分布式命令功能通常通過分布式的Shell來提供。這種Shell一般叫做dsh(distributed shell)或 psh ( parallel shell)。你可以通過rsh或ssh來實現分布式Shell。
分布式檔案主要用於指叢集中設定檔的同步。叢集系統實際上是由多個結點組成,所以對叢集系統的一個配置需要發布到每個結點(或一組結點)。比如,需要配置每個結點上的Apache都支援CGI,就需要把/etc/httpd下的設定檔發布到每個結點的/etc/httpd中。簡單地說,叢集系統地組態管理就是把一個或多個設定檔發布到指定的結點上。有很多開放源碼的工具可以協助完成叢集系統的分布式檔案功能,如rdist和cfengine。
3.4 監控和診斷
對持續啟動並執行叢集系統而言,當系統正常運行時,你需要一些工具監控系統各部分的運行狀態,如系統進程、CPU利用率和記憶體利用率等。在普通的Unix系統上,你可以簡單的用ps和top實現這些功能。但是在叢集系統中,你確實需要一些特殊工具,而且最好系統的監控可以支援多種網路管理協議,如SNMP和 WBEM。當叢集系統工作不正常時,你則需要另外一些工具來協助系統診斷。如當系統某個不服務時,你可能需要用ping診斷是不是網路出了問題。而當時多個結點服務時,你則需要並發的ping來診斷是不是網路錯誤。
3.5 硬體控制
PC機上很簡單的管理功能對於叢集系統而言可能會很難做到。比如讓一組結點重啟,就很難手工完成。所以叢集系統需要一些特殊的硬體裝置完成這些功能。下面是幾個需要硬體支援特殊管理功能:
- 遠程電源管理:主要是遠程關閉、開啟和重啟結點與查詢結點電源狀態。在IBM eServer Cluster 1300中採用ASM。
- 遠端控制台:當遠程結點出現問題或出現一些特殊的軟體需要時,需要直接登入到結點上完成操作。KVM Switch可以滿足這種需求,但是當結點很多時,KVM Switch就會很複雜。而且KVM Switch需要手工切換,不能通過軟體方法使用。Terminal Server克服了KVM Switch的缺點。Terminal Server與結點的串口相連,並把串口虛擬成管理結點上終端裝置,當然這需要對結點的作業系統做些相應的配置。
3.6 系統安裝
叢集系統的安裝主要是指在各個結點上安裝作業系統、檔案系統、並行程式運行庫、作業管理軟體和系統管理軟體等。它是叢集系統投入應用的前提,所以叢集系統的安裝是一件非常重要的任務。一般叢集系統由幾十台,甚至上百上千台電腦群組成,顯然手工安裝系統幾乎是不可能的。一般叢集系統的安裝的機制是:
- 網路啟動:設定需要的安裝的結點網路啟動,然後管理結點遠程重啟需要安裝的結點。網路啟動的結點啟動後從啟動伺服器獲得一個小的作業系統核心。網路啟動一般採用Intel的PXE(Pre-Execution Environment)標準。 PXELinux是支援PXE的網路啟動伺服器。它可以在網路啟動的結點啟動一個小的Linux核心並運行指定的Init程式。由Init程式負責後續的安裝。
- 網路安裝:這個作業系統核心負責從安裝伺服器(通常是一個檔案伺服器)上取得安裝軟體包或系統鏡像並在本地實施系統安裝。有多種Linux工具可以完成基於網路的系統安裝。這些工具中的典型代表是:KickStart、ALICE (Automatic Linux Installation and Configuration Environment)、SIS(System Install Suite)和PartImage。這些工具可以分為如下幾類:
- a. 基於Script的安裝:這種安裝方式中,安裝過程由安裝指令碼(Script)控制,可以通過修改安裝指令碼來配置安裝過程。這種安裝方式中,安裝伺服器實際上是一個檔案伺服器,它向結點提供要安裝的軟體包。除了軟體包不是來自本地外,這種安裝方法和本地安裝並沒有太大的區別,本地安裝的各個步驟(配置硬體、安裝軟體包、配置系統等)它都要經過。KickStart屬於這中安裝方法。基於Script的安裝比較靈活,但是它是作業系統依賴型的。象 KickStart只支援Redhat Linux。
- b. 基於Imaging的安裝:和基於Script的安裝不同,基於Imaging的安裝並不需要經過本地安裝的各個步驟。它只需要把儲存在檔案服務上的需要安裝的系統映象(Image)拷貝到本地的硬碟上。這個系統映象來源於一個已經安裝和配置好的樣機。Imaging的安裝方式是獨立於作業系統,但是它依賴於網路啟動的作業系統核心支援的檔案系統。Imaging的很大缺點是很難提供獨立於作業系統的配置方法。PartImage屬於Imaging安裝方法。而SIS是Script和Imaging混合型的安裝方式。SIS利用Linux的chroot命令在安裝伺服器的一個檔案目錄下安裝一個虛擬作業系統映象。同時SIS支援使用者提供Shell指令碼完成安裝後的配置。
- c. 基於Cloning的安裝:和Imaging安裝方式相同的是,Cloning安裝也採用系統映象。但是Cloning中的系統映象是樣機上硬碟分區的 Clone。因此,Cloning安裝不需要識別系統鏡像中的檔案系統類型。所以它是獨立於檔案系統的,它只依賴於作業系統核心支援的硬碟裝置類型 (IDE或SCSI)。和Imaging一樣,Cloning的很大缺點是很難提供獨立於作業系統的配置方法。而且相對於Imaging而言, Cloning效率更低。你可以簡單的用dd命令實現Clone。
下表歸納了幾種安裝工具的特點:
| 安裝工具 |
安裝方法 |
支援的系統 |
支援的網路通訊協定 |
| KickStart |
Script |
Redhat Linux |
NFS、FTP |
| SIS |
Script和Imaging混合 |
Redhat Linux SuSE Linux Turbo Linux … |
rsync |
| PartImage |
Imaging |
EXT2、FAT、NTFS、HPFS… |
私人協議 |
3.7 域管理
你可以簡單的把叢集系統的域管理理解為結點管理,它主要包括如下簡單的功能:
- 加入、刪除和列舉叢集系統中的結點
- 對叢集中的結點分組
實際上,我們也把作業管理納入叢集系統管理的任務。但是相對於其他系統管理任務而言,作業管理在叢集系統中具有更重要的作用,而且通常的叢集系統管理軟體也不直接實現作業管理功能。所以我們把作業管理作為叢集系統一個重要的軟體部分,而不是叢集系統管理的一項任務。
4 幾種叢集系統管理軟體
叢集系統管理軟體和叢集系統一樣形形色色、多種多樣。下面簡要介紹幾種叢集系統管理軟體並比較它們實現的功能。
4.1 IBM CSM
IBM CSM(Cluster Systems Management )是IBM eServer Cluster 1300上的系統管理軟體。IBM的Linux叢集戰略的一部分就是把運行在RS/6000 SP平台上的PSSP軟體移植到基於xSeries的Linux叢集系統上。CSM大部分功能來源於SP平台,但是它也整合了WebSM 2000、xSeries、開放源碼工具和其他技術。CSM是一款功能很全面的管理工具,而且還在不斷的發展中。
4.2 XCAT
XCAT是用於IBM eServer Cluster 1300上的系統管理軟體。它由Egan Ford開發。它基本上是由shell指令碼寫成,相當簡捷。但是它實現了叢集系統管理大部分的內容,是個非常出色的管理軟體。
4.3 Mon
Mon在Linux平台上開發,但是也以運行在Solaris上而出名。Mon的伺服器和客戶都是基於perl開發的,所以很容易移植到其他UNIX和類UNIX平台。
下表比較了以上三種叢集系統管理軟體:
| 項目 |
CSM |
XCAT |
Mon |
| 支援的叢集系統 |
IBM eServer Cluster 1300 |
IBM eServer Cluster 1300 |
不特定於某個叢集系統 |
| 支援的作業系統 |
Redhat、SuSE |
Redhat,結點可以採用Imaging和Cloning安裝其他動作系統,甚至於Windows |
在Linux上開發,但是以運行在Solaris而著名。很容易移植到其他Unix和非Unix作業系統上 |
| 資源管理 |
提供統一的、可擴充的,全面的資源管理,但是由於強大而使用起來很複雜。 |
基本沒有 |
基本沒有 |
| 事件服務 |
提供事件訂閱發布機制,並預先定義了很多系統事件和對事件的響應 |
將來會於Mon整合以完成事件服務 |
支援 |
| 組態管理 |
支援 |
無 |
無 |
| 監控和診斷 |
支援分布式Shell(dsh)、支援SNMP |
支援並發Shell(psh)、並發ping(pping) |
支援SNMP |
| 硬體控制 |
遠程電源管理(rpower)遠端控制台(rconsole) |
遠程電源管理(rpower) 遠端控制台(rcon、wcon) |
無 |
| 系統安裝 |
支援KickStart和SIS 支援PXE |
支援KickStart、Imaging和Cloning 支援PXE和etherboot |
無 |
| 域管理 |
全面 |
基本沒有 |
基本沒有 |
| 整合性 |
除了必須的開放源碼軟體包,不與任何其他軟體整合。但是底層資源管理和事件服務提供編程介面,整合很方便。上層可以通過命令調用整合。 |
自動安裝PBS、Maui、Myrinet和MPI。將來會支援 SgridEngine Scheduler |
基本沒有,應該可以通過命令列整合 |
| 易用性 |
提供強大命令列工具和簡單的GUI工具 |
命令列工具,將來會和Ganglia整合提供一定的GUI |
提供命令列和基於Web的工具 |