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