計算 Linux 中集群項目的數量就象計算硅谷中創業公司的數量一樣。不象 Windows NT 已經受其自身的封閉環境阻礙,Linux 有大量的集群系統可供選擇,適合於不同的用途和需要。但確定應該使用哪一個集群的工作卻沒有因此變得簡單。
問題的部分原因在於術語集群用於不同場合。IT 經理可能關心如何使服務器運行時間更長,或使應用程序運行得更快,而數學家可能更關心在服務器上進行大規模數值計算。兩者都需要群集,但是各自需要不同特性的群集。
本文調查了不同形式的集群以及許多實現中的一部分,這些實現可以買到,也可以免費軟件形式獲得。盡管列出的所有解決方案並不都是開放源碼,但是大多數軟件都遵循分發 Linux 源碼的公共慣例,特別是由於那些實現集群的人還常常希望調整系統性能,以滿足需要。
硬件
集群總是涉及到機器之間的硬件連接。在現今大多數情況下,這只是指“快速以太網”網卡和集線器。但在尖端科學領域中,有許多專為集群設計的網絡接口卡。
它們包括 Myricom 的 Myrinet、Giganet 的 cLAN 和 IEEE 1596 標准可伸縮一致接口 (SCI)。那些卡的功能不但在群集的節點之間提供高帶寬,而且還減少延遲(發送消息所用的時間)。對於在節點間交換狀態信息以使其操作保持同步情況,那些延遲是至關重要的。
Myricom
Myricom 提供網卡和交換機,其單向互連速度最高可達到 1.28 Gbps。網卡有兩種形式,銅線型和光纖型。銅線型 LAN 可以在 10 英尺距離內以全速進行通信,而在長達 60 英尺距離內以半速進行操作。光纖型 Myrinet 可以在 6.25 英裡長的單模光纖或者 340 英尺長的多模光纖上全速運行。Myrinet 只提供直接點到點、基於集線器或基於交換機的網絡配置,但在可以連接到一起的交換光纖數量方面沒有限制。添加交換光纖只會增加節點間的延遲。兩個直接連接的節點之間的平均延遲是 5 到 18 微秒,比以太網快得多。
集群類型
最常見的三種群集類型包括高性能科學群集、負載均衡群集和高可用性群集。
科學群集
通常,第一種涉及為群集開發並行編程應用程序,以解決復雜的科學問題。這是並行計算的基礎,盡管它不使用專門的並行超級計算機,這種超級計算機內部由十至上萬個獨立處理器組成。但它卻使用商業系統,如通過高速連接來鏈接的一組單處理器或雙處理器 PC,並且在公共消息傳遞層上進行通信以運行並行應用程序。因此,您會常常聽說又有一種便宜的 Linux 超級計算機問世了。但它實際是一個計算機群集,其處理能力與真的超級計算機相等,通常一套象樣的群集配置開銷要超過 $100,000。這對一般人來說似乎是太貴了,但與價值上百萬美元的專用超級計算機相比還算是便宜的。
負載均衡群集
負載均衡群集為企業需求提供了更實用的系統。如名稱所暗示的,該系統使負載可以在計算機群集中盡可能平均地分攤處理。該負載可能是需要均衡的應用程序處理負載或網絡流量負載。這樣的系統非常適合於運行同一組應用程序的大量用戶。每個節點都可以處理一部分負載,並且可以在節點之間動態分配負載,以實現平衡。對於網絡流量也是如此。通常,網絡服務器應用程序接受了太多入網流量,以致無法迅速處理,這就需要將流量發送給在其它節點上運行的網絡服務器應用。還可以根據每個節點上不同的可用資源或網絡的特殊環境來進行優化。
高可用性群集
高可用性群集的出現是為了使群集的整體服務盡可能可用,以便考慮計算硬件和軟件的易錯性。如果高可用性群集中的主節點發生了故障,那麼這段時間內將由次節點代替它。次節點通常是主節點的鏡像,所以當它代替主節點時,它可以完全接管其身份,並且因此使系統環境對於用戶是一致的。
在群集的這三種基本類型之間,經常會發生混合與交雜。於是,可以發現高可用性群集也可以在其節點之間均衡用戶負載,同時仍試圖維持高可用性程度。同樣,可以從要編入應用程序的群集中找到一個並行群集,它可以在節點之間執行負載均衡。盡管集群系統本身獨立於它在使用的軟件或硬件,但要有效運行系統時,硬件連接將起關鍵作用。
Giganet
Giganet 是用於 Linux 平台的虛擬接口 (VI) 體系結構卡的第一家供應商,提供 cLAN 卡和交換機。VI 體系結構是獨立於平台的軟件和硬件系統,它由 Intel 開發,用於創建群集。它使用自己的網絡通信協議在服務器之間直接交換數據,而不是使用 IP,並且它並不打算成為 WAN 可路由的系統。現在,VI 的未來取決於正在進行的“系統 I/O 組”的工作,這個小組本是 Intel 領導的“下一代 I/O”小組與 IBM 和 Compaq 領導的“未來 I/O 小組”的合並。Giganet 產品當前可以在節點之間提供 1 Gbps 單向通信,最小延遲為 7 微秒。
IEEE SCI
IEEE 標准 SCI 的延遲更少(低於 2.5 微秒),並且其單向速度可達到 400 MB/秒 (3.2 Gbps)。SCI 是基於環拓撲的網絡系統,不像以太網是星形拓撲。這將使在較大規模的節點之間通信速度更快。更有用的是環面拓撲網絡,它在節點之間有許多環形結構。兩維環面可以用 n 乘 m 的網格表示,其中在每一行和每一列都有一個環形網絡。三維環面也類似,可以用三維立體節點網格表示,每一層上有一個環形網絡。密集超級計算並行系統使用環面拓撲網絡,為成百上千個節點之間的通信提供相對最快的路徑。
大多數>操作系統的限制因素不是>操作系統或網絡接口,而是服務器的內部 PCI 總線系統。幾乎所有台式 PC 通常有基本 32-位,33-MHz PCI,並且大多數低端服務器只提供 133 MB/秒 (1 Gbps),這限制了那些網卡的能力。一些昂貴的高端服務器,如 Compaq Proliant 6500 和 IBM Netfinity 7000 系列,都有 64-位, 66-MHz 網卡,它們能夠以四倍速度運行。不幸地是,矛盾是更多公司使用低端的系統,因此大多數供應商最終生產和銷售更多低端 PCI 網卡。也有專門的 64-位,66-MHz PCI 網卡,但價格要貴許多。例如,Intel 提供了這種類型的“快速以太網”網卡,價格約 $400 到 $500,幾乎是普通 PCI 版本價格的 5 倍。
科學群集
某些並行群集系統可以達到如此高的帶寬和低延遲,其原因是它們通常繞過使用網絡協議,如 TCP/IP。雖然網際協議對於廣域網很重要,但它包含了太多的開銷,而這些開銷在節點相互已知的封閉網絡群集中是不必要的。其實,那些系統中有一部分可以在節點之間使用直接內存訪問 (DMA),它類似於圖形卡和其它外圍設備在一台機器中的工作方式。因此橫跨群集,可以通過任何節點上的任何處理器直接訪問一種形式的分布式共享內存。它們也可以使用低開銷的消息傳遞系統,在節點之間進行通信。
消息傳遞接口 (MPI) 是並行群集系統間消息傳遞層的最常見實現。MPI 存在幾種衍生版本,但在所有情況下,它為開發者訪問並行應用程序提供了一個公共 API,這樣開發者就不必手工解決如何在群集的節點之間分發代碼段。其中一個,Beowulf 系統首先將 MPI 用作公共編程接口。
很難決定使用哪種高性能集群包。許多都提供類似服務,但計算的具體要求才是決定性因素。很多情況下,在那些系統中的研究工作只是解決需求的一半,而且使用那些軟件需要集群包開發者的特殊幫助和合作。
Beowulf
當談到 Linux 集群時,許多人的第一反映是 Beowulf。那是最著名的 Linux 科學軟件集群系統。沒有一個包叫做 Beowulf。實際上,它是一個術語,適用於在 Linux 內核上運行的一組公共軟件工具。其中包括流行的軟件消息傳遞 API,如“消息傳送接口”(MPI) 或“並行虛擬機”(PVM),對 Linux 內核的修改,以允許結合幾個以太網接口、高性能網絡驅動器,對虛擬內存管理器的更改,以及分布式進程間通信 (DIPC) 服務。公共全局進程標識空間允許使用 DIPC 機制從任何節點訪問任何進程。Beowulf 還在節點間支持一系列硬件連通性選件。
Beowulf 可能是考慮 Linux 時注意到的第一個高性能集群系統,這只是因為它的廣泛使用和支持。關於這個主題,有許多文檔和書籍。Beowulf 與以下一些科學集群系統之間的差異可以是實際的,或者只是在產品名稱中有差異。例如,盡管名稱不同,Alta Technologies 的 AltaCluster 就是一個 Beowulf 系統。某些供應商,如 ParTec AG,一家德國公司,提供了 Beowulf 模型的衍生版本,以包括其它管理接口和通信協議。
Giganet cLAN
Giganet 提供了一種定制的基於硬件的解決方案,它使用非 IP 協議在一個科學群集的節點間進行通信。如前所述,“虛擬接口”協議通過除去不少協議的開銷,如 IP,以支持服務器間更快的通信。另外,硬件系統可按千兆比特速度運行,並且延遲很短,使它非常適合構建最多達 256 個節點的科學群集。該供應商支持 MPI,這樣許多並行應用程序就可以在類似的系統(如 Beowulf)上運行。
它也有 Beowulf 的缺點,即不能用作網絡負載共享系統,除非想要編寫應用程序來監控和分發在服務器間傳送的網絡包。
Legion
Legion 試圖構建一個真正的多計算機系統。這是一個群集,其中每個節點都是一個獨立系統,但在用戶看來,整個系統只是一台計算機。Legion 設計成支持一台世界范圍的計算機,由上百萬個主機以及數以萬億計的軟件對象組成。在 Legion 中,用戶可以創立他們自己的合作小組。
Legion 提供了高性能並行、負載均衡、分布式數據管理和容錯性。
Legion 提供了高性能並行、負載均衡、分布式數據管理和容錯性。它通過其容錯管理和成員節點間的動態重新配置來支持高可用性。它還有一個可擴充核心,該核心可以在出現新的改進和進展時動態替換或升級。系統並不是只接受單一控制,而是可以由任意數量的組織管理,而每個組織都支持整體的自治部分。Legion API 通過其內置的並行性提供了高性能計算。
Legion 需要使用特別編寫的軟件,以使它可以使用其 API 庫。它位於用戶計算機>操作系統之上,協調本地資源和分布式資源。它自動處理資源調度和安全性,還管理上下文空間以描述和訪問整個系統中上億種可能之外的對象。然而,在每個節點上運行時,不需要使用系統管理員特權,並且可以使用無特權的用戶帳號進行工作。這將增加加入 Legion 的節點和用戶的靈活性。
Cplant
Sandia National Lab 中的 Computational Plant 是一個大規模整體並行群集,用於實現 TeraFLOP(萬億次浮點運算)計算並構建在商業組件上。整個系統由“可伸縮單元”組成,這些“可伸縮單元”可以劃分成適合不同目的(計算、磁盤 I/O、網絡 I/O、服務管理)。群集中的每個節點都是一個 Linux 系統,帶有專門開發的、提供分區服務的內核級模塊。每個分區的功能可以通過裝入和卸載內核級模塊來修改。
項目分三個階段完成,開始階段是原型,有 128 個基於 433-MHz DEC Alpha 21164 的系統,其中每個都有 192 MB RAM 和 2 GB 驅動器,相互之間用 Myrinet 網卡和 8-端口的 SAN 交換機連接。第 1 階段將它擴充為 400 個基於 21164 的工作站,這些工作站的運行速度為 500 MHz,有 192 MB RAM,沒有存儲器,用 16-端口的 SAN 交換機以超立方體結構連接起來,並且運行 Red Hat 5.1。當前的第 2 階段有 592 台基於 DEC 21264 的機器,它們的運行速度為 500 MHz,有 256 MB RAM,沒有驅動器。每個節點都使用 64-位,33-MHz PCI Myrinet 網卡,並且仍使用 16-端口交換機以超立方體結構連接。
在 Cplant 上運行的應用程序包括解決稀疏線性系統、流體力學和結構力學中計算系統的優化、分子力學的模擬、線性結構力學的有限元分析,以及並行應用程序的動態負載均衡庫。
JESSICA 2
香港大學的系統研究小組有一個基於 Java 的群集,叫做支持 Java 的單系統映像計算體系結構 (JESSICA),它作為一個中間件層以完成單系統映像的幻想。該層是每個使用分布式共享內存 (DSM) 系統進行通信的節點上運行的所有線程的一個全局線程空間。該項目使用 ThreadMark DSM,但最終將用他們自己創建的 JiaJia Using Migrating-home Protocol (JUMP)。他們使用定制的基於 Java 的 ClusterProbe 軟件來管理群集的 50 個節點。
PARIS
法國的 IRISA 研究所的“大規模數字模擬應用程序的編程並行和分布式系統”(PARIS) 項目提供了幾種用於創建 Linux 服務器群集的工具。該項目由三部分組成:群集的資源管理軟件、並行編程語言的運行時環境,以及分布式數字模擬的軟件工具。
資源管理軟件包括用於共享內存、磁盤和處理器資源的 Globelins 分布式系統,及其 Dupleix 和 Mome 分布式共享內存系統。
負載均衡群集
負載均衡群集在多節點之間分發網絡或計算處理負載。在這種情況下,區別在於缺少跨節點運行的單並行程序。大多數情況下,那種群集中的每個節點都是運行單獨軟件的獨立系統。但是,不管是在節點之間進行直接通信,還是通過中央負載均衡服務器來控制每個節點的負載,在節點之間都有一種公共關系。通常,使用特定的算法來分發該負載。
網絡流量負載均衡是一個過程,它檢查到某個群集的入網流量,然後將流量分發到各個節點以進行適當處理。它最適合大型網絡應用程序,如 Web 或 FTP 服務器。負載均衡網絡應用服務要求群集軟件檢查每個節點的當前負載,並確定哪些節點可以接受新的作業。這最適合運行如數據分析等串行和批處理作業。那些系統還可以配置成關注某特定節點的硬件或>操作系統功能:這樣,群集中的節點就沒有必要是一致的。
Linux 虛擬服務器
“Linux 虛擬服務器”項目已經實現了許多內核補丁,它們為入網 TCP/IP 流量創建了負載均衡系統。LVS 軟件檢查入網流量,然後根據負載均衡算法,將流量重定向到一組充當群集的服務器。這允許網絡應用程序,如 Web 服務器,在節點群集上運行以支持大量用戶。
LVS 支持作為負載均衡服務器直接連接到同一個 LAN 的群集節點,但它還能夠以通道傳送 IP 包的方式連接到遠程服務器。後一種方法包括壓縮 IP 包中的均衡請求,這些 IP 信息包從負載均衡服務器直接發送到遠程群集節點。盡管 LVS 可以遠程支持網站的負載均衡,但它使用的負載均衡算法現在對於虛擬群集中的廣域 Web 服務器仍無效。因此,如果 Web 服務器都在同一個 LAN 中,LVS 最好當作負載均衡服務器使用。
負載均衡系統的幾種硬件實現比在通用>操作系統,如 Linux,上運行得更快。它們包括來自 Alteon 和 Foundry 的硬件,其硬件邏輯和最少>操作系統可以在硬件中執行流量管理,並且速度比純軟件快。它們的價格也很高,通常都在 $10,000 以上。如果需要簡單和便宜的解決方案,一個有很多內存 (256 MB) 的中等 Linux 系統將會是一個好的負載均衡系統。
TurboLinux TurboCluster 和 enFuzion
TurboLinux 有一個產品叫 TurboCluster,它最初以“Linux 虛擬服務器”項目開發的內核補丁為基礎。因此,它可以得到大部分優點,但它的缺點也與原來的項目一樣。TurboLinux 為此還開發了一些工具,用於監控增加產品實用性的群集行為。一家主要供應商的商業支持也使它對於大型網站更具吸引力。
EnFuzion 支持在節點之間實現自動負載均衡和資源共享,而且可以自動重新安排失敗的作業。
EnFuzion 是 TurboLinux 即將推出的科學群集產品,它並不基於 Beowulf。但是,它可以支持上百個節點以及許多不同的非 Linux 平台,包括 Solaris、Windows NT、HP-UX、IBM AIX、SGI Irix 和 Tru64。EnFuzion 非常有趣,因為它運行所有現有軟件,並且不需要為環境編寫定制的並行應用程序。它支持在節點間實現自動負載均衡