Linux高性能計(jì)算集群-概述
本文是Linux高性能集群系列文章的第一部分。這一部分介紹了集群系統(tǒng)的基本知識(shí),并解釋了兩類主要的集群:高可用集群和高性能集群。本系列文章的后面幾部分將圍繞Beowulf高性能集群展開。筆者先介紹Beowulf集群的體系結(jié)構(gòu),然后陸續(xù)介紹Beowulf集群的硬件、網(wǎng)絡(luò)、軟件和應(yīng)用程序的部分的系統(tǒng)構(gòu)成,最后集群系統(tǒng)管理軟件。
1 集群
1.1 什么是集群
簡單的說,集群(cluster)就是一組計(jì)算機(jī),它們作為一個(gè)整體向用戶提供一組網(wǎng)絡(luò)資源。這些單個(gè)的計(jì)算機(jī)系統(tǒng)就是集群的節(jié)點(diǎn)(node)。一個(gè)理想的集群是,用戶從來不會(huì)意識(shí)到集群系統(tǒng)底層的節(jié)點(diǎn),在他/她們看來,集群是一個(gè)系統(tǒng),而非多個(gè)計(jì)算機(jī)系統(tǒng)。并且集群系統(tǒng)的管理員可以隨意增加和刪改集群系統(tǒng)的節(jié)點(diǎn)。
1.2 為什么需要集群
集群并不是一個(gè)全新的概念,其實(shí)早在七十年代計(jì)算機(jī)廠商和研究機(jī)構(gòu)就開始了對(duì)集群系統(tǒng)的研究和開發(fā)。由于主要用于科學(xué)工程計(jì)算,所以這些系統(tǒng)并不為大家所熟知。直到Linux集群的出現(xiàn),集群的概念才得以廣為傳播。
對(duì)集群的研究起源于集群系統(tǒng)的良好的性能可擴(kuò)展性(scalability)。提高CPU主頻和總線帶寬是最初提供計(jì)算機(jī)性能的主要手段。但是這一手段對(duì)系統(tǒng)性能的提供是有限的。接著人們通過增加CPU個(gè)數(shù)和內(nèi)存容量來提高性能,于是出現(xiàn)了向量機(jī),對(duì)稱多處理機(jī)(SMP)等。但是當(dāng)CPU的個(gè)數(shù)超過某一閾值,象SMP這些多處理機(jī)系統(tǒng)的可擴(kuò)展性就變的極差。主要瓶頸在于CPU訪問內(nèi)存的帶寬并不能隨著CPU個(gè)數(shù)的增加而有效增長。與SMP相反,集群系統(tǒng)的性能隨著CPU個(gè)數(shù)的增加幾乎是線性變化的。圖1顯示了這中情況。
圖1. 幾種計(jì)算機(jī)系統(tǒng)的可擴(kuò)展性
集群系統(tǒng)的優(yōu)點(diǎn)并不僅在于此。下面列舉了集群系統(tǒng)的主要優(yōu)點(diǎn):
高可擴(kuò)展性:如上所述。
高可用性:集群中的一個(gè)節(jié)點(diǎn)失效,它的任務(wù)可以傳遞給其他節(jié)點(diǎn)。可以有效防止單點(diǎn)失效。
高性能:負(fù)載平衡集群允許系統(tǒng)同時(shí)接入更多的用戶。
高性價(jià)比:可以采用廉價(jià)的符合工業(yè)標(biāo)準(zhǔn)的硬件構(gòu)造高性能的系統(tǒng)。
1.2.1 集群系統(tǒng)的分類
雖然 根據(jù)集群系統(tǒng)的不同特征可以有多種分類方法,但是一般我們把集群系統(tǒng)分為兩類:
高可用(High Availability)集群,簡稱HA集群。這類集群致力于提供高度可靠的服務(wù)。
高性能計(jì)算(High Perfermance Computing)集群,簡稱HPC集群。這類集群致力于提供單個(gè)計(jì)算機(jī)所不能提供的強(qiáng)大的計(jì)算能力。
2 高可用集群
2.1 什么是高可用性
計(jì)算機(jī)系統(tǒng)的可用性(availability)是通過系統(tǒng)的可靠性(reliability)和可維護(hù)性(maintainability)來度量的。工程上通常用平均無故障時(shí)間(MTTF)來度量系統(tǒng)的可靠性,用平均維修時(shí)間(MTTR)來度量系統(tǒng)的可維護(hù)性。于是可用性被定義為:
MTTF/(MTTF+MTTR)*100%
業(yè)界根據(jù)可用性把計(jì)算機(jī)系統(tǒng)分為如下幾類:
可用比例 (Percent Availability) |
年停機(jī)時(shí)間 (downtime/year) |
可用性分類 |
99.5 | 3.7天 | 常規(guī)系統(tǒng)(Conventional) |
99.9 | 8.8小時(shí) | 可用系統(tǒng)(Available) |
99.99 | 52.6分鐘 | 高可用系統(tǒng)(Highly Available) |
99.999 | 5.3分鐘 | Fault Resilient |
99.9999 | 32秒 | Fault Tolerant |
表1. 系統(tǒng)可用性分類
對(duì)于關(guān)鍵業(yè)務(wù),停機(jī)通常是災(zāi)難性的。因?yàn)橥C(jī)帶來的損失也是巨大的。下面的統(tǒng)計(jì)數(shù)字列舉了不同類型企業(yè)應(yīng)用系統(tǒng)停機(jī)所帶來的損失。
應(yīng)用系統(tǒng) | 每分鐘損失(美元) |
#p#page_title#e#呼叫中心(Call Center) | 27000 |
企業(yè)資源計(jì)劃(ERP)系統(tǒng) | 13000 |
供應(yīng)鏈管理(SCM)系統(tǒng) | 11000 |
電子商務(wù)(eCommerce)系統(tǒng) | 10000 |
客戶服務(wù)(Customer Service Center)系統(tǒng) | 27000 |
表 2. 停機(jī)給企業(yè)帶來的損失
隨著企業(yè)越來越依賴于信息技術(shù),由于系統(tǒng)停機(jī)而帶來的損失也越拉越大。
2.2 高可用集群
高可用集群就是采用集群技術(shù)來實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)的高可用性。高可用集群通常有兩種工作方式:
容錯(cuò)系統(tǒng):通常是主從服務(wù)器方式。從服務(wù)器檢測主服務(wù)器的狀態(tài),當(dāng)主服務(wù)工作正常時(shí),從服務(wù)器并不提供服務(wù)。但是一旦主服務(wù)器失效,從服務(wù)器就開始代替主服務(wù)器向客戶提供服務(wù)。
負(fù)載均衡系統(tǒng):集群中所有的節(jié)點(diǎn)都處于活動(dòng)狀態(tài),它們分?jǐn)傁到y(tǒng)的工作負(fù)載。一般Web服務(wù)器集群、數(shù)據(jù)庫集群和應(yīng)用服務(wù)器集群都屬于這種類型。
關(guān)于高可用集群的討論很多,這里就不進(jìn)行深入的闡述了。
3 高性能計(jì)算集群
3.1 什么是高性能計(jì)算集群
簡單的說,高性能計(jì)算(High-Performance Computing)是計(jì)算機(jī)科學(xué)的一個(gè)分支,它致力于開發(fā)超級(jí)計(jì)算機(jī),研究并行算法和開發(fā)相關(guān)軟件。高性能計(jì)算主要研究如下兩類問題:
大規(guī)??茖W(xué)問題,象天氣預(yù)報(bào)、地形分析和生物制藥等;
存儲(chǔ)和處理海量數(shù)據(jù),象數(shù)據(jù)挖掘、圖象處理和基因測序;
顧名思義,高性能集群就是采用集群技術(shù)來研究高性能計(jì)算。
3.2 高性能計(jì)算分類
高性能計(jì)算的分類方法很多。這里從并行任務(wù)間的關(guān)系角度來對(duì)高性能計(jì)算分類。
3.2.1 高吞吐計(jì)算(High-throughput Computing)
有一類高性能計(jì)算,可以把它分成若干可以并行的子任務(wù),而且各個(gè)子任務(wù)彼此間沒有什么關(guān)聯(lián)。象在家搜尋外星人( SETI@HOME -- Search for Extraterrestrial Intelligence at Home )就是這一類型應(yīng)用。這一項(xiàng)目是利用Internet上的閑置的計(jì)算資源來搜尋外星人。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)檫@種類型應(yīng)用的一個(gè)共同特征是在海量數(shù)據(jù)上搜索某些模式,所以把這類計(jì)算稱為高吞吐計(jì)算。所謂的Internet計(jì)算都屬于這一類。按照 Flynn的分類,高吞吐計(jì)算屬于SIMD(Single Instruction/Multiple Data)的范疇。
3.2.2 分布計(jì)算(Distributed Computing)
另一類計(jì)算剛好和高吞吐計(jì)算相反,它們雖然可以給分成若干并行的子任務(wù),但是子任務(wù)間聯(lián)系很緊密,需要大量的數(shù)據(jù)交換。按照Flynn的分類,分布式的高性能計(jì)算屬于MIMD(Multiple Instruction/Multiple Data)的范疇。
3.3 Linux高性能集群系統(tǒng)
當(dāng)論及Linux高性能集群時(shí),許多人的第一反映就是Beowulf。起初,Beowulf只是一個(gè)著名的科學(xué)計(jì)算集群系統(tǒng)。以后的很多集群都采用 Beowulf類似的架構(gòu),所以,實(shí)際上,現(xiàn)在Beowulf已經(jīng)成為一類廣為接受的高性能集群的類型。盡管名稱各異,很多集群系統(tǒng)都是Beowulf集群的衍生物。當(dāng)然也存在有別于Beowulf的集群系統(tǒng),COW和Mosix就是另兩類著名的集群系統(tǒng)。
3.3.1 Beowulf集群
簡單的說,Beowulf是一種能夠?qū)⒍嗯_(tái)計(jì)算機(jī)用于并行計(jì)算的體系結(jié)構(gòu)。通常Beowulf系統(tǒng)由通過以太網(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ò)連接。它使用的是常見的硬件設(shè)備,象普通PC、以太網(wǎng)卡和集線器。它很少使用特別定制的硬件和特殊的設(shè)備。Beowulf集群的軟件也是隨處可見的,象Linux、PVM和MPI。
本文的以后幾部分將詳細(xì)介紹 #p#page_title#e#Beowulf集群系統(tǒng)的硬件、網(wǎng)絡(luò)、軟件和應(yīng)用體系結(jié)構(gòu)。
3.3.2 Beowulf集群和COW集群
象Beowulf一樣,COW(Cluster Of Workstation)也是由最常見的硬件設(shè)備和軟件系統(tǒng)搭建而成。通常也是由一個(gè)控制節(jié)點(diǎn)和多個(gè)計(jì)算節(jié)點(diǎn)構(gòu)成。COW和Beowulf的主要區(qū)別在于:
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)都是專職于并行計(jì)算,并且進(jìn)行了性能優(yōu)化。它們采用高速網(wǎng)(Myrinet或Giganet)上的消息傳遞(PVM或MPI)進(jìn)行進(jìn)程間通信(IPC)。
因?yàn)?/span>COW中的計(jì)算節(jié)點(diǎn)主要的目的是桌面應(yīng)用,所以它們都具有顯示器、鍵盤和鼠標(biāo)等外設(shè)。而Beowulf的計(jì)算節(jié)點(diǎn)通常沒有這些外設(shè),對(duì)這些計(jì)算節(jié)點(diǎn)的訪問通常是在管理節(jié)點(diǎn)上通過網(wǎng)絡(luò)或串口線實(shí)現(xiàn)的。
因?yàn)檫B接COW中計(jì)算節(jié)點(diǎn)的通常是普通的局域網(wǎng),所以COW上的高性能應(yīng)用通常是象SETI@HOME 這樣的SIMD的高吞吐計(jì)算。而Beowulf無論從硬件、網(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ì)于他來說, Mosix集群就是運(yùn)行Linux的一臺(tái)PC。盡管現(xiàn)在存在著不少的問題,Mosix始終是引人注目的集群系統(tǒng)。