1、叢集
1.1 什麼是叢集
簡單的說,叢集(cluster)就是一組電腦,它們作為一個整體向使用者提供一組網路資源。這些單個的電腦系統就是叢集的節點(node)。一個理想的叢集是,使用者從來不會意識到叢集系統底層的節點,在他/她們看來,叢集是一個系統,而非多個電腦系統。並且叢集系統的管理員可以隨意增加和刪改叢集系統的節點。
1.2 為什麼需要叢集
叢集並不是一個全新的概念,其實早在七十年代電腦廠商和研究機構就開始了對叢集系統的研究和開發。由於主要用於科學工程計算,所以這些系統並不為大家所熟知。直到Linux叢集的出現,叢集的概念才得以廣為傳播。
對叢集的研究起源於叢集系統的良好的效能可擴充性(scalability)。提高cpu主頻和匯流排頻寬是最初提供電腦效能的主要手段。但是這一手段對系統效能的提供是有限的。接著人們通過增加CPU個數和記憶體容量來提高效能,於是出現了向量機,對稱式多處理機(SMP)等。但是當CPU的個數超過某一閾值,象SMP這些多處理機系統的可擴充性就變的極差。主要瓶頸在於CPU訪問記憶體的頻寬並不能隨著CPU個數的增加而有效增長。與SMP相反,叢集系統的效能隨著CPU個數的增加幾乎是線性變化的。圖1顯示了這中情況。
圖1. 幾種電腦系統的可擴充性
叢集系統的優點並不僅在於此。下面列舉了叢集系統的主要優點:
高可擴充性:如上所述。
高可用性:叢集中的一個節點失效,它的任務可以傳遞給其他節點。可以有效防止單點失效。
高效能:Server Load Balancer叢集允許系統同時接入更多的使用者。
高性價比:可以採用廉價的符合工業標準的硬體構造高效能的系統。
1.2.1 叢集系統的分類
雖然 根據叢集系統的不同特徵可以有多種分類方法,但是一般我們把叢集系統分為兩類:
高可用(High Availability)叢集,簡稱HA叢集。這類叢集致力於提供高度可靠的服務。
高效能運算(High Perfermance Computing)叢集,簡稱hpC叢集。這類叢集致力於提供單個電腦所不能提供的強大的計算能力。
第二頁
2、高可用叢集
2.1 什麼是高可用性
電腦系統的可用性(availability)是通過系統的可靠性(reliability)和可維護性(maintainability)來度量的。工程上通常用平均無故障時間(MTTF)來度量系統的可靠性,用平均維修時間(MTTR)來度量系統的可維護性。於是可用性被定義為:
MTTF/(MTTF+MTTR)*100%
業界根據可用性把電腦系統分為如下幾類:
表1. 系統可用性分類
可用比例 年停機時間 可用性分類
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始終是令人信服的叢集系統。
摘錄於:http://hi.baidu.com/movieyouth/blog/item/bbe6d658bad56385800a18b6.html