近幾年,人們越來越多的聽到集群(Cluster)這個概念,并且有越來越多的集群在實際生活中得到應用。
通俗地講,集群是指一組計算機以某種方式聯結起來并協同完成特定任務的系統。在這個系統中,計算機可以是同構的(如目前最常使用的基于x86構架的PC服務器),也可以是不同構的(如混合采用PC服務器及RISC服務器);而系統內各計算機之間可采用以太網或專用網絡連接。一組計算機要成為集群的一個必要條件是它們要協同工作完成特定任務。
從用戶的角度,集群就像是一臺具有強大處理能力的服務器。在集群內部,各服務器可能承擔不同的任務,但我們可以把它們統稱為節點機。
為什么使用集群
隨著計算機的廣泛應用,需要處理的信息量越來越大,人們對于計算機的要求也越來越高,各種性能更高的計算機不斷的被研制及應用,如SMP(對稱多處理器)計算機、MPP(大規模并行處理)計算機等。這些計算機有很高的配置(如大內存、海量存儲、可多達上千個的處理器等),具有很高的處理能力。但與這些計算機的高性能相對應的是它們高昂的價格。
當一臺服務器在使用過程中已不能通過增加處理器、擴充內存等方法滿足用戶的需求時,傳統的方法是使用一臺新的服務器來替換原服務器,新服務器比原服務器有更好的處理能力。然而這種升級方式存在著多方面的缺點。 當服務器不能滿足服務的要求時,就需要系統升級,使用性能更強大的服務器。服務的效能最終取決于這臺服務器的性能。在升級過程中,服務可能不得不中斷。
升級后,服務完全由新服務器承擔,原服務器不會再參與服務,這就造成了資源浪費。當然也可以用舊服務器承擔其它服務。
對服務器的可靠性有很高要求。由于服務是由一臺服務器提供,所以當這臺服務器發生故障時,對外服務就會中斷,即存在著單點失效問題。
使用更多的處理器可以提高計算機的性能,但隨著處理器數目的增加,計算機的復雜程度急劇增加,計算機的價格也會迅速提高。高端服務器的價格是多數用戶難以承受的。 隨網絡技術的進步以及處理器性能的提高,越來越多的人開始用相對廉價的以太網等通用網絡系統,把相對便宜的服務器/工作站連接起來組成集群使用,從而以較少的代價獲得較高的性能。
集群的分類
根據所要完成任務的不同,通常把集群分為三種基本類型,包括高可用(High-Availability)集群、負載均衡(Load balance)集群及高性能(High Performance)集群。
高可用集群
有許多應用程序都必須是一天24小時不停地運轉,如各大網站的Web服務器、數據中心、遠程通訊轉接器、醫學與軍事監測儀以及股票處理機等,對這些應用程序而言,暫時的停機都會導致數據的丟失和災難性的后果。高可用集群正適用于這種情況:它利用兩臺(或更多)有相同服務的服務器,實現集群服務的高冗余度,對外提供不間斷的服務。
集群系統的每個服務都有主服務器與(一臺或多臺)備用服務器,服務由主服務器處理,而備用服務器處于等待狀態;集群內各服務器都運行heartbeat程序,使用以太網、串口、共享存儲等方式相互發送信息,以檢測其它服務器的運行狀況;當備用服務器發現主服務器不能正常工作時,它會自動接管主服務器的服務繼續對外服務;當主服務器恢復正常時,備用服務器又可把服務自動交還主服務器處理;集群的服務僅會在服務器切換過程中可能有短暫中斷。
任一時刻,高可用集群的任一服務只能由一臺服務器提供,但可以有多個備用服務器,更多的備用服務器意味著更高的冗余度。高可用集群的不同服務器可以是不同服務的主服務器,并同時也可以是其它多個服務器的備用服務器。集群對某一服務的處理能力相當于單臺服務器的處理能力。
負載均衡集群
負載均衡集群可使負載在集群中盡可能平均地分攤處理,充分利用集群內各節點機的處理能力,提高對任務的處理效率。這種集群非常適合于需要運行同一組應用程序的大量用戶,每個節點都可以處理一部分負載,并且可以在節點之間動態分配負載以實現平衡。
在這種集群中,同一任務或服務由多個節點共同承擔,集群的處理能力是這些節點機處理能力之和。由于集群內有多個節點可完成同一任務,當某一節點發生故障時,其它節點仍可繼續工作,從而保證了服務的連續性,所以這種集群也有一定的高可用性。
根據所承擔任務的不同,負載均衡集群又可進一步分為面向作業處理的批處理型負載均衡集群及面向網絡服務的網絡流量型負載均衡集群。
批處理負載均衡集群一般利用批處理作業管理系統,如LSF、PBS等。它們不斷監測集群內各節點機的負載情況,把作業分配到負載較輕的結點進行處理,加快處理速度,提高集群的使用效率。
網絡流量負載均衡集群主要面向網絡服務,如Web、Mail等。集群中的服務器分為兩類Director(網絡流量負載均衡服務器)與Realserver(實際服務器)。Director是集群的核心,它接收來自用戶的網絡請求,根據集群內各服務器的負載情況把這些請求轉發給適當的服務器處理。Realserver是集群內負責提供真實服務的服務器,完成實際的處理工作。通過把網絡流量在集群內較均衡的分配,加快了對用戶請求的響應速度。
高性能集群主要用于處理復雜的計算問題,應用在需要大規?茖W計算的環境中,如天氣預報、石油勘探與油藏模擬、分子模擬、基因測序等。高性能集群上運行的應用程序一般使用并行算法,把一個大的普通問題根據一定的規則分為許多小的子問題,在集群內的不同節點上進行計算,而這些小問題的處理結果,經過處理可合并為原問題的最終結果。由于這些小問題的計算一般是可以并行完成的,從而可以縮短問題的處理時間。
高性能集群在計算過程中,各節點是協同工作的,它們分別處理大問題的一部分,并在處理中根據需要進行數據交換,各節點的處理結果都是最終結果的一部分。高性能集群的處理能力與集群的規模成正比,是集群內各節點處理能力之和,但這種集群一般沒有高可用性。
“集群”的由來
集群的出現已有一段歷史,早在二十世紀七八十年代,美國DEC公司和Tandem計算機公司就開始了集群的研究工作,開發了基于VMS操作系統的VMScluster集群系統,但它僅限于在DEC的VAX系列與Alpha系列服務器上使用。隨著互聯網絡技術的發展與應用,各種不同構架的集群相繼出現,并得到了廣泛的應用。截止到2003年6月24日,最新發布的世界最快的(Linpack值)前500名計算機排名(TOP500)中,有很多集群系統(129臺,占總數的大約30%),如排名第二的是HP公司基于Alpha系統的集群,第三名是Linux NetworX的基于Intel Xeon的Linux 集群。
集群的七大優勢
集群系統提出之后發展得十分迅猛,已成為目前研究的熱點。集群受到廣泛關注的原因是多方面的。其中之一就是它可以用商品處理器和商品網絡方便地構造。另外,它還有許多過去的并行系統不可比擬的優勢。
圖 集群的結構
一、投資風險小。傳統的大規模并行處理機比較昂貴,如果性能不好就等于浪費了大量資金。而集群即使作為并行系統效果不好,它的每個結點仍可以作為高性能微機使用,不會浪費資金。
二、性能價格比高。傳統的并行機由于生產批量小往往價格昂貴。而集群基本上使用市售的商品化部件,價格較低。集群整體的性能可達GFlops量級,已經接近一些MPP的水平。
三、系統的開發周期短,集群的硬件都是商用的,開發的重點在通信機制和并行編程環境上。
四、編程方便,軟件繼承性好。在集群系統中用戶無需學習新的并行程序設計語言。只需在常規的C、C++、Fortran串行程序中插入少量通信原語,即可使其在集群上運行。
五、系統結構靈活。不同結構、不同性能、不同操作系統的工作站都可以連接起來構成集群系統。這樣用戶就可以充分利用現有設備以及閑散的計算機,用少量投資獲得較大的計算能力。
六、通過把個人工作站(或微機)連接成集群,可在個人工作站空閑時給其分配任務,當工作站被使用時再回收任務和結果,可以充分利用分散的計算資源。
七、可擴展性好。只需要很少的配置工作就可以方便地向集群加入或減少節點,隨時根據服務要求改變系統的處理能力,并且在這個改變過程中,系統不必停機,服務不會中斷。
集群的結構
集群是一種分布存儲的并行系統,屬于NORMA結構,各結點通信主要使用消息傳遞方式。集群與MPP的主要區別有:集群的每個結點都是一個完整的計算機系統,包括CPU、內存、硬盤,但可能沒有顯示器、鍵盤、鼠標等外圍設備,這樣的結點稱為“無頭工作站”;MPP的每個結點內不一定有硬盤。集群的結點間通常使用低成本的商品化網絡相連,如以太網、ATM、Myrinet等,而MPP使用專門定制的網絡,這個特征被認為是集群與MPP最主要的區別。集群結點與系統級網絡的網絡接口是連接到結點內的I/O總線上的,屬于松耦合;而MPP的網絡接口是連到結點內的存儲總線上的,屬于緊耦合。集群的每個結點上駐留有完整的操作系統;而MPP的結點內通常只有操作系統的微核。
集群系統目前主要有兩類: 類是以IBM SP為代表的SMP集群,吸收集群的技術和思想,節點采用高性能服務器,軟件針對硬件作了大量優化,系統性能較高,可擴展性好。2002年11月TOP500前10名中,這類系統占了7臺。另一類是用PC服務器為節點,多采用自由軟件,強調軟硬件的集成,系統的性能價格比較高。目前已有多套該類系統峰值浮點運算速度超過每秒萬億次。如Linux NetworX用2048個主頻2.4GHz的P4構成的MCR Linux Cluster峰值性能是11TFlops。2002年11月TOP500前10名中,這類系統有2臺。
多種關鍵技術
高速寬頻帶互聯網絡和高速通信機制:要實現一個高性能的并行系統,不僅需要高性能的計算結點,同時還需要一個高帶寬、低延遲網絡系統的支持,以減小通信處理開銷。 容錯計算技術:并行系統隨著規模的不斷擴大,其在計算過程中發生故障的幾率會指數增長。系統在發生各種故障時會導致本次并行計算的徹底失敗,故障前的大量計算不再可用。因此,為了提高系統的可用性和容錯性能,必須考慮并行程序運行回卷恢復和進程遷移系統。
交互式并行編譯:計算機發展到今天,已積累了大量的應用軟件,要把這些軟件人工改寫成功能等價的并行軟件是一件工作量極其龐大、也很繁鎖的工作。用戶都迫切要求對現有的應用軟件不作任何改動,就能在并行系統上有效地運行,設計和實現一個并行化編譯系統來達到上述目的。但全自動并行化系統生成的并行程序的加速比仍然不能令人滿意。其原因在于相關性分析算法、數據劃分算法和通信生成算法還不能有效地處理這些應用程序的復雜性。 并行調試工具:并行程序的調試遠比串行程序復雜得多,利用串行程序的調試技術,不能完全解決并行程序調試中所出現的運行行為的不確定性、全局狀態的控制、死鎖的檢測等問題。為此,設計和實現一個并行調試工具是十分重要的。
并行程序設計開發環境:并行處理技術得發展很快,各種類型的并行機紛紛上市。但影響并行機推廣使用的一個最重要障礙,是在并行機上編寫、編譯鏈接和調試程序比較困難,而并行計算機缺乏圖形化的集成環境。設計和實現一個界面更加友好、功能更加豐富的并行程序集成開發環境, 將是集群計算機系統能否推廣實用的關鍵之一。目前集群系統上廣泛使用的并行程序設計環境有PVM、MPI、Express、P4等。它們都是基于消息傳遞方式。
智能資源管理與分配:在并行處理系統中,要想充分利用高度并行的系統資源,提高整個系統的吞吐率,縮短單個任務的響應時間,需要智能化資源管理與調度技術的支持。設計和實現一種對用戶透明的動態負載平衡系統,以增強并行程序設計環境的功能對集群計算機系統極其重要。負載平衡系統將自動實現應用程序在并行系統上平衡地運行,從而使并行系統的資源利用率和吞吐率得到明顯提高,而不影響系統的可擴展性能。
并行文件系統:在高性能并行計算系統中,文件系統的I/O處理能力對整個系統的性能有著重要的影響,尤其對于一些大規模的I/O密集型應用,文件系統更是決定性的因素。為了提高整體系統的吞吐率和縮短文件讀寫的響應時間,必須有一個透明的、可擴展的、高可用的、高性能并行文件系統。
可視化技術:對并行計算過程的可視化監測是分析、改進其效率的有效手段。大規模、多維數據的處理和分析是近年來可視化技術的一個重要研究方向。建立一個并行計算過程可視化系統, 對節點負載平衡、任務調度和通訊同步等復雜信息進行描述、顯示和分析,提供良好的圖形交互界面,直觀顯示、比較各類系統信息;對系統資源的消耗很小,不致影響所監測的并行計算過程。
單一系統映像系統:目的是將整個機群系統虛擬為一個統一的系統,使用戶感覺不到各工作站的存在,而好像就在使用一臺普通的計算機。單一系統映像系統包括多方面的內容,例如單一入口點、單一文件層次結構、單一I/O空間、單一網絡、單一作業管理系統、單一存儲空間和單一進程空間等。
文章來源于領測軟件測試網 http://www.kjueaiud.com/