本文是Linux高性能集群系列文章的第五部分。這一部分首先介紹集群系統(tǒng)中的資源管理主要任務(wù)和系統(tǒng)管理主要任務(wù),然后列舉并比較了幾種常用的資源管理軟件和系統(tǒng)管理軟件。
1 集群作業(yè)管理
從用戶角度看,集群系統(tǒng)就好像一臺(tái)服務(wù)器或者PC。很多用戶可以同時(shí)使用這個(gè)系統(tǒng)。但是當(dāng)太多的用戶使用集群系統(tǒng)時(shí),系統(tǒng)性能會(huì)變得很差。資源管理就是管理用戶提交的作業(yè),合理給各個(gè)作業(yè)分配資源從而確保充分利用集群系統(tǒng)計(jì)算能力并盡可能快的得到運(yùn)算結(jié)果。簡(jiǎn)單的說(shuō),集群資源由實(shí)現(xiàn)如下幾個(gè)部分: 資源管理器:為了確保分配給作業(yè)合適的資源,集群資源管理需要維護(hù)一個(gè)數(shù)據(jù)庫(kù)。這個(gè)數(shù)據(jù)庫(kù)記錄了集群系統(tǒng)中各種資源的屬性和狀態(tài)、所有用戶提交的請(qǐng)求和正在運(yùn)行的作業(yè)。策略管理器根據(jù)這些數(shù)據(jù)和指定的調(diào)度策略生成優(yōu)先級(jí)列表。資源管理器根據(jù)這個(gè)優(yōu)先級(jí)列表調(diào)度作業(yè)。資源管理器還應(yīng)該具有資源預(yù)留能力。這樣不僅可以保留強(qiáng)大的資源給需要的作業(yè),而且可以預(yù)留一定的冗余資源以應(yīng)付集群中的結(jié)點(diǎn)失效和突發(fā)的計(jì)算。 作業(yè)調(diào)度策略管理器:策略管理器根據(jù)資源管理器得到各個(gè)結(jié)點(diǎn)上的資源狀況和系統(tǒng)的作業(yè)信息生成一個(gè)優(yōu)先級(jí)列表。這個(gè)列表告訴資源管理器何時(shí)在哪些結(jié)點(diǎn)上運(yùn)行哪個(gè)作業(yè)。策略管理器不僅要提供一個(gè)復(fù)雜的參數(shù)集合去定義計(jì)算環(huán)境和作業(yè),而且要為這個(gè)定義提供簡(jiǎn)捷靈活的表達(dá)方式以允許系統(tǒng)管理員實(shí)現(xiàn)策略驅(qū)動(dòng)的資源調(diào)度。
2 Beowulf集群中的作業(yè)管理軟件
有很多種選擇去管理集群系統(tǒng)中的資源。其中PBS資源管理器和Maui作業(yè)調(diào)度器最適合集群系統(tǒng)。
2.1 PBS
PBS(Portable Batch System)是由NASA開(kāi)發(fā)的靈活的批處理系統(tǒng)。它被用于集群系統(tǒng)、超級(jí)計(jì)算機(jī)和大規(guī)模并行系統(tǒng)。PBS主要有如下特征: 易用性:為所有的資源提供統(tǒng)一的接口,易于配置以滿足不同系統(tǒng)的需求,靈活的作業(yè)調(diào)度器允許不同系統(tǒng)采用自己的調(diào)度策略。 移植性:符合POSIX 1003.2標(biāo)準(zhǔn),可以用于shell和批處理等各種環(huán)境。 適配性:可以適配與各種管理策略,并提供可擴(kuò)展的認(rèn)證和安全模型。支持廣域網(wǎng)上的負(fù)載的動(dòng)態(tài)分發(fā)和建立在多個(gè)物理位置不同的實(shí)體上的虛擬組織。 靈活性:支持交互和批處理作業(yè)。
OpenPBS(http://www.OpenPBS.org/)是PBS的Open Source的實(shí)現(xiàn)。商業(yè)版本的PBS可以參照:http://www.pbspro.com/。
2.2 Maui
Maui是一個(gè)高級(jí)的作業(yè)調(diào)度器。它采用積極的調(diào)度策略優(yōu)化資源的利用和減少作業(yè)的響應(yīng)時(shí)間。Maui的資源和負(fù)載管理允許高級(jí)的參數(shù)配置:作業(yè)優(yōu)先級(jí)(Job Priority)、調(diào)度和分配(Scheduling and Allocation)、公平性和公平共享(Fairness and Fairshare)和預(yù)留策略(Reservation Policy)。Maui的QoS機(jī)制允許資源和服務(wù)的直接傳遞、策略解除(Policy Exemption)和指定特征的受限訪問(wèn)。Maui采用高級(jí)的資源預(yù)留架構(gòu)可以保證精確控制資源何時(shí)、何地、被誰(shuí)、怎樣使用。Maui的預(yù)留架構(gòu)完全支持非入侵式的元調(diào)度。
Maui的設(shè)計(jì)得益于世界最大的高性能計(jì)算中心的經(jīng)驗(yàn)。Maui本身也提供測(cè)試工具和模擬器用于估計(jì)和調(diào)節(jié)系統(tǒng)性能。
Maui需要資源管理器與其配合使用。我們可以把Maui想象為PBS中的一個(gè)插入部件。
更多Maui的信息可以訪問(wèn):http://www.supercluster.org/
3 集群系統(tǒng)管理
從系統(tǒng)組成角度說(shuō),集群系統(tǒng)是由多臺(tái)計(jì)算機(jī)組成的超級(jí)計(jì)算機(jī)。但是從最終用戶看來(lái),集群系統(tǒng)是一臺(tái)計(jì)算機(jī),也就是說(shuō),集群系統(tǒng)的構(gòu)成對(duì)用戶是透明的。所以集群系統(tǒng)的管理的目的就是讓集群系統(tǒng)象一臺(tái)計(jì)算機(jī)一樣利于管理。歸納起來(lái),集群系統(tǒng)管理一般完成如下任務(wù):
3.1 資源管理
簡(jiǎn)單地說(shuō),資源管理就是分配系統(tǒng)的資源和監(jiān)控系統(tǒng)資源的使用狀態(tài)。這里的資源是個(gè)很廣泛的概念,各種硬件設(shè)備、數(shù)據(jù)和程序都可以看成資源:如CPU、存儲(chǔ)、網(wǎng)卡,甚至系統(tǒng)的事件和log。
3.2 事件服務(wù)
事件(Event)就是系統(tǒng)的狀態(tài)的一次變化。如"CPU的利用率超過(guò)90%"就可以理解為一次事件。簡(jiǎn)單的說(shuō),事件服務(wù)就是事件通知服務(wù),也就是當(dāng)一次事件發(fā)生時(shí),通知對(duì)這類事件感興趣的個(gè)體這個(gè)事件發(fā)生了。事件服務(wù)可以分為Push(也稱為Subscribe-Publish)和Pull方式。系統(tǒng)管理員還應(yīng)該能夠通過(guò)事件服務(wù)設(shè)置系統(tǒng)對(duì)事件的自動(dòng)響應(yīng)。
3.3 分布式命令和文件
分布式命令和文件是指讓命令和文件操作同時(shí)在整個(gè)集群結(jié)點(diǎn)或指定的一組結(jié)點(diǎn)上并行執(zhí)行。
分布式命令功能通常通過(guò)分布式的Shell來(lái)提供。這種Shell一般叫做dsh(distributed shell)或 psh ( parallel shell)。你可以通過(guò)rsh或ssh來(lái)實(shí)現(xiàn)分布式Shell。
分布式文件主要用于指集群中配置文件的同步。集群系統(tǒng)實(shí)際上是由多個(gè)結(jié)點(diǎn)組成,所以對(duì)集群系統(tǒng)的一個(gè)配置需要發(fā)布到每個(gè)結(jié)點(diǎn)(或一組結(jié)點(diǎn))。比如,需要配置每個(gè)結(jié)點(diǎn)上的Apache都支持CGI,就需要把/etc/httpd下的配置文件發(fā)布到每個(gè)結(jié)點(diǎn)的/etc/httpd中。簡(jiǎn)單地說(shuō),集群系統(tǒng)地配置管理就是把一個(gè)或多個(gè)配置文件發(fā)布到指定的結(jié)點(diǎn)上。有很多開(kāi)放源碼的工具可以幫助完成集群系統(tǒng)的分布式文件功能,如rdist和cfengine。
3.4 監(jiān)控和診斷
對(duì)持續(xù)運(yùn)行的集群系統(tǒng)而言,當(dāng)系統(tǒng)正常運(yùn)行時(shí),你需要一些工具監(jiān)控系統(tǒng)各部分的運(yùn)行狀態(tài),如系統(tǒng)進(jìn)程、CPU利用率和內(nèi)存利用率等。在普通的Unix系統(tǒng)上,你可以簡(jiǎn)單的用ps和top實(shí)現(xiàn)這些功能。但是在集群系統(tǒng)中,你確實(shí)需要一些特殊工具,而且最好系統(tǒng)的監(jiān)控可以支持多種網(wǎng)絡(luò)管理協(xié)議,如SNMP和WBEM。當(dāng)集群系統(tǒng)工作不正常時(shí),你則需要另外一些工具來(lái)協(xié)助系統(tǒng)診斷。如當(dāng)系統(tǒng)某個(gè)不服務(wù)時(shí),你可能需要用ping診斷是不是網(wǎng)絡(luò)出了問(wèn)題。而當(dāng)時(shí)多個(gè)結(jié)點(diǎn)服務(wù)時(shí),你則需要并發(fā)的ping來(lái)診斷是不是網(wǎng)絡(luò)錯(cuò)誤。
3.5 硬件控制
PC機(jī)上很簡(jiǎn)單的管理功能對(duì)于集群系統(tǒng)而言可能會(huì)很難做到。比如讓一組結(jié)點(diǎn)重啟,就很難手工完成。所以集群系統(tǒng)需要一些特殊的硬件設(shè)備完成這些功能。下面是幾個(gè)需要硬件支持特殊管理功能: 遠(yuǎn)程電源管理:主要是遠(yuǎn)程關(guān)閉、打開(kāi)和重啟結(jié)點(diǎn)與查詢結(jié)點(diǎn)電源狀態(tài)。在IBM eServer Cluster 1300中采用ASM。 遠(yuǎn)程控制臺(tái):當(dāng)遠(yuǎn)程結(jié)點(diǎn)出現(xiàn)問(wèn)題或出現(xiàn)一些特殊的軟件需要時(shí),需要直接登錄到結(jié)點(diǎn)上完成操作。KVM Switch可以滿足這種需求,但是當(dāng)結(jié)點(diǎn)很多時(shí),KVM Switch就會(huì)很復(fù)雜。而且KVM Switch需要手工切換,不能通過(guò)軟件方法使用。Terminal Server克服了KVM Switch的缺點(diǎn)。Terminal Server與結(jié)點(diǎn)的串口相連,并把串口虛擬成管理結(jié)點(diǎn)上終端設(shè)備,當(dāng)然這需要對(duì)結(jié)點(diǎn)的操作系統(tǒng)做些相應(yīng)的配置。
3.6 系統(tǒng)安裝
集群系統(tǒng)的安裝主要是指在各個(gè)結(jié)點(diǎn)上安裝操作系統(tǒng)、文件系統(tǒng)、并行程序運(yùn)行庫(kù)、作業(yè)管理軟件和系統(tǒng)管理軟件等。它是集群系統(tǒng)投入應(yīng)用的前提,所以集群系統(tǒng)的安裝是一件非常重要的任務(wù)。一般集群系統(tǒng)由幾十臺(tái),甚至上百上千臺(tái)計(jì)算機(jī)組成,顯然手工安裝系統(tǒng)幾乎是不可能的。一般集群系統(tǒng)的安裝的機(jī)制是: 網(wǎng)絡(luò)啟動(dòng):設(shè)置需要的安裝的結(jié)點(diǎn)網(wǎng)絡(luò)啟動(dòng),然后管理結(jié)點(diǎn)遠(yuǎn)程重啟需要安裝的結(jié)點(diǎn)。網(wǎng)絡(luò)啟動(dòng)的結(jié)點(diǎn)啟動(dòng)后從啟動(dòng)服務(wù)器獲得一個(gè)小的操作系統(tǒng)內(nèi)核。網(wǎng)絡(luò)啟動(dòng)一般采用Intel的PXE(Pre-Execution Environment)標(biāo)準(zhǔn)。 PXELinux是支持PXE的網(wǎng)絡(luò)啟動(dòng)服務(wù)器。它可以在網(wǎng)絡(luò)啟動(dòng)的結(jié)點(diǎn)啟動(dòng)一個(gè)小的Linux核心并運(yùn)行指定的Init程序。由Init程序負(fù)責(zé)后續(xù)的安裝。 網(wǎng)絡(luò)安裝:這個(gè)操作系統(tǒng)內(nèi)核負(fù)責(zé)從安裝服務(wù)器(通常是一個(gè)文件服務(wù)器)上取得安裝軟件包或系統(tǒng)鏡像并在本地實(shí)施系統(tǒng)安裝。有多種Linux工具可以完成基于網(wǎng)絡(luò)的系統(tǒng)安裝。這些工具中的典型代表是:KickStart、ALICE (Automatic Linux Installation and Configuration Environment)、SIS(System Install Suite)和PartImage。這些工具可以分為如下幾類: a. 基于Script的安裝:這種安裝方式中,安裝過(guò)程由安裝腳本(Script)控制,可以通過(guò)修改安裝腳本來(lái)配置安裝過(guò)程。這種安裝方式中,安裝服務(wù)器實(shí)際上是一個(gè)文件服務(wù)器,它向結(jié)點(diǎn)提供要安裝的軟件包。除了軟件包不是來(lái)自本地外,這種安裝方法和本地安裝并沒(méi)有太大的區(qū)別,本地安裝的各個(gè)步驟(配置硬件、安裝軟件包、配置系統(tǒng)等)它都要經(jīng)過(guò)。KickStart屬于這中安裝方法?;赟cript的安裝比較靈活,但是它是操作系統(tǒng)依賴型的。象KickStart只支持Redhat Linux。 b. 基于Imaging的安裝:和基于Script的安裝不同,基于Imaging的安裝并不需要經(jīng)過(guò)本地安裝的各個(gè)步驟。它只需要把存儲(chǔ)在文件服務(wù)上的需要安裝的系統(tǒng)映象(Image)拷貝到本地的硬盤(pán)上。這個(gè)系統(tǒng)映象來(lái)源于一個(gè)已經(jīng)安裝和配置好的樣機(jī)。Imaging的安裝方式是獨(dú)立于操作系統(tǒng),但是它依賴于網(wǎng)絡(luò)啟動(dòng)的操作系統(tǒng)內(nèi)核支持的文件系統(tǒng)。Imaging的很大缺點(diǎn)是很難提供獨(dú)立于操作系統(tǒng)的配置方法。PartImage屬于Imaging安裝方法。而SIS是Script和Imaging混合型的安裝方式。SIS利用Linux的chroot命令在安裝服務(wù)器的一個(gè)文件目錄下安裝一個(gè)虛擬的操作系統(tǒng)映象。同時(shí)SIS支持用戶提供Shell腳本完成安裝后的配置。 c. 基于Cloning的安裝:和Imaging安裝方式相同的是,Cloning安裝也采用系統(tǒng)映象。但是Cloning中的系統(tǒng)映象是樣機(jī)上硬盤(pán)分區(qū)的Clone。因此,Cloning安裝不需要識(shí)別系統(tǒng)鏡像中的文件系統(tǒng)類型。所以它是獨(dú)立于文件系統(tǒng)的,它只依賴于操作系統(tǒng)內(nèi)核支持的硬盤(pán)設(shè)備類型(IDE或SCSI)。和Imaging一樣,Cloning的很大缺點(diǎn)是很難提供獨(dú)立于操作系統(tǒng)的配置方法。而且相對(duì)于Imaging而言,Cloning效率更低。你可以簡(jiǎn)單的用dd命令實(shí)現(xiàn)Clone。
下表歸納了幾種安裝工具的特點(diǎn): 安裝工具 安裝方法 支持的系統(tǒng) 支持的網(wǎng)絡(luò)協(xié)議 KickStart Script Redhat Linux NFS、FTP SIS Script和Imaging混合 Redhat Linux SuSE Linux Turbo Linux … rsync PartImage Imaging EXT2、FAT、NTFS、HPFS… 私有協(xié)議
3.7 域管理
你可以簡(jiǎn)單的把集群系統(tǒng)的域管理理解為結(jié)點(diǎn)管理,它主要包括如下簡(jiǎn)單的功能: 加入、刪除和列舉集群系統(tǒng)中的結(jié)點(diǎn) 對(duì)集群中的結(jié)點(diǎn)分組
實(shí)際上,我們也把作業(yè)管理納入集群系統(tǒng)管理的任務(wù)。但是相對(duì)于其他系統(tǒng)管理任務(wù)而言,作業(yè)管理在集群系統(tǒng)中具有更重要的作用,而且通常的集群系統(tǒng)管理軟件也不直接實(shí)現(xiàn)作業(yè)管理功能。所以我們把作業(yè)管理作為集群系統(tǒng)一個(gè)重要的軟件部分,而不是集群系統(tǒng)管理的一項(xiàng)任務(wù)。
4 幾種集群系統(tǒng)管理軟件
集群系統(tǒng)管理軟件和集群系統(tǒng)一樣形形色色、多種多樣。下面簡(jiǎn)要介紹幾種集群系統(tǒng)管理軟件并比較它們實(shí)現(xiàn)的功能。
4.1 IBM CSM
IBM CSM(Cluster Systems Management )是IBM eServer Cluster 1300上的系統(tǒng)管理軟件。IBM的Linux集群戰(zhàn)略的一部分就是把運(yùn)行在RS/6000 SP平臺(tái)上的PSSP軟件移植到基于xSeries的Linux集群系統(tǒng)上。CSM大部分功能來(lái)源于SP平臺(tái),但是它也集成了WebSM 2000、xSeries、開(kāi)放源碼工具和其他技術(shù)。CSM是一款功能很全面的管理工具,而且還在不斷的發(fā)展中。
4.2 XCAT
XCAT是用于IBM eServer Cluster 1300上的系統(tǒng)管理軟件。它由Egan Ford開(kāi)發(fā)。它基本上是由shell腳本寫(xiě)成,相當(dāng)簡(jiǎn)捷。但是它實(shí)現(xiàn)了集群系統(tǒng)管理大部分的內(nèi)容,是個(gè)非常出色的管理軟件。
4.3 Mon
Mon在Linux平臺(tái)上開(kāi)發(fā),但是也以運(yùn)行在Solaris上而出名。Mon的服務(wù)器和客戶都是基于perl開(kāi)發(fā)的,所以很容易移植到其他UNIX和類UNIX平臺(tái)。
下表比較了以上三種集群系統(tǒng)管理軟件: 項(xiàng)目 CSM XCAT Mon 支持的集群系統(tǒng) IBM eServer Cluster 1300 IBM eServer Cluster 1300 不特定于某個(gè)集群系統(tǒng) 支持的操作系統(tǒng) Redhat、SuSE Redhat,結(jié)點(diǎn)可以采用Imaging和Cloning安裝其他操作系統(tǒng),甚至于Windows 在Linux上開(kāi)發(fā),但是以運(yùn)行在Solaris而著名。很容易移植到其他Unix和非Unix操作系統(tǒng)上 資源管理 提供統(tǒng)一的、可擴(kuò)展的,全面的資源管理,但是由于強(qiáng)大而使用起來(lái)很復(fù)雜。 基本沒(méi)有 基本沒(méi)有 事件服務(wù) 提供事件訂閱發(fā)布機(jī)制,并預(yù)先定義了很多系統(tǒng)事件和對(duì)事件的響應(yīng) 將來(lái)會(huì)于Mon集成以完成事件服務(wù) 支持 配置管理 支持 無(wú) 無(wú) 監(jiān)控和診斷 支持分布式Shell(dsh)、支持SNMP 支持并發(fā)Shell(psh)、并發(fā)ping(pping) 支持SNMP 硬件控制 遠(yuǎn)程電源管理(rpower)遠(yuǎn)程控制臺(tái)(rconsole) 遠(yuǎn)程電源管理(rpower) 遠(yuǎn)程控制臺(tái)(rcon、wcon) 無(wú) 系統(tǒng)安裝 支持KickStart和SIS 支持PXE 支持KickStart、Imaging和Cloning 支持PXE和etherboot 無(wú) 域管理 全面 基本沒(méi)有 基本沒(méi)有 集成性 除了必須的開(kāi)放源碼軟件包,不與任何其他軟件集成。但是底層資源管理和事件服務(wù)提供編程接口,集成很方便。上層可以通過(guò)命令調(diào)用集成。 自動(dòng)安裝PBS、Maui、Myrinet和MPI。將來(lái)會(huì)支持 SgridEngine Scheduler 基本沒(méi)有,應(yīng)該可以通過(guò)命令行集成 易用性 提供強(qiáng)大命令行工具和簡(jiǎn)單的GUI工具 命令行工具,將來(lái)會(huì)和Ganglia集成提供一定的GUI 提供命令行和基于Web的工具
5 參考文獻(xiàn) Linux HPC Cluster Installation, IBM Redbooks, http://www.redbooks.ibm.com/ IBM eServer xSeries Clustering Planning Guide, IBM Redbooks, http://www.redbooks.ibm.com/ Linux Clustering with CSM & GPFS, IBM Redbooks, http://www.redbooks.ibm.com/ Cluster Computing White Paper, Mark Baker, University of Portsmouth, UK Beowulf HOW-TO, http://www.beowulf-underground.org/ Beowulf Introduction and Overview, http://www.beowulf.org/ The Mosix Howto, http://www.mosix.org/ OSCAR: A packaged Cluster software stack for High Performance Computing, http://www.openclutergroup.org/ Linux-HA Heartbeat System Design, http://www.linux-ha.org/ xCAT HOW-TO, http://www.x-cat.org/ MPICH, http://www.mcs.anl.gov/mpi/mpich. PVM, http://www.epm.ornl.gov/pvm/pvm_home.html OpenPBS,http://www.openpbs.org/ Maui, http://www.supercluster.org/ Condor Manual, Condor Team, University of Wisconsin-Madison GFS, http://globalfilesystem.org/ Intermezzo, http://inter-mezzo.org/ Coda, http://www.coda.cs.cmu.edu/
6 關(guān)于作者
金戈,IBM軟件工程師,在IBM中國(guó)開(kāi)發(fā)中心主持Linux集群系統(tǒng)開(kāi)發(fā)工作。你可以通過(guò) jinge@cn.ibm.com 和他聯(lián)系。
|