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