Linux高性能計算集羣 - 概述

1 集羣

1.1 什麼是集羣

簡單的說,集羣(cluster)就是一組計算機,它們作爲一個整體向用戶提供一組網絡資源。這些單個的計算機系統就是集羣的節點(node)。一 個理想的集羣是,用戶從來不會意識到集羣系統底層的節點,在他/她們看來,集羣是一個系統,而非多個計算機系統。並且集羣系統的管理員可以隨意增加和刪改 集羣系統的節點。

1.2 爲什麼需要集羣

集羣並不是一個全新的概念,其實早在七十年代計算機廠商和研究機構就開始了對集羣系統的研究和開發。由於主要用於科學工程計算,所以這些系統並不爲大家所熟知。直到Linux集羣的出現,集羣的概念才得以廣爲傳播。

對集羣的研究起源於集羣系統的良好的性能可擴展性(scalability)。提高CPU主頻和總線帶寬是最初提供計算機性能的主要手段。但是這一 手段對系統性能的提供是有限的。接着人們通過增加CPU個數和內存容量來提高性能,於是出現了向量機,對稱多處理機(SMP)等。但是當CPU的個數超過 某一閾值,象SMP這些多處理機系統的可擴展性就變的極差。主要瓶頸在於CPU訪問內存的帶寬並不能隨着CPU個數的增加而有效增長。與SMP相反,集羣 系統的性能隨着CPU個數的增加幾乎是線性變化的。圖1顯示了這中情況。

圖1. 幾種計算機系統的可擴展性
圖1. 幾種計算機系統的可擴展性

集羣系統的優點並不僅在於此。下面列舉了集羣系統的主要優點:

  1. 高可擴展性:如上所述。
  2. 高可用性:集羣中的一個節點失效,它的任務可以傳遞給其他節點。可以有效防止單點失效。
  3. 高性能:負載平衡集羣允許系統同時接入更多的用戶。
  4. 高性價比:可以採用廉價的符合工業標準的硬件構造高性能的系統。

1.2.1 集羣系統的分類

雖然 根據集羣系統的不同特徵可以有多種分類方法,但是一般我們把集羣系統分爲兩類:

  • 高可用(High Availability)集羣,簡稱HA集羣。這類集羣致力於提供高度可靠的服務。
  • 高性能計算(High Perfermance Computing)集羣,簡稱HPC集羣。這類集羣致力於提供單個計算機所不能提供的強大的計算能力。

2 高可用集羣

2.1 什麼是高可用性

計算機系統的可用性(availability)是通過系統的可靠性(reliability)和可維護性(maintainability)來度 量的。工程上通常用平均無故障時間(MTTF)來度量系統的可靠性,用平均維修時間(MTTR)來度量系統的可維護性。於是可用性被定義爲:

MTTF/(MTTF+MTTR)*100%

業界根據可用性把計算機系統分爲如下幾類:

可用比例
(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

表1. 系統可用性分類

對於關鍵業務,停機通常是災難性的。因爲停機帶來的損失也是巨大的。下面的統計數字列舉了不同類型企業應用系統停機所帶來的損失。

應用系統 每分鐘損失(美元)
呼叫中心(Call Center) 27000
企業資源計劃(ERP)系統 13000
供應鏈管理(SCM)系統 11000
電子商務(eCommerce)系統 10000
客戶服務(Customer Service Center)系統 27000

表 2. 停機給企業帶來的損失

隨着企業越來越依賴於信息技術,由於系統停機而帶來的損失也越拉越大。

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的主要區別在於:

  1. COW中的計算節點主要都是閒置的計算資源,如辦公室中的桌面工作站,它們就是普通的PC,採用普通的局 域網進行連接。因爲這些計算節點白天會作爲工作站使用,所以主要的集羣計算髮生在晚上和週末等空閒時間。而Beowulf中的計算節點都是專職於並行計 算,並且進行了性能優化。它們採用高速網(Myrinet或Giganet)上的消息傳遞(PVM或MPI)進行進程間通信(IPC)。
  2. 因爲COW中的計算節點主要的目的是桌面應用,所以它們都具有顯示器、鍵盤和鼠標等外設。而Beowulf的計算節點通常沒有這些外設,對這些計算節點的訪問通常是在管理節點上通過網絡或串口線實現的。
  3. 因爲連接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始終是引人注目的集羣系統。

4 參考文獻

5 關於作者

金戈,IBM軟件工程師,在IBM中國開發中心主持Linux集羣系統開發工作。你可以通過 [email protected] 和他聯繫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章