|
Linux高性能計(jì)算集群 -- Beowulf集群1 集群 1.1 什么是集群 簡(jiǎn)單的說(shuō),集群(cluster)就是一組計(jì)算機(jī),它們作為一個(gè)整體向用戶提供一組網(wǎng)絡(luò)資源。這些單個(gè)的計(jì)算機(jī)系統(tǒng)就是集群的節(jié)點(diǎn)(node)。一個(gè)理想的集群是,用戶從來(lái)不會(huì)意識(shí)到集群系統(tǒng)底層的節(jié)點(diǎn),在他/她們看來(lái),集群是一個(gè)系統(tǒng),而非多個(gè)計(jì)算機(jī)系統(tǒng)。并且集群系統(tǒng)的管理員可以隨意增加和刪改集群系統(tǒng)的節(jié)點(diǎn)。 1.2 為什么需要集群 集群并不是一個(gè)全新的概念,其實(shí)早在七十年代計(jì)算機(jī)廠商和研究機(jī)構(gòu)就開(kāi)始了對(duì)集群系統(tǒng)的研究和開(kāi)發(fā)。由于主要用于科學(xué)工程計(jì)算,所以這些系統(tǒng)并不為大家所熟知。直到Linux集群的出現(xiàn),集群的概念才得以廣為傳播。 對(duì)集群的研究起源于集群系統(tǒng)的良好的性能可擴(kuò)展性(scalability)。提高CPU主頻和總線帶寬是最初提供計(jì)算機(jī)性能的主要手段。但是這一手段對(duì)系統(tǒng)性能的提供是有限的。接著人們通過(guò)增加CPU個(gè)數(shù)和內(nèi)存容量來(lái)提高性能,于是出現(xiàn)了向量機(jī),對(duì)稱(chēng)多處理機(jī)(SMP)等。但是當(dāng)CPU的個(gè)數(shù)超過(guò)某一閾值,象SMP這些多處理機(jī)系統(tǒng)的可擴(kuò)展性就變的極差。主要瓶頸在于CPU訪問(wèn)內(nèi)存的帶寬并不能隨著CPU個(gè)數(shù)的增加而有效增長(zhǎng)。與SMP相反,集群系統(tǒng)的性能隨著CPU個(gè)數(shù)的增加幾乎是線性變化的。圖1顯示了這中情況。
集群系統(tǒng)的優(yōu)點(diǎn)并不僅在于此。下面列舉了集群系統(tǒng)的主要優(yōu)點(diǎn): 1. 高可擴(kuò)展性:如上所述。 2. 高可用性:集群中的一個(gè)節(jié)點(diǎn)失效,它的任務(wù)可以傳遞給其他節(jié)點(diǎn)。可以有效防止單點(diǎn)失效。 3. 高性能:負(fù)載平衡集群允許系統(tǒng)同時(shí)接入更多的用戶。 4. 高性價(jià)比:可以采用廉價(jià)的符合工業(yè)標(biāo)準(zhǔn)的硬件構(gòu)造高性能的系統(tǒng)。 1.2.1 集群系統(tǒng)的分類(lèi) 雖然 根據(jù)集群系統(tǒng)的不同特征可以有多種分類(lèi)方法,但是一般我們把集群系統(tǒng)分為兩類(lèi):
2.1 什么是高可用性 計(jì)算機(jī)系統(tǒng)的可用性(availability)是通過(guò)系統(tǒng)的可靠性(reliability)和可維護(hù)性(maintainability)來(lái)度量的。工程上通常用平均無(wú)故障時(shí)間(MTTF)來(lái)度量系統(tǒng)的可靠性,用平均維修時(shí)間(MTTR)來(lái)度量系統(tǒng)的可維護(hù)性。于是可用性被定義為: MTTF/(MTTF+MTTR)*100% 業(yè)界根據(jù)可用性把計(jì)算機(jī)系統(tǒng)分為如下幾類(lèi):
對(duì)于關(guān)鍵業(yè)務(wù),停機(jī)通常是災(zāi)難性的。因?yàn)橥C(jī)帶來(lái)的損失也是巨大的。下面的統(tǒng)計(jì)數(shù)字列舉了不同類(lèi)型企業(yè)應(yīng)用系統(tǒng)停機(jī)所帶來(lái)的損失。
隨著企業(yè)越來(lái)越依賴于信息技術(shù),由于系統(tǒng)停機(jī)而帶來(lái)的損失也越拉越大。 2.2 高可用集群 高可用集群就是采用集群技術(shù)來(lái)實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)的高可用性。高可用集群通常有兩種工作方式:
關(guān)于高可用集群的討論很多,這里就不進(jìn)行深入的闡述了。 3.1 什么是高性能計(jì)算集群 簡(jiǎn)單的說(shuō),高性能計(jì)算(High-Performance Computing)是計(jì)算機(jī)科學(xué)的一個(gè)分支,它致力于開(kāi)發(fā)超級(jí)計(jì)算機(jī),研究并行算法和開(kāi)發(fā)相關(guān)軟件。高性能計(jì)算主要研究如下兩類(lèi)問(wèn)題:
顧名思義,高性能集群就是采用集群技術(shù)來(lái)研究高性能計(jì)算。 3.2 高性能計(jì)算分類(lèi) 高性能計(jì)算的分類(lèi)方法很多。這里從并行任務(wù)間的關(guān)系角度來(lái)對(duì)高性能計(jì)算分類(lèi)。 3.2.1 高吞吐計(jì)算(High-throughput Computing) 有一類(lèi)高性能計(jì)算,可以把它分成若干可以并行的子任務(wù),而且各個(gè)子任務(wù)彼此間沒(méi)有什么關(guān)聯(lián)。象在家搜尋外星人( SETI@HOME -- Search for Extraterrestrial Intelligence at Home )就是這一類(lèi)型應(yīng)用。這一項(xiàng)目是利用Internet上的閑置的計(jì)算資源來(lái)搜尋外星人。SETI項(xiàng)目的服務(wù)器將一組數(shù)據(jù)和數(shù)據(jù)模式發(fā)給Internet上參加SETI的計(jì)算節(jié)點(diǎn),計(jì)算節(jié)點(diǎn)在給定的數(shù)據(jù)上用給定的模式進(jìn)行搜索,然后將搜索的結(jié)果發(fā)給服務(wù)器。服務(wù)器負(fù)責(zé)將從各個(gè)計(jì)算節(jié)點(diǎn)返回的數(shù)據(jù)匯集成完整的數(shù)據(jù)。因?yàn)檫@種類(lèi)型應(yīng)用的一個(gè)共同特征是在海量數(shù)據(jù)上搜索某些模式,所以把這類(lèi)計(jì)算稱(chēng)為高吞吐計(jì)算。所謂的Internet計(jì)算都屬于這一類(lèi)。按照Flynn的分類(lèi),高吞吐計(jì)算屬于SIMD(Single Instruction/Multiple Data)的范疇。 3.2.2 分布計(jì)算(Distributed Computing) 另一類(lèi)計(jì)算剛好和高吞吐計(jì)算相反,它們雖然可以給分成若干并行的子任務(wù),但是子任務(wù)間聯(lián)系很緊密,需要大量的數(shù)據(jù)交換。按照Flynn的分類(lèi),分布式的高性能計(jì)算屬于MIMD(Multiple Instruction/Multiple Data)的范疇。 3.3 Linux高性能集群系統(tǒng) 當(dāng)論及Linux高性能集群時(shí),許多人的第一反映就是Beowulf。起初,Beowulf只是一個(gè)著名的科學(xué)計(jì)算集群系統(tǒng)。以后的很多集群都采用Beowulf類(lèi)似的架構(gòu),所以,實(shí)際上,現(xiàn)在Beowulf已經(jīng)成為一類(lèi)廣為接受的高性能集群的類(lèi)型。盡管名稱(chēng)各異,很多集群系統(tǒng)都是Beowulf集群的衍生物。當(dāng)然也存在有別于Beowulf的集群系統(tǒng),COW和Mosix就是另兩類(lèi)著名的集群系統(tǒng)。 3.3.1 Beowulf集群 簡(jiǎn)單的說(shuō),Beowulf是一種能夠?qū)⒍嗯_(tái)計(jì)算機(jī)用于并行計(jì)算的體系結(jié)構(gòu)。通常Beowulf系統(tǒng)由通過(guò)以太網(wǎng)或其他網(wǎng)絡(luò)連接的多個(gè)計(jì)算節(jié)點(diǎn)和管理節(jié)點(diǎn)構(gòu)成。管理節(jié)點(diǎn)控制整個(gè)集群系統(tǒng),同時(shí)為計(jì)算節(jié)點(diǎn)提供文件服務(wù)和對(duì)外的網(wǎng)絡(luò)連接。它使用的是常見(jiàn)的硬件設(shè)備,象普通PC、以太網(wǎng)卡和集線器。它很少使用特別定制的硬件和特殊的設(shè)備。Beowulf集群的軟件也是隨處可見(jiàn)的,象Linux、PVM和MPI。 本文的以后幾部分將詳細(xì)介紹Beowulf集群系統(tǒng)的硬件、網(wǎng)絡(luò)、軟件和應(yīng)用體系結(jié)構(gòu)。 3.3.2 Beowulf集群和COW集群 象Beowulf一樣,COW(Cluster Of Workstation)也是由最常見(jiàn)的硬件設(shè)備和軟件系統(tǒng)搭建而成。通常也是由一個(gè)控制節(jié)點(diǎn)和多個(gè)計(jì)算節(jié)點(diǎn)構(gòu)成。COW和Beowulf的主要區(qū)別在于: 1. COW中的計(jì)算節(jié)點(diǎn)主要都是閑置的計(jì)算資源,如辦公室中的桌面工作站,它們就是普通的PC,采用普通的局域網(wǎng)進(jìn)行連接。因?yàn)檫@些計(jì)算節(jié)點(diǎn)白天會(huì)作為工作站使用,所以主要的集群計(jì)算發(fā)生在晚上和周末等空閑時(shí)間。而Beowulf中的計(jì)算節(jié)點(diǎn)都是專(zhuān)職于并行計(jì)算,并且進(jìn)行了性能優(yōu)化。它們采用高速網(wǎng)(Myrinet或Giganet)上的消息傳遞(PVM或MPI)進(jìn)行進(jìn)程間通信(IPC)。 2. 因?yàn)?/span>COW中的計(jì)算節(jié)點(diǎn)主要的目的是桌面應(yīng)用,所以它們都具有顯示器、鍵盤(pán)和鼠標(biāo)等外設(shè)。而Beowulf的計(jì)算節(jié)點(diǎn)通常沒(méi)有這些外設(shè),對(duì)這些計(jì)算節(jié)點(diǎn)的訪問(wèn)通常是在管理節(jié)點(diǎn)上通過(guò)網(wǎng)絡(luò)或串口線實(shí)現(xiàn)的。 3. 因?yàn)檫B接COW中計(jì)算節(jié)點(diǎn)的通常是普通的局域網(wǎng),所以COW上的高性能應(yīng)用通常是象SETI@HOME 這樣的SIMD的高吞吐計(jì)算。而Beowulf無(wú)論從硬件、網(wǎng)絡(luò)和軟件上都對(duì)需要頻繁交換數(shù)據(jù)的MIMD應(yīng)用做了特別的優(yōu)化。 3.3.3 Mosix集群 實(shí)際上把Mosix集群放在高性能集群這一節(jié)是相當(dāng)牽強(qiáng)的,但是和Beowulf等其他集群相比, Mosix集群確實(shí)是種非常特別的集群, 它致力于在Linux系統(tǒng)上實(shí)現(xiàn)集群系統(tǒng)的單一系統(tǒng)映象SSI(Single System Image)。Mosix集群將網(wǎng)絡(luò)上運(yùn)行Linux的計(jì)算機(jī)連接成一個(gè)集群系統(tǒng)。系統(tǒng)自動(dòng)均衡節(jié)點(diǎn)間的負(fù)載。因?yàn)?/span>Mosix是在Linux系統(tǒng)內(nèi)核中實(shí)現(xiàn)的集群,所以用戶態(tài)的應(yīng)用程序不需要任何修改就可以在Mosix集群上運(yùn)行。通常用戶很少會(huì)注意到Linux和Mosix的差別。對(duì)于他來(lái)說(shuō),Mosix集群就是運(yùn)行Linux的一臺(tái)PC。盡管現(xiàn)在存在著不少的問(wèn)題,Mosix始終是引人注目的集群系統(tǒng)。
1 什么是Beowulf集群 Beowulf是現(xiàn)存的最古老的英語(yǔ)史詩(shī): Famed was this Beowulf: far ew the boast of him, son of Scyld, in the Scandian lands. So becomes it a youth to quit him well with his father's friends, by fee and gift, that to aid him, aged, in after days, come warriors willing, should war draw nigh, liegemen loyal: by lauded deeds shall an earl have honor in every clan. 它歌頌了一個(gè)英雄,他擁有強(qiáng)壯的體魄和無(wú)人倫比的勇氣。他最終戰(zhàn)勝了魔鬼Grendel. 你可以在http://legends.dm.net/beowulf/index.html找到這首史詩(shī)。 我們所說(shuō)的Beowulf首先是一個(gè)象史詩(shī)中英雄一樣強(qiáng)大的集群系統(tǒng)。在1994年夏季,Thomas Sterling和Don Becker在CESDIS(The Center of Excellence in Space Data and Information Sciences)用16個(gè)節(jié)點(diǎn)和以太網(wǎng)組成了一個(gè)計(jì)算機(jī)集群系統(tǒng),并將這個(gè)系統(tǒng)命名為Beowulf。Beowulf集群。Beowulf集群提供了一種使用COTS(Commodity off the shelf)硬件構(gòu)造集群系統(tǒng)以滿足特殊的計(jì)算需求的方法。這里的COTS是指象PC和以太網(wǎng)這種廣為應(yīng)用的標(biāo)準(zhǔn)設(shè)備,它們通常可以由多家廠商提供,所以通常有很高的性價(jià)比。Beowulf集群這種方法很快從NASA傳遍了整個(gè)科研機(jī)構(gòu)和社團(tuán)。實(shí)際上,Beowulf集群現(xiàn)在已被人們看作高性能計(jì)算中的一個(gè)分支或流派。 因?yàn)閹缀趺總(gè)Beowulf集群的設(shè)計(jì)者都有自己的Beowulf集群的定義,恐怕很難給Beowulf集群下一個(gè)確切的定義。一些人認(rèn)為只有那些采用和原始的Beowulf集群系統(tǒng)一樣方法構(gòu)建的系統(tǒng)才叫Beowulf集群。而另一些人則認(rèn)為凡是能夠在多個(gè)工作站上運(yùn)行并行代碼的系統(tǒng)都稱(chēng)為Beowulf集群。這里我們只是列舉多數(shù)Beowulf集群具有的特征作為Beowulf集群的定義:
2 Beowulf集群的分類(lèi) 由于一些特殊的目的如系統(tǒng)性能,有些Beowulf集群系統(tǒng)也采用一些用戶定制的設(shè)備(它們通常由一家廠商提供)。為了區(qū)分這些特殊的系統(tǒng),通常把Beowulf分為兩大類(lèi): 2.1 第一類(lèi)Beowulf集群(CLASS I Beowulf) 這一類(lèi)Beowulf集群全部由COTS設(shè)備組成。第一類(lèi)Beowulf系統(tǒng)的優(yōu)點(diǎn)是:
當(dāng)然第一類(lèi)Beowulf集群的缺點(diǎn)也是非常顯然的。由于所采用的硬件都沒(méi)有經(jīng)過(guò)性能優(yōu)化,所以其很難達(dá)到很好的性能。比如,由于以太網(wǎng)的高延遲和低帶寬使得集群系統(tǒng)中消息傳遞很難達(dá)到MIMD應(yīng)用的需求,從而使整個(gè)集群系統(tǒng)的計(jì)算能力大打折扣。 2.2 第二類(lèi)Beowulf集群(CLASS II Beowulf) 第二類(lèi)Beowulf集群是指那些采用了用戶定制設(shè)備的Beowulf集群。這類(lèi)集群系統(tǒng)最大優(yōu)點(diǎn)是具有很好的性能。例如,采用Myrinet作為集群系統(tǒng)的IPC網(wǎng)絡(luò)可以極大地提供進(jìn)程間消息傳遞延遲和速度。當(dāng)然它的缺點(diǎn)就是依賴于單個(gè)硬件提供商而且價(jià)格高昂。 不能說(shuō),哪一類(lèi)集群絕對(duì)優(yōu)于另一類(lèi)集群。這依賴于你的集群系統(tǒng)的需求和預(yù)算。 3 Beowulf集群體系結(jié)構(gòu) 如上所述,現(xiàn)實(shí)中存在形形色色的Beowulf集群。雖然它們都是原始Beowulf集群的衍生物,但是它們的體系結(jié)構(gòu)也存在各種各樣微小的差異。本文以IBM eServer Cluster 1300為例來(lái)闡述Beowulf集群體系結(jié)構(gòu)和系統(tǒng)組成。
圖1是Cluster 1300上Beowulf集群的系統(tǒng)視圖。無(wú)論是管理節(jié)點(diǎn)(Master Node)和計(jì)算節(jié)點(diǎn)都是Intel IA32架構(gòu)的xSeries PC服務(wù)器。它們通過(guò)網(wǎng)絡(luò)(以太網(wǎng)和Myrinet)相連接。所有的節(jié)點(diǎn)都運(yùn)行Linux操作系統(tǒng)。運(yùn)行在計(jì)算節(jié)點(diǎn)上的并行應(yīng)用程序采用MPI進(jìn)行完成并行進(jìn)程間的通信。計(jì)算節(jié)點(diǎn)通過(guò)管理節(jié)點(diǎn)和外部LAN相連。整個(gè)集群系統(tǒng)都在一套集群管理工具監(jiān)控之下。
圖 2 是 Cluster 1300上Beowulf集群的組件視圖。它揭示了Beowulf集群的組成部分。通常Beowulf集群由四個(gè)層次構(gòu)成:
本文的下面三個(gè)小節(jié)將分別介紹這四個(gè)層次。而本系列文章的后面兩片將更詳細(xì)的介紹它們。 3.1 Beowulf集群硬件和網(wǎng)絡(luò) Beowulf集群硬件和網(wǎng)絡(luò)層次需要解決的問(wèn)題是如何組織硬件使其達(dá)到最高的性價(jià)比。為了達(dá)到很好的性價(jià)比,Beowulf通常采用廉價(jià)的COTS硬件。當(dāng)然有時(shí)為了提供某些關(guān)鍵的性能,也會(huì)使用一些特殊的設(shè)備。 從硬件組織的角度說(shuō),Beowulf集群中的節(jié)點(diǎn)都是非共享內(nèi)存的計(jì)算機(jī),它們通過(guò)消息傳遞進(jìn)行通信。實(shí)際上,我們還有其他組織硬件完成并行計(jì)算的方式。 簡(jiǎn)單地說(shuō),有兩種組織硬件完成并行計(jì)算的方法:
當(dāng)然也存在將多個(gè)本地或共享內(nèi)存計(jì)算機(jī)相連并創(chuàng)造一個(gè)混和的共享內(nèi)存計(jì)算機(jī)系統(tǒng)的可能。但在最終用戶看來(lái),這種計(jì)算機(jī)系統(tǒng)就好像一個(gè)大型的共享內(nèi)存計(jì)算機(jī)。這種技術(shù)被我們叫做非一致內(nèi)存訪問(wèn)NUMA(Non Uniform Memory Access)。但是從底層說(shuō),一個(gè)NUMA計(jì)算機(jī)系統(tǒng)必須在節(jié)點(diǎn)間傳遞消息。 當(dāng)然也可以將共享內(nèi)存計(jì)算機(jī)作為一個(gè)本地內(nèi)存的計(jì)算機(jī)連入一個(gè)Beowulf集群系統(tǒng)。由于Linux系統(tǒng)支持SMP計(jì)算機(jī),所以Linux系統(tǒng)本身能夠在SMP中的多個(gè)CPU上調(diào)度作業(yè)。所以Beowulf集群本身就沒(méi)有必要識(shí)別集群的節(jié)點(diǎn)是不是共享內(nèi)存計(jì)算機(jī)了。 和SMP系統(tǒng)相比,集群系統(tǒng)有明顯的優(yōu)點(diǎn)。關(guān)于這一點(diǎn)請(qǐng)參閱本系列文章的第一篇。 因?yàn)?/span>Beowulf集群采用消息傳遞完成并行程序間通信,所以網(wǎng)絡(luò)傳輸成了系統(tǒng)的瓶頸。在實(shí)際的系統(tǒng)中,通常采用有兩套彼此的獨(dú)立的網(wǎng)絡(luò)設(shè)備。一套是普通的以太網(wǎng),用于象系統(tǒng)管理和文件服務(wù)等普通的網(wǎng)絡(luò)通信。另一套網(wǎng)絡(luò)是用于進(jìn)程間通信的高速網(wǎng),象Myrinet和Giganet。和100M以太網(wǎng)相比,這類(lèi)網(wǎng)絡(luò)具有低延遲和高帶寬的特性。 還有三類(lèi)設(shè)備雖然不是必須,但是對(duì)于集群管理卻是非常重要的:
3.2 Beowulf集群軟件 Beowulf集群在軟件層次面臨的問(wèn)題是如何在硬件層次上獲得最大的性能。通常,Beowulf集群采用Linux+MPI的方式支持并行計(jì)算。MPI是采用消息傳遞的方式實(shí)現(xiàn)并行程序間通信。雖然也可以采用其他的通信方法,但是消息傳遞模式是最適合于集群系統(tǒng)的。簡(jiǎn)單地說(shuō),有兩種在并行程序間傳遞并發(fā)的方法:
其他的方法也存在,但是這兩種方法應(yīng)用得最廣泛。雖然存在效率和移植的問(wèn)題,這兩種方法都可以在SMP,NUMA和Cluster上實(shí)現(xiàn)。 消息傳遞需要在CPU間拷貝數(shù)據(jù),而線程卻可以在CPU間共享數(shù)據(jù)。數(shù)據(jù)拷貝的速度和延遲是影響消息傳遞效率的最關(guān)鍵的因素。PVM和MPI是最常用的兩種消息傳遞API。消息傳遞也可以在線程上實(shí)現(xiàn),并且消息傳遞即可以用于集群系統(tǒng),也可以用于SMP系統(tǒng)。和線程相比,在SMP系統(tǒng)上使用消息傳遞的優(yōu)點(diǎn)在于可以很方便的把SMP上的應(yīng)用移植到集群系統(tǒng)上。 線程的最大特點(diǎn)是,線程間是共享數(shù)據(jù)。因此它在SMP系統(tǒng)上工作的更好。而且Linux本身也是支持Posix線程的。但是使用線程的最大缺點(diǎn)在于,很難將線程擴(kuò)展到SMP系統(tǒng)以外。雖然NUMA技術(shù)可以高效的做到這一點(diǎn),但是那非常昂貴而且Linux本身也不支持。 下表概括了線程和消息傳遞在SMP和集群系統(tǒng)上的比較:
3.3 Beowulf集群應(yīng)用 Beowulf集群的應(yīng)用層次位于硬件和軟件層次之上。它要解決的問(wèn)題是如何在實(shí)際的集群系統(tǒng)中并行化(PARALLEL)應(yīng)用中的并發(fā)(CONCURRENT)部分,從而使集群上的應(yīng)用達(dá)到最好的性能。 在闡述這部分之前,我們需要區(qū)分兩個(gè)概念: PARALLEL和CONCURRENT。程序的并發(fā)(CONCURRENT)部分是指程序中可以獨(dú)立計(jì)算的部分。程序的并行(PARALLEL)部分是指程序中在同一時(shí)間被分別執(zhí)行的并發(fā)(CONCURRENT)部分。 它們的區(qū)別是很重要的。并發(fā)是程序本身的屬性,而并行是計(jì)算機(jī)系統(tǒng)的屬性。并行的目的是獲得很好的性能。限制并行性能的因素是計(jì)算節(jié)點(diǎn)間通信的速度和延遲。大部分的Benchmark都有很高的并行性并且通信和延遲不是什么瓶頸。但是其他應(yīng)用卻沒(méi)有這么簡(jiǎn)單。對(duì)于這些應(yīng)用,有時(shí)候使并發(fā)部分并行執(zhí)行反而可能使應(yīng)用性能更低。簡(jiǎn)單的說(shuō),除非附加的通信時(shí)間代價(jià)小于并發(fā)節(jié)約的計(jì)算時(shí)間,否則并行執(zhí)行反而會(huì)降低效率。
程序員的任務(wù)就是決定哪些并發(fā)的部分需要并行執(zhí)行,而哪些不應(yīng)該并行執(zhí)行。這些決定最終會(huì)影響應(yīng)用程序的執(zhí)行效率。圖3描述了實(shí)際應(yīng)用中程序并發(fā)部分和通信計(jì)算時(shí)間比的關(guān)系。 在理想的系統(tǒng)中,通信計(jì)算時(shí)間比應(yīng)該是恒定的。任何并發(fā)部分都應(yīng)該實(shí)現(xiàn)為并行。不幸的是,實(shí)際的系統(tǒng),包括SMP系統(tǒng),都是圖3所示的那樣。所以在設(shè)計(jì)Beowulf集群應(yīng)用時(shí),必須認(rèn)識(shí)到并發(fā)帶來(lái)的效率依賴于在該系統(tǒng)上通信處理時(shí)間比。也正是因?yàn)檫@個(gè)原因,雖然可以把應(yīng)用移植到另一個(gè)并發(fā)系統(tǒng)上,但是并不能保證應(yīng)用在被移植的系統(tǒng)上仍然是高效的。一般來(lái)說(shuō),不存在可移植的且高效的應(yīng)用程序。 同樣的道理,使用更快的CPU也可能使你的應(yīng)用變慢。 1 Beowulf集群硬件和網(wǎng)絡(luò)體系結(jié)構(gòu)
圖 1是Cluster 1300的硬件和網(wǎng)絡(luò)體系結(jié)構(gòu)圖。從圖中可以看出,整個(gè)系統(tǒng)由5類(lèi)計(jì)算或網(wǎng)絡(luò)設(shè)備和5類(lèi)網(wǎng)絡(luò)組成。這5類(lèi)設(shè)備是:
5類(lèi)網(wǎng)絡(luò)是:
本文的以下部分將介紹這些設(shè)備和網(wǎng)絡(luò)的角色,功能和一般的配置。 2 Beowulf集群中的節(jié)點(diǎn) 這一節(jié)主要介紹Beowulf集群中的節(jié)點(diǎn),節(jié)點(diǎn)的類(lèi)型和相應(yīng)的功能。根據(jù)功能,我們可以把集群中的節(jié)點(diǎn)劃分為6種類(lèi)型:
雖然由多種類(lèi)型的節(jié)點(diǎn),但并不是說(shuō)一臺(tái)計(jì)算機(jī)只能是一種類(lèi)型的節(jié)點(diǎn)。一臺(tái)計(jì)算機(jī)所扮演的節(jié)點(diǎn)類(lèi)型要由集群的實(shí)際需求和計(jì)算機(jī)的配置決定。在小型集群系統(tǒng)中,用戶節(jié)點(diǎn)、控制節(jié)點(diǎn)、管理節(jié)點(diǎn)、存儲(chǔ)節(jié)點(diǎn)和安裝節(jié)點(diǎn)往往就是同一臺(tái)計(jì)算機(jī)。下面我們分別解釋這些類(lèi)型節(jié)點(diǎn)的作用。 2.1 用戶節(jié)點(diǎn)(User Node) 用戶節(jié)點(diǎn)是外部世界訪問(wèn)集群系統(tǒng)的網(wǎng)關(guān)。用戶通常登錄到這個(gè)節(jié)點(diǎn)上編譯并運(yùn)行作業(yè)。 用戶節(jié)點(diǎn)是外部訪問(wèn)集群系統(tǒng)強(qiáng)大計(jì)算或存儲(chǔ)能力的唯一入口,是整個(gè)系統(tǒng)的關(guān)鍵點(diǎn)。為了保證用戶節(jié)點(diǎn)的高可用性,應(yīng)該采用硬件冗余的容錯(cuò)方法,如采用雙機(jī)熱備份。至少應(yīng)該采用RAID(Redundant Array of Independent Disks)技術(shù)保證用戶節(jié)點(diǎn)的數(shù)據(jù)安全性。 2.2 控制節(jié)點(diǎn)(Control Node) 控制節(jié)點(diǎn)主要承擔(dān)兩種任務(wù)
通常控制節(jié)點(diǎn)是計(jì)算網(wǎng)絡(luò)中的關(guān)鍵點(diǎn),如果它失效,所有的計(jì)算節(jié)點(diǎn)都會(huì)失效。所以控制節(jié)點(diǎn)也應(yīng)該有硬件冗余保護(hù)。 2.3 管理節(jié)點(diǎn)(Management Node) 管理節(jié)點(diǎn)是集群系統(tǒng)各種管理措施的控制節(jié)點(diǎn):
2.4 存儲(chǔ)節(jié)點(diǎn)(Storage Node) 如果集群系統(tǒng)的應(yīng)用運(yùn)行需要大量的數(shù)據(jù),還需要一個(gè)存儲(chǔ)節(jié)點(diǎn)。顧名思義,存儲(chǔ)節(jié)點(diǎn)就是集群系統(tǒng)的數(shù)據(jù)存儲(chǔ)器和數(shù)據(jù)服務(wù)器。如果需要存儲(chǔ)TB級(jí)的數(shù)據(jù),一個(gè)存儲(chǔ)節(jié)點(diǎn)是不夠的。這時(shí)候你需要一個(gè)存儲(chǔ)網(wǎng)絡(luò)。通常存儲(chǔ)節(jié)點(diǎn)需要如下配置:
2.5 安裝節(jié)點(diǎn)(Installation Node) 安裝節(jié)點(diǎn)提供安裝集群系統(tǒng)的各種軟件,包括操作系統(tǒng)、各種運(yùn)行庫(kù)、管理軟件和應(yīng)用。它還必須開(kāi)放文件服務(wù),如FTP或NFS。 2.6 計(jì)算節(jié)點(diǎn) 計(jì)算節(jié)點(diǎn)是整個(gè)集群系統(tǒng)的計(jì)算核心。它的功能就是執(zhí)行計(jì)算。你需要根據(jù)你的需要和預(yù)算來(lái)決定采用什么樣的配置。理想的說(shuō),最好一個(gè)計(jì)算節(jié)點(diǎn)一個(gè)CPU。但是如果考慮到預(yù)算限制,也可以采用SMP。從性價(jià)比角度說(shuō),兩個(gè)CPU的SMP優(yōu)于3或4個(gè)CPU的SMP機(jī)器。 因?yàn)橐粋(gè)計(jì)算節(jié)點(diǎn)的失效通常不會(huì)影響其他節(jié)點(diǎn),所以計(jì)算節(jié)點(diǎn)不需要冗余的硬件保護(hù)。 2.7 集群中節(jié)點(diǎn)的部署 雖然由多種類(lèi)型的節(jié)點(diǎn),但并不是說(shuō)一臺(tái)計(jì)算機(jī)只能是一種類(lèi)型的節(jié)點(diǎn)。一臺(tái)計(jì)算機(jī)所扮演的節(jié)點(diǎn)類(lèi)型要由集群的實(shí)際需求和計(jì)算機(jī)的配置決定。在小型集群系統(tǒng)中,用戶節(jié)點(diǎn)、控制節(jié)點(diǎn)、管理節(jié)點(diǎn)、存儲(chǔ)節(jié)點(diǎn)和安裝節(jié)點(diǎn)往往就是同一臺(tái)計(jì)算機(jī),這臺(tái)計(jì)算機(jī)通常成為主節(jié)點(diǎn)(Master Node)。在這種情況下,集群就是由多個(gè)計(jì)算節(jié)點(diǎn)和一個(gè)主節(jié)點(diǎn)構(gòu)成。 在大型的集群系統(tǒng)中如何部署這些節(jié)點(diǎn)是個(gè)比較復(fù)雜的問(wèn)題,通常要綜合應(yīng)用需求,拓?fù)浣Y(jié)構(gòu)和預(yù)算等因素決定。 3 Beowulf集群的網(wǎng)絡(luò)結(jié)構(gòu) 3.1 集群中的網(wǎng)絡(luò)技術(shù) 因?yàn)橛?jì)算節(jié)點(diǎn)間的通信需求,IPC網(wǎng)絡(luò)的性能是Beowulf集群設(shè)計(jì)中非常重要的話題。由于應(yīng)用的需求,通常需要高帶寬、速度和低延遲的網(wǎng)絡(luò)。Beowulf集群的主要瓶頸通常也在于雙工的網(wǎng)絡(luò)通信,延遲和全局同步。 有好幾種網(wǎng)絡(luò)技術(shù)可以用于IPC網(wǎng)絡(luò)。它們是快速以太網(wǎng)、千兆以太網(wǎng)和Myrinet。為了達(dá)到高帶寬,通常需要采用交換機(jī)。交換機(jī)接受從雙絞線傳來(lái)的數(shù)據(jù)包,但是它和集線器不一樣。它不向所有連接的節(jié)點(diǎn)廣播這個(gè)數(shù)據(jù)包,它會(huì)根據(jù)目的地址哪個(gè)端口是接受者,然后把這個(gè)包傳給接受者。 3.2 Beowulf集群網(wǎng)絡(luò)拓?fù)?/span> 如上所述,通常Beowulf集群系統(tǒng)中有5類(lèi)網(wǎng)絡(luò)。其中Service Processor網(wǎng)絡(luò)是以太網(wǎng)連接起來(lái)的菊花鏈結(jié)構(gòu),Terminal網(wǎng)絡(luò)是計(jì)算節(jié)點(diǎn)和Terminal Server通過(guò)串口線連接起來(lái)的星形結(jié)構(gòu)。管理網(wǎng)絡(luò)、集群網(wǎng)絡(luò)和IPC網(wǎng)絡(luò)則是通過(guò)交換機(jī)相連的。雖然可以把這三個(gè)網(wǎng)絡(luò)配置在一個(gè)網(wǎng)段,但是通常我們把它們分化在三個(gè)虛擬網(wǎng)中(VLAN)。圖2是Beowulf集群網(wǎng)絡(luò)結(jié)構(gòu)。
3.2.1 管理網(wǎng)絡(luò)(Management VLAN) 管理網(wǎng)絡(luò)用于訪問(wèn)IPC網(wǎng)絡(luò)交換機(jī)、Service Processor網(wǎng)絡(luò)和Terminal Server。HTTP、Telnet和SNMP等協(xié)議被用來(lái)管理這些設(shè)備。 3.2.2 集群網(wǎng)絡(luò)(Cluster VLAN) 計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)用這個(gè)網(wǎng)絡(luò)進(jìn)行通常的網(wǎng)絡(luò)I/O。 3.2.3 IPC網(wǎng)絡(luò)(IPC VLAN) 用于計(jì)算節(jié)點(diǎn)間的高速通信。通常由特殊的高速網(wǎng)絡(luò)設(shè)備構(gòu)成。 3.2.4 Service Processor網(wǎng)絡(luò) 以太網(wǎng)連接起來(lái)的菊花鏈結(jié)構(gòu),用于系統(tǒng)管理目的。 3.2.5 Terminal網(wǎng)絡(luò) Terminal網(wǎng)絡(luò)是計(jì)算節(jié)點(diǎn)和Terminal Server通過(guò)串口線連接起來(lái)的星形結(jié)構(gòu)。Terminal Server是外界訪問(wèn)這個(gè)網(wǎng)絡(luò)的接口。管理節(jié)點(diǎn)通過(guò)Terminal Server虛擬出來(lái)的終端可以登錄到其他節(jié)點(diǎn)上完成必要的管理工作。 3.2.6 KVM網(wǎng)絡(luò) KVM網(wǎng)絡(luò)是KVM Switch和各節(jié)點(diǎn)連接的星形網(wǎng)絡(luò)。其實(shí)把KVM網(wǎng)絡(luò)稱(chēng)為一個(gè)網(wǎng)絡(luò)并恰當(dāng)。KVM是指Keyboard、Video和Mouse。通過(guò)KVM Switch的切換,管理員可以在管理各個(gè)節(jié)點(diǎn)。 4 附錄:一個(gè)Cluster 1300集群系統(tǒng)的配置清單 Qty .P/N Description IBM Products Compute Nodes 4 865431Y xSeries 330 1000 256 256/OPEN 24X 4 37L7202 18.2GB Ultra160 HDD 4 10K3806 866Mhz 133MHz 256K 12 33L3144 256MB 133MHz ECC SDRAM RDIMM MEMORY 1 06P4792 C2T Cable Kit
Management Node 1 86564RY xSeries 340,866Mhz,128Mb 1 19k4630 866Mhz 133MHz 256K 4 33L3144 256MB 133MHz ECC SDRAM RDIMM MEMORY 1 37L6091 ServeRAID 4L LVD SCSI Adapter 3 37L7202 18.2GB 7200rpm Ultra160 SCSI Hot-Swap SL H 1 34L1501 Netfinity 10/100 Ethernet PCI Adapter 2 1 34L0301 Netfinity Gigabit Ethernet SX Adapter 1 37L6880 270W Redundant HS Power Supply
Shared Resources 1 9306200 Netbay 22 Half Rack 1 3619702 Netbay 22 Rack Extension Kit 1 9411AG1 Monitor (flatpanel) 1 L6888 Flatpanel rack mount kit 1 09N4291 8x2 Console Switch (KVM Switch) 2 94G7447 Console Cable Set 12ft (to KVM switch) 1 28L3644 Spacesaver Keyboard/trackpoint 1 28L4707 Keyboard tray 2 37L6866 Netbay Universal Voltage PDU 1 01K7209 ASMA Adapter (Wiseman card) 1 36L9973 1M Fibre Channel Cable 1 03K9308 Short Wave GBIC (Gigabit module)
Equinox Products 1 990209 Equinox ELS-16 1 210059 Micro-Transceiver,AUI (DB-15)to 10BaseT 1 790091 ELS Rackmount kit 4 210062 Equinox Serial Adapters 4 690226 10'Serial Cables
Myrinet Networking Products 1 M3-E16 Myrinet2000 3-slot Chassis 1 M3-M Management Module 4 M3S-CB-5M Myricom Myrinet LAN cables 4 M3S-PCI64B-2 Myrinet LAN Card 1 M3SW16-8S Myrinet 8-port Serial modules
Miscellaneous Products 8 3'CAT5 Cables 5 1'CAT5 Cables
Extreme Networks Products 1 13020 Summit24 -Full Layer 3-X
1 Beowulf集群軟件結(jié)構(gòu)
圖1 是Beowulf集群的軟件體系機(jī)構(gòu)。一般來(lái)說(shuō),Beowulf集群由如下幾個(gè)軟件部分組成:
2 操作系統(tǒng) 并不是每種操作系統(tǒng)都適合高性能集群系統(tǒng)。理論上說(shuō),硬件的體系結(jié)構(gòu)、操作系統(tǒng)的任務(wù)調(diào)度方式和IPC的方式是決定應(yīng)用并行化效果的主要因素。根據(jù)這三個(gè)因素,我們可以歸納出如下5種實(shí)施應(yīng)用并行化的平臺(tái):
Beowulf集群使用第5種類(lèi)型平臺(tái)。它可以由SMP和PC服務(wù)器組成,以Linux為操作系統(tǒng),以MPI或PVM這種消息傳遞方式作為通信方法。 3 文件系統(tǒng) 文件系統(tǒng)是操作系統(tǒng)的重要組成部分,用于存儲(chǔ)程序和數(shù)據(jù)。如何在各節(jié)點(diǎn)間高效、一致和簡(jiǎn)捷的實(shí)現(xiàn)數(shù)據(jù)共享是集群系統(tǒng)對(duì)文件系統(tǒng)提出的挑戰(zhàn)。 3.1 集群和文件系統(tǒng) 很明顯,那種僅能管理本地存儲(chǔ)的文件系統(tǒng)(如EXT和FAT)是無(wú)法滿足集群系統(tǒng)對(duì)文件共享的要求的。在集群環(huán)境下,最容易想到,也是最容易實(shí)現(xiàn)的文件系統(tǒng)就是分布式文件系統(tǒng)。相當(dāng)于本地文件系統(tǒng),分布式文件系統(tǒng)有如下優(yōu)點(diǎn):
分布式文件系統(tǒng)可以使集群的節(jié)點(diǎn)間簡(jiǎn)捷地實(shí)現(xiàn)共享。但是為了提供性能,分布式文件系統(tǒng)通常需要使用本地的緩存(Cache), 所以它很難保證數(shù)據(jù)在集群系統(tǒng)范圍的一致性。而且往往分布式文件系統(tǒng)中只有一份數(shù)據(jù),所以很容易發(fā)生單點(diǎn)失效。 建立在共享磁盤(pán)(Share-Disk)上的并行文件系統(tǒng)可以克服分布式文件系統(tǒng)的這些缺點(diǎn)。通過(guò)使用在節(jié)點(diǎn)共享的存儲(chǔ)設(shè)備,并行文件系統(tǒng)具有很多優(yōu)點(diǎn):
3.2 集群中的數(shù)據(jù)共享形式 下面通過(guò)給出幾個(gè)集群中使用具體的數(shù)據(jù)共享的方法。其中rsync是建立在本地文件系統(tǒng)之上,NFS和Inteemezzo屬于分布式文件系統(tǒng)(確切的說(shuō),NFS只是網(wǎng)絡(luò)文件系統(tǒng)),GFS屬于并行文件系統(tǒng),而Backend-database則屬于不同于文件共享的另一種形式的共享。
3.2.1 rsync rsync是一種簡(jiǎn)單的文件共享實(shí)現(xiàn)方式。集群中的每個(gè)節(jié)點(diǎn)都有一份數(shù)據(jù)復(fù)本,復(fù)本間使用rsync進(jìn)行同步。因?yàn)楣?jié)點(diǎn)需要的數(shù)據(jù)就在本地,所以這種方法具有很高的可用性,不會(huì)出現(xiàn)單點(diǎn)失效現(xiàn)象。 如果需要的共享的數(shù)據(jù)量很小,而且很少更新時(shí),可以采用這種方式。靜態(tài)網(wǎng)頁(yè)和小的FTP站點(diǎn)的可以使用這種共享方式。 3.2.2 NFS 這也是一種容易實(shí)現(xiàn)的方式。存儲(chǔ)節(jié)點(diǎn)通過(guò)NFS將自己本地的文件輸出,其他節(jié)點(diǎn)則把存儲(chǔ)節(jié)點(diǎn)輸出的文件系統(tǒng)mount到本地文件系統(tǒng)。NFS方式的存在兩個(gè)很大的缺點(diǎn):
當(dāng)然使用多個(gè)互為備份的NFS服務(wù)器可以改善性能和避免單點(diǎn)失效,但是這樣又會(huì)帶來(lái)如何實(shí)時(shí)保持備份服務(wù)器間數(shù)據(jù)一致性的問(wèn)題。 NFS方式適合于共享訪問(wèn)數(shù)據(jù)量不大的小型集群系統(tǒng)。 3.2.3 GFS GFS(Global File System)實(shí)現(xiàn)了存儲(chǔ)設(shè)備的網(wǎng)絡(luò)共享。這些存儲(chǔ)設(shè)備可以是共享SCSI(Shared SCSI)和共享通道(Fibre Channel - FC)。GFS包裝這些存儲(chǔ)設(shè)備使得它們好像節(jié)點(diǎn)本地的文件系統(tǒng)。GFS的主要優(yōu)點(diǎn)在于:
GFS可以將物理上分離的存儲(chǔ)設(shè)備虛擬為一個(gè)存儲(chǔ)而且能平衡訪問(wèn)負(fù)載。GFS還實(shí)現(xiàn)了文件鎖和實(shí)時(shí)文件系統(tǒng)。 3.2.4 Intermezzo Intermezzo實(shí)現(xiàn)了一個(gè)分布式的文件系統(tǒng)。它采用客戶/服務(wù)器模式。服務(wù)器擁有權(quán)威的數(shù)據(jù),客戶節(jié)點(diǎn)僅有本地緩沖的版本。它們通過(guò)普通的網(wǎng)絡(luò)進(jìn)行同步。Intermezzo支持?jǐn)嚅_(kāi)連接下文件操作。在下次恢復(fù)連接時(shí),它會(huì)集成本地的改動(dòng)到服務(wù)器上。Intermezzo擁有象GFS一樣的可用性和可擴(kuò)展性。但是它無(wú)法保證數(shù)據(jù)的實(shí)時(shí)一致性。
3.2.5 Backend Database 基于后端數(shù)據(jù)庫(kù)的共享是完全不同于文件共享的方式。后端數(shù)據(jù)庫(kù)系統(tǒng)解決了數(shù)據(jù)的一致性、性能、可用性和可擴(kuò)展性問(wèn)題。但是數(shù)據(jù)庫(kù)的訪問(wèn)方法要比文件訪問(wèn)復(fù)雜的多。
4 并行化應(yīng)用程序 并行化應(yīng)用程序,使其更高效的運(yùn)行是使用Beowulf集群系統(tǒng)的最終目的。一般說(shuō),并行化應(yīng)用程序分為三個(gè)步驟:
在并行化應(yīng)用程序的過(guò)程中,需要開(kāi)發(fā)環(huán)境、并行開(kāi)發(fā)庫(kù)和各種工具的支持。這些軟件都是Beowulf集群軟件體系結(jié)構(gòu)中重要的組成部分。 4.1 確定應(yīng)用程序的并發(fā)部分 從實(shí)用的角度說(shuō),應(yīng)用程序有兩種類(lèi)型的并發(fā):計(jì)算和I/O。盡管在多數(shù)情況下這兩者是正交的,但是也存在一些應(yīng)用同時(shí)需要這兩種并發(fā)性。有一些工具可以用來(lái)幫助分析應(yīng)用程序的并發(fā),而且通常這些工具都是專(zhuān)門(mén)為Fortran設(shè)計(jì)的。 4.2 分析并行的效率 分析并行的效率是并行化應(yīng)用程序中很重要的一個(gè)步驟。正確的分析并行的效率可以幫助你在有限的經(jīng)費(fèi)下最大化應(yīng)用的執(zhí)行效率。往往Beowulf集群的需要和應(yīng)用的需要有些許的差別。比如,CPU消耗型的應(yīng)用往往需要的是稍微快一點(diǎn)的CPU和高速低延遲的網(wǎng)絡(luò),而I/O消耗型的應(yīng)用需要的是稍微慢一點(diǎn)的CPU和快速以太網(wǎng)。 如果沒(méi)有分析工具,你只能使用猜測(cè)和估計(jì)的辦法完成這一步驟。一般來(lái)說(shuō),如果在應(yīng)用的一部分中,計(jì)算的時(shí)間是分鐘級(jí)而數(shù)據(jù)傳輸?shù)臅r(shí)間是秒級(jí),那么這一部分可以并行執(zhí)行。但是如果并行后計(jì)算時(shí)間降到秒級(jí),你就需要實(shí)際測(cè)量一下再做權(quán)衡。 另外,對(duì)于I/O消耗型的應(yīng)用,Eadline-Dedkov法則對(duì)你做決定有些幫助:如果兩個(gè)并行系統(tǒng)具有相同的CPU指標(biāo),慢CPU和相應(yīng)具有低速CPU間通信網(wǎng)絡(luò)的系統(tǒng)反而具有較好的性能。 4.3 實(shí)現(xiàn)應(yīng)用程序的并發(fā) 有兩種方法去實(shí)現(xiàn)應(yīng)用程序的并發(fā):顯式并發(fā)和隱式并發(fā)。 4.3.1 顯式并行化 顯式并行化是指由開(kāi)發(fā)者決定程序的并行。開(kāi)發(fā)者通過(guò)在程序中增加PVM或MPI消息,或者增加程序執(zhí)行的線程從而達(dá)到程序的并行化。顯式并行化通常難以實(shí)現(xiàn)和調(diào)試。為了簡(jiǎn)化顯式并行化,某些開(kāi)發(fā)庫(kù)中增加了一些函數(shù)用于簡(jiǎn)化標(biāo)準(zhǔn)并行方法的實(shí)現(xiàn)。另外也有專(zhuān)門(mén)用于調(diào)試并行程序的工具。TotoalView(http://www.etnus.com/Products/TotalView/index.html)就是一個(gè)源碼級(jí)的C、C++和Fortran調(diào)試工具。它擁有方便的圖形化界面,可以用于調(diào)試多線程、多進(jìn)程和集群應(yīng)用程序。 4.3.2 隱式并行化 隱式并行化是由編譯器來(lái)決定程序的并行性,高性能Fortran就是這類(lèi)編譯器。隱式并行化中,程序開(kāi)發(fā)者向編譯器提供一些程序并行的特征,編譯器根據(jù)這些特征做出程序并行化的決定。通常編譯器可以給并行應(yīng)用提供一定程度的效率和移植性,但是不是最好的。 從用戶角度看,集群系統(tǒng)就好像一臺(tái)服務(wù)器或者PC。很多用戶可以同時(shí)使用這個(gè)系統(tǒng)。但是當(dāng)太多的用戶使用集群系統(tǒng)時(shí),系統(tǒng)性能會(huì)很差。資源管理就是管理用戶提交的作業(yè),合理給各個(gè)作業(yè)分配資源從而保證集群系統(tǒng)高效運(yùn)行。作業(yè)管理通常由資源管理器和作業(yè)調(diào)度策略器組成。 從系統(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ù):
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è)部分:
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主要有如下特征:
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ì)這類(lèi)事件感興趣的個(gè)體這個(gè)事件發(fā)生了。事件服務(wù)可以分為Push(也稱(chēng)為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è)需要硬件支持特殊管理功能:
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ī)制是: 1. 網(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ù)的安裝。 2. 網(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。這些工具可以分為如下幾類(lèi): 1. 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屬于這中安裝方法。基于Script的安裝比較靈活,但是它是操作系統(tǒng)依賴型的。象KickStart只支持Redhat Linux。 2. 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腳本完成安裝后的配置。 3. c. 基于Cloning的安裝:和Imaging安裝方式相同的是,Cloning安裝也采用系統(tǒng)映象。但是Cloning中的系統(tǒng)映象是樣機(jī)上硬盤(pán)分區(qū)的Clone。因此,Cloning安裝不需要識(shí)別系統(tǒng)鏡像中的文件系統(tǒng)類(lèi)型。所以它是獨(dú)立于文件系統(tǒng)的,它只依賴于操作系統(tǒng)內(nèi)核支持的硬盤(pán)設(shè)備類(lèi)型(IDE或SCSI)。和Imaging一樣,Cloning的很大缺點(diǎn)是很難提供獨(dú)立于操作系統(tǒng)的配置方法。而且相對(duì)于Imaging而言,Cloning效率更低。你可以簡(jiǎn)單的用dd命令實(shí)現(xiàn)Clone。 下表歸納了幾種安裝工具的特點(diǎn):
3.7 域管理 你可以簡(jiǎn)單的把集群系統(tǒng)的域管理理解為結(jié)點(diǎn)管理,它主要包括如下簡(jiǎ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和類(lèi)UNIX平臺(tái)。 下表比較了以上三種集群系統(tǒng)管理軟件:
|











