Linux集群大全 哪種群集適合您?
藍(lán)森林 http://www.lslnet.com 2001年6月25日 09:16
http://www-900.cn.ibm.com/developerWorks/cn/linux/cluster/lw-clustering.shtml#16
http://www.lslnet.com/linux/docs/linux-3656.htm
作 者: Rawn Shah
LinuxWorld 專欄作家
2000 年 5 月
Rawn Shah 作為專家,在 Linux 現(xiàn)有的開(kāi)放源碼和封閉源碼集群解決方案方面為您指點(diǎn)迷津。
計(jì)算 Linux 中集群項(xiàng)目的數(shù)量就象計(jì)算硅谷中創(chuàng)業(yè)公司的數(shù)量一樣。不象 Windows NT 已經(jīng)受其自身的封閉環(huán)境阻礙,Linux 有大量的集群系統(tǒng)可供選擇,適合于不同的用途和需要。但確定應(yīng)該使用哪一個(gè)集群的工作卻沒(méi)有因此變得簡(jiǎn)單。
問(wèn)題的部分原因在于術(shù)語(yǔ)集群用于不同場(chǎng)合。IT 經(jīng)理可能關(guān)心如何使服務(wù)器運(yùn)行時(shí)間更長(zhǎng),或使應(yīng)用程序運(yùn)行得更快,而數(shù)學(xué)家可能更關(guān)心在服務(wù)器上進(jìn)行大規(guī)模數(shù)值計(jì)算。兩者都需要群集,但是各自需要不同特性的群集。
本文調(diào)查了不同形式的集群以及許多實(shí)現(xiàn)中的一部分,這些實(shí)現(xiàn)可以買到,也可以免費(fèi)軟件形式獲得。盡管列出的所有解決方案并不都是開(kāi)放源碼,但是大多數(shù)軟件都遵循分發(fā) Linux 源碼的公共慣例,特別是由于那些實(shí)現(xiàn)集群的人還常常希望調(diào)整系統(tǒng)性能,以滿足需要。
硬件
集群總是涉及到機(jī)器之間的硬件連接。在現(xiàn)今大多數(shù)情況下,這只是指“快速以太網(wǎng)”網(wǎng)卡和集線器。但在尖端科學(xué)領(lǐng)域中,有許多專為集群設(shè)計(jì)的網(wǎng)絡(luò)接口卡。
它們包括 Myricom 的 Myrinet、Giganet 的 cLAN 和 IEEE 1596 標(biāo)準(zhǔn)可伸縮一致接口 (SCI)。那些卡的功能不但在群集的節(jié)點(diǎn)之間提供高帶寬,而且還減少延遲(發(fā)送消息所用的時(shí)間)。對(duì)于在節(jié)點(diǎn)間交換狀態(tài)信息以使其操作保持同步情況,那些延遲是至關(guān)重要的。
Myricom
Myricom 提供網(wǎng)卡和交換機(jī),其單向互連速度最高可達(dá)到 1.28 Gbps。網(wǎng)卡有兩種形式,銅線型和光纖型。銅線型 LAN 可以在 10 英尺距離內(nèi)以全速進(jìn)行通信,而在長(zhǎng)達(dá) 60 英尺距離內(nèi)以半速進(jìn)行操作。光纖型 Myrinet 可以在 6.25 英里長(zhǎng)的單模光纖或者 340 英尺長(zhǎng)的多模光纖上全速運(yùn)行。Myrinet 只提供直接點(diǎn)到點(diǎn)、基于集線器或基于交換機(jī)的網(wǎng)絡(luò)配置,但在可以連接到一起的交換光纖數(shù)量方面沒(méi)有限制。添加交換光纖只會(huì)增加節(jié)點(diǎn)間的延遲。兩個(gè)直接連接的節(jié)點(diǎn)之間的平均延遲是 5 到 18 微秒,比以太網(wǎng)快得多。
集群類型
最常見(jiàn)的三種群集類型包括高性能科學(xué)群集、負(fù)載均衡群集和高可用性群集。
科學(xué)群集
通常,第一種涉及為群集開(kāi)發(fā)并行編程應(yīng)用程序,以解決復(fù)雜的科學(xué)問(wèn)題。這是并行計(jì)算的基礎(chǔ),盡管它不使用專門的并行超級(jí)計(jì)算機(jī),這種超級(jí)計(jì)算機(jī)內(nèi)部由十至上萬(wàn)個(gè)獨(dú)立處理器組成。但它卻使用商業(yè)系統(tǒng),如通過(guò)高速連接來(lái)鏈接的一組單處理器或雙處理器 PC,并且在公共消息傳遞層上進(jìn)行通信以運(yùn)行并行應(yīng)用程序。因此,您會(huì)常常聽(tīng)說(shuō)又有一種便宜的 Linux 超級(jí)計(jì)算機(jī)問(wèn)世了。但它實(shí)際是一個(gè)計(jì)算機(jī)群集,其處理能力與真的超級(jí)計(jì)算機(jī)相等,通常一套象樣的群集配置開(kāi)銷要超過(guò) $100,000。這對(duì)一般人來(lái)說(shuō)似乎是太貴了,但與價(jià)值上百萬(wàn)美元的專用超級(jí)計(jì)算機(jī)相比還算是便宜的。
負(fù)載均衡群集
負(fù)載均衡群集為企業(yè)需求提供了更實(shí)用的系統(tǒng)。如名稱所暗示的,該系統(tǒng)使負(fù)載可以在計(jì)算機(jī)群集中盡可能平均地分?jǐn)偺幚怼T撠?fù)載可能是需要均衡的應(yīng)用程序處理負(fù)載或網(wǎng)絡(luò)流量負(fù)載。這樣的系統(tǒng)非常適合于運(yùn)行同一組應(yīng)用程序的大量用戶。每個(gè)節(jié)點(diǎn)都可以處理一部分負(fù)載,并且可以在節(jié)點(diǎn)之間動(dòng)態(tài)分配負(fù)載,以實(shí)現(xiàn)平衡。對(duì)于網(wǎng)絡(luò)流量也是如此。通常,網(wǎng)絡(luò)服務(wù)器應(yīng)用程序接受了太多入網(wǎng)流量,以致無(wú)法迅速處理,這就需要將流量發(fā)送給在其它節(jié)點(diǎn)上運(yùn)行的網(wǎng)絡(luò)服務(wù)器應(yīng)用。還可以根據(jù)每個(gè)節(jié)點(diǎn)上不同的可用資源或網(wǎng)絡(luò)的特殊環(huán)境來(lái)進(jìn)行優(yōu)化。
高可用性群集
高可用性群集的出現(xiàn)是為了使群集的整體服務(wù)盡可能可用,以便考慮計(jì)算硬件和軟件的易錯(cuò)性。如果高可用性群集中的主節(jié)點(diǎn)發(fā)生了故障,那么這段時(shí)間內(nèi)將由次節(jié)點(diǎn)代替它。次節(jié)點(diǎn)通常是主節(jié)點(diǎn)的鏡像,所以當(dāng)它代替主節(jié)點(diǎn)時(shí),它可以完全接管其身份,并且因此使系統(tǒng)環(huán)境對(duì)于用戶是一致的。
在群集的這三種基本類型之間,經(jīng)常會(huì)發(fā)生混合與交雜。于是,可以發(fā)現(xiàn)高可用性群集也可以在其節(jié)點(diǎn)之間均衡用戶負(fù)載,同時(shí)仍試圖維持高可用性程度。同樣,可以從要編入應(yīng)用程序的群集中找到一個(gè)并行群集,它可以在節(jié)點(diǎn)之間執(zhí)行負(fù)載均衡。盡管集群系統(tǒng)本身獨(dú)立于它在使用的軟件或硬件,但要有效運(yùn)行系統(tǒng)時(shí),硬件連接將起關(guān)鍵作用。
Giganet
Giganet 是用于 Linux 平臺(tái)的虛擬接口 (VI) 體系結(jié)構(gòu)卡的第一家供應(yīng)商,提供 cLAN 卡和交換機(jī)。VI 體系結(jié)構(gòu)是獨(dú)立于平臺(tái)的軟件和硬件系統(tǒng),它由 Intel 開(kāi)發(fā),用于創(chuàng)建群集。它使用自己的網(wǎng)絡(luò)通信協(xié)議在服務(wù)器之間直接交換數(shù)據(jù),而不是使用 IP,并且它并不打算成為 WAN 可路由的系統(tǒng)?,F(xiàn)在,VI 的未來(lái)取決于正在進(jìn)行的“系統(tǒng) I/O 組”的工作,這個(gè)小組本是 Intel 領(lǐng)導(dǎo)的“下一代 I/O”小組與 IBM 和 Compaq 領(lǐng)導(dǎo)的“未來(lái) I/O 小組”的合并。Giganet 產(chǎn)品當(dāng)前可以在節(jié)點(diǎn)之間提供 1 Gbps 單向通信,最小延遲為 7 微秒。
IEEE SCI
IEEE 標(biāo)準(zhǔn) SCI 的延遲更少(低于 2.5 微秒),并且其單向速度可達(dá)到 400 MB/秒 (3.2 Gbps)。SCI 是基于環(huán)拓?fù)涞木W(wǎng)絡(luò)系統(tǒng),不像以太網(wǎng)是星形拓?fù)?。這將使在較大規(guī)模的節(jié)點(diǎn)之間通信速度更快。更有用的是環(huán)面拓?fù)渚W(wǎng)絡(luò),它在節(jié)點(diǎn)之間有許多環(huán)形結(jié)構(gòu)。兩維環(huán)面可以用 n 乘 m 的網(wǎng)格表示,其中在每一行和每一列都有一個(gè)環(huán)形網(wǎng)絡(luò)。三維環(huán)面也類似,可以用三維立體節(jié)點(diǎn)網(wǎng)格表示,每一層上有一個(gè)環(huán)形網(wǎng)絡(luò)。密集超級(jí)計(jì)算并行系統(tǒng)使用環(huán)面拓?fù)渚W(wǎng)絡(luò),為成百上千個(gè)節(jié)點(diǎn)之間的通信提供相對(duì)最快的路徑。
大多數(shù)操作系統(tǒng)的限制因素不是操作系統(tǒng)或網(wǎng)絡(luò)接口,而是服務(wù)器的內(nèi)部 PCI 總線系統(tǒng)。幾乎所有臺(tái)式 PC 通常有基本 32-位,33-MHz PCI,并且大多數(shù)低端服務(wù)器只提供 133 MB/秒 (1 Gbps),這限制了那些網(wǎng)卡的能力。一些昂貴的高端服務(wù)器,如 Compaq Proliant 6500 和 IBM Netfinity 7000 系列,都有 64-位, 66-MHz 網(wǎng)卡,它們能夠以四倍速度運(yùn)行。不幸地是,矛盾是更多公司使用低端的系統(tǒng),因此大多數(shù)供應(yīng)商最終生產(chǎn)和銷售更多低端 PCI 網(wǎng)卡。也有專門的 64-位,66-MHz PCI 網(wǎng)卡,但價(jià)格要貴許多。例如,Intel 提供了這種類型的“快速以太網(wǎng)”網(wǎng)卡,價(jià)格約 $400 到 $500,幾乎是普通 PCI 版本價(jià)格的 5 倍。
科學(xué)群集
某些并行群集系統(tǒng)可以達(dá)到如此高的帶寬和低延遲,其原因是它們通常繞過(guò)使用網(wǎng)絡(luò)協(xié)議,如 TCP/IP。雖然網(wǎng)際協(xié)議對(duì)于廣域網(wǎng)很重要,但它包含了太多的開(kāi)銷,而這些開(kāi)銷在節(jié)點(diǎn)相互已知的封閉網(wǎng)絡(luò)群集中是不必要的。其實(shí),那些系統(tǒng)中有一部分可以在節(jié)點(diǎn)之間使用直接內(nèi)存訪問(wèn) (DMA),它類似于圖形卡和其它外圍設(shè)備在一臺(tái)機(jī)器中的工作方式。因此橫跨群集,可以通過(guò)任何節(jié)點(diǎn)上的任何處理器直接訪問(wèn)一種形式的分布式共享內(nèi)存。它們也可以使用低開(kāi)銷的消息傳遞系統(tǒng),在節(jié)點(diǎn)之間進(jìn)行通信。
消息傳遞接口 (MPI) 是并行群集系統(tǒng)間消息傳遞層的最常見(jiàn)實(shí)現(xiàn)。MPI 存在幾種衍生版本,但在所有情況下,它為開(kāi)發(fā)者訪問(wèn)并行應(yīng)用程序提供了一個(gè)公共 API,這樣開(kāi)發(fā)者就不必手工解決如何在群集的節(jié)點(diǎn)之間分發(fā)代碼段。其中一個(gè),Beowulf 系統(tǒng)首先將 MPI 用作公共編程接口。
很難決定使用哪種高性能集群包。許多都提供類似服務(wù),但計(jì)算的具體要求才是決定性因素。很多情況下,在那些系統(tǒng)中的研究工作只是解決需求的一半,而且使用那些軟件需要集群包開(kāi)發(fā)者的特殊幫助和合作。
Beowulf
當(dāng)談到 Linux 集群時(shí),許多人的第一反映是 Beowulf。那是最著名的 Linux 科學(xué)軟件集群系統(tǒng)。沒(méi)有一個(gè)包叫做 Beowulf。實(shí)際上,它是一個(gè)術(shù)語(yǔ),適用于在 Linux 內(nèi)核上運(yùn)行的一組公共軟件工具。其中包括流行的軟件消息傳遞 API,如“消息傳送接口”(MPI) 或“并行虛擬機(jī)”(PVM),對(duì) Linux 內(nèi)核的修改,以允許結(jié)合幾個(gè)以太網(wǎng)接口、高性能網(wǎng)絡(luò)驅(qū)動(dòng)器,對(duì)虛擬內(nèi)存管理器的更改,以及分布式進(jìn)程間通信 (DIPC) 服務(wù)。公共全局進(jìn)程標(biāo)識(shí)空間允許使用 DIPC 機(jī)制從任何節(jié)點(diǎn)訪問(wèn)任何進(jìn)程。Beowulf 還在節(jié)點(diǎn)間支持一系列硬件連通性選件。
Beowulf 可能是考慮 Linux 時(shí)注意到的第一個(gè)高性能集群系統(tǒng),這只是因?yàn)樗膹V泛使用和支持。關(guān)于這個(gè)主題,有許多文檔和書(shū)籍。Beowulf 與以下一些科學(xué)集群系統(tǒng)之間的差異可以是實(shí)際的,或者只是在產(chǎn)品名稱中有差異。例如,盡管名稱不同,Alta Technologies 的 AltaCluster 就是一個(gè) Beowulf 系統(tǒng)。某些供應(yīng)商,如 ParTec AG,一家德國(guó)公司,提供了 Beowulf 模型的衍生版本,以包括其它管理接口和通信協(xié)議。
Giganet cLAN
Giganet 提供了一種定制的基于硬件的解決方案,它使用非 IP 協(xié)議在一個(gè)科學(xué)群集的節(jié)點(diǎn)間進(jìn)行通信。如前所述,“虛擬接口”協(xié)議通過(guò)除去不少協(xié)議的開(kāi)銷,如 IP,以支持服務(wù)器間更快的通信。另外,硬件系統(tǒng)可按千兆比特速度運(yùn)行,并且延遲很短,使它非常適合構(gòu)建最多達(dá) 256 個(gè)節(jié)點(diǎn)的科學(xué)群集。該供應(yīng)商支持 MPI,這樣許多并行應(yīng)用程序就可以在類似的系統(tǒng)(如 Beowulf)上運(yùn)行。
它也有 Beowulf 的缺點(diǎn),即不能用作網(wǎng)絡(luò)負(fù)載共享系統(tǒng),除非想要編寫(xiě)應(yīng)用程序來(lái)監(jiān)控和分發(fā)在服務(wù)器間傳送的網(wǎng)絡(luò)包。
Legion
Legion 試圖構(gòu)建一個(gè)真正的多計(jì)算機(jī)系統(tǒng)。這是一個(gè)群集,其中每個(gè)節(jié)點(diǎn)都是一個(gè)獨(dú)立系統(tǒng),但在用戶看來(lái),整個(gè)系統(tǒng)只是一臺(tái)計(jì)算機(jī)。Legion 設(shè)計(jì)成支持一臺(tái)世界范圍的計(jì)算機(jī),由上百萬(wàn)個(gè)主機(jī)以及數(shù)以萬(wàn)億計(jì)的軟件對(duì)象組成。在 Legion 中,用戶可以創(chuàng)立他們自己的合作小組。
Legion 提供了高性能并行、負(fù)載均衡、分布式數(shù)據(jù)管理和容錯(cuò)性。
Legion 提供了高性能并行、負(fù)載均衡、分布式數(shù)據(jù)管理和容錯(cuò)性。它通過(guò)其容錯(cuò)管理和成員節(jié)點(diǎn)間的動(dòng)態(tài)重新配置來(lái)支持高可用性。它還有一個(gè)可擴(kuò)充核心,該核心可以在出現(xiàn)新的改進(jìn)和進(jìn)展時(shí)動(dòng)態(tài)替換或升級(jí)。系統(tǒng)并不是只接受單一控制,而是可以由任意數(shù)量的組織管理,而每個(gè)組織都支持整體的自治部分。Legion API 通過(guò)其內(nèi)置的并行性提供了高性能計(jì)算。
Legion 需要使用特別編寫(xiě)的軟件,以使它可以使用其 API 庫(kù)。它位于用戶計(jì)算機(jī)操作系統(tǒng)之上,協(xié)調(diào)本地資源和分布式資源。它自動(dòng)處理資源調(diào)度和安全性,還管理上下文空間以描述和訪問(wèn)整個(gè)系統(tǒng)中上億種可能之外的對(duì)象。然而,在每個(gè)節(jié)點(diǎn)上運(yùn)行時(shí),不需要使用系統(tǒng)管理員特權(quán),并且可以使用無(wú)特權(quán)的用戶帳號(hào)進(jìn)行工作。這將增加加入 Legion 的節(jié)點(diǎn)和用戶的靈活性。
Cplant
Sandia National Lab 中的 Computational Plant 是一個(gè)大規(guī)模整體并行群集,用于實(shí)現(xiàn) TeraFLOP(萬(wàn)億次浮點(diǎn)運(yùn)算)計(jì)算并構(gòu)建在商業(yè)組件上。整個(gè)系統(tǒng)由“可伸縮單元”組成,這些“可伸縮單元”可以劃分成適合不同目的(計(jì)算、磁盤(pán) I/O、網(wǎng)絡(luò) I/O、服務(wù)管理)。群集中的每個(gè)節(jié)點(diǎn)都是一個(gè) Linux 系統(tǒng),帶有專門開(kāi)發(fā)的、提供分區(qū)服務(wù)的內(nèi)核級(jí)模塊。每個(gè)分區(qū)的功能可以通過(guò)裝入和卸載內(nèi)核級(jí)模塊來(lái)修改。
項(xiàng)目分三個(gè)階段完成,開(kāi)始階段是原型,有 128 個(gè)基于 433-MHz DEC Alpha 21164 的系統(tǒng),其中每個(gè)都有 192 MB RAM 和 2 GB 驅(qū)動(dòng)器,相互之間用 Myrinet 網(wǎng)卡和 8-端口的 SAN 交換機(jī)連接。第 1 階段將它擴(kuò)充為 400 個(gè)基于 21164 的工作站,這些工作站的運(yùn)行速度為 500 MHz,有 192 MB RAM,沒(méi)有存儲(chǔ)器,用 16-端口的 SAN 交換機(jī)以超立方體結(jié)構(gòu)連接起來(lái),并且運(yùn)行 Red Hat 5.1。當(dāng)前的第 2 階段有 592 臺(tái)基于 DEC 21264 的機(jī)器,它們的運(yùn)行速度為 500 MHz,有 256 MB RAM,沒(méi)有驅(qū)動(dòng)器。每個(gè)節(jié)點(diǎn)都使用 64-位,33-MHz PCI Myrinet 網(wǎng)卡,并且仍使用 16-端口交換機(jī)以超立方體結(jié)構(gòu)連接。
在 Cplant 上運(yùn)行的應(yīng)用程序包括解決稀疏線性系統(tǒng)、流體力學(xué)和結(jié)構(gòu)力學(xué)中計(jì)算系統(tǒng)的優(yōu)化、分子力學(xué)的模擬、線性結(jié)構(gòu)力學(xué)的有限元分析,以及并行應(yīng)用程序的動(dòng)態(tài)負(fù)載均衡庫(kù)。
JESSICA 2
香港大學(xué)的系統(tǒng)研究小組有一個(gè)基于 Java 的群集,叫做支持 Java 的單系統(tǒng)映像計(jì)算體系結(jié)構(gòu) (JESSICA),它作為一個(gè)中間件層以完成單系統(tǒng)映像的幻想。該層是每個(gè)使用分布式共享內(nèi)存 (DSM) 系統(tǒng)進(jìn)行通信的節(jié)點(diǎn)上運(yùn)行的所有線程的一個(gè)全局線程空間。該項(xiàng)目使用 ThreadMark DSM,但最終將用他們自己創(chuàng)建的 JiaJia Using Migrating-home Protocol (JUMP)。他們使用定制的基于 Java 的 ClusterProbe 軟件來(lái)管理群集的 50 個(gè)節(jié)點(diǎn)。
PARIS
法國(guó)的 IRISA 研究所的“大規(guī)模數(shù)字模擬應(yīng)用程序的編程并行和分布式系統(tǒng)”(PARIS) 項(xiàng)目提供了幾種用于創(chuàng)建 Linux 服務(wù)器群集的工具。該項(xiàng)目由三部分組成:群集的資源管理軟件、并行編程語(yǔ)言的運(yùn)行時(shí)環(huán)境,以及分布式數(shù)字模擬的軟件工具。
資源管理軟件包括用于共享內(nèi)存、磁盤(pán)和處理器資源的 Globelins 分布式系統(tǒng),及其 Dupleix 和 Mome 分布式共享內(nèi)存系統(tǒng)。
負(fù)載均衡群集
負(fù)載均衡群集在多節(jié)點(diǎn)之間分發(fā)網(wǎng)絡(luò)或計(jì)算處理負(fù)載。在這種情況下,區(qū)別在于缺少跨節(jié)點(diǎn)運(yùn)行的單并行程序。大多數(shù)情況下,那種群集中的每個(gè)節(jié)點(diǎn)都是運(yùn)行單獨(dú)軟件的獨(dú)立系統(tǒng)。但是,不管是在節(jié)點(diǎn)之間進(jìn)行直接通信,還是通過(guò)中央負(fù)載均衡服務(wù)器來(lái)控制每個(gè)節(jié)點(diǎn)的負(fù)載,在節(jié)點(diǎn)之間都有一種公共關(guān)系。通常,使用特定的算法來(lái)分發(fā)該負(fù)載。
網(wǎng)絡(luò)流量負(fù)載均衡是一個(gè)過(guò)程,它檢查到某個(gè)群集的入網(wǎng)流量,然后將流量分發(fā)到各個(gè)節(jié)點(diǎn)以進(jìn)行適當(dāng)處理。它最適合大型網(wǎng)絡(luò)應(yīng)用程序,如 Web 或 FTP 服務(wù)器。負(fù)載均衡網(wǎng)絡(luò)應(yīng)用服務(wù)要求群集軟件檢查每個(gè)節(jié)點(diǎn)的當(dāng)前負(fù)載,并確定哪些節(jié)點(diǎn)可以接受新的作業(yè)。這最適合運(yùn)行如數(shù)據(jù)分析等串行和批處理作業(yè)。那些系統(tǒng)還可以配置成關(guān)注某特定節(jié)點(diǎn)的硬件或操作系統(tǒng)功能:這樣,群集中的節(jié)點(diǎn)就沒(méi)有必要是一致的。
Linux 虛擬服務(wù)器
“Linux 虛擬服務(wù)器”項(xiàng)目已經(jīng)實(shí)現(xiàn)了許多內(nèi)核補(bǔ)丁,它們?yōu)槿刖W(wǎng) TCP/IP 流量創(chuàng)建了負(fù)載均衡系統(tǒng)。LVS 軟件檢查入網(wǎng)流量,然后根據(jù)負(fù)載均衡算法,將流量重定向到一組充當(dāng)群集的服務(wù)器。這允許網(wǎng)絡(luò)應(yīng)用程序,如 Web 服務(wù)器,在節(jié)點(diǎn)群集上運(yùn)行以支持大量用戶。
LVS 支持作為負(fù)載均衡服務(wù)器直接連接到同一個(gè) LAN 的群集節(jié)點(diǎn),但它還能夠以通道傳送 IP 包的方式連接到遠(yuǎn)程服務(wù)器。后一種方法包括壓縮 IP 包中的均衡請(qǐng)求,這些 IP 信息包從負(fù)載均衡服務(wù)器直接發(fā)送到遠(yuǎn)程群集節(jié)點(diǎn)。盡管 LVS 可以遠(yuǎn)程支持網(wǎng)站的負(fù)載均衡,但它使用的負(fù)載均衡算法現(xiàn)在對(duì)于虛擬群集中的廣域 Web 服務(wù)器仍無(wú)效。因此,如果 Web 服務(wù)器都在同一個(gè) LAN 中,LVS 最好當(dāng)作負(fù)載均衡服務(wù)器使用。
負(fù)載均衡系統(tǒng)的幾種硬件實(shí)現(xiàn)比在通用操作系統(tǒng),如 Linux,上運(yùn)行得更快。它們包括來(lái)自 Alteon 和 Foundry 的硬件,其硬件邏輯和最少操作系統(tǒng)可以在硬件中執(zhí)行流量管理,并且速度比純軟件快。它們的價(jià)格也很高,通常都在 $10,000 以上。如果需要簡(jiǎn)單和便宜的解決方案,一個(gè)有很多內(nèi)存 (256 MB) 的中等 Linux 系統(tǒng)將會(huì)是一個(gè)好的負(fù)載均衡系統(tǒng)。
TurboLinux TurboCluster 和 enFuzion
TurboLinux 有一個(gè)產(chǎn)品叫 TurboCluster,它最初以“Linux 虛擬服務(wù)器”項(xiàng)目開(kāi)發(fā)的內(nèi)核補(bǔ)丁為基礎(chǔ)。因此,它可以得到大部分優(yōu)點(diǎn),但它的缺點(diǎn)也與原來(lái)的項(xiàng)目一樣。TurboLinux 為此還開(kāi)發(fā)了一些工具,用于監(jiān)控增加產(chǎn)品實(shí)用性的群集行為。一家主要供應(yīng)商的商業(yè)支持也使它對(duì)于大型網(wǎng)站更具吸引力。
EnFuzion 支持在節(jié)點(diǎn)之間實(shí)現(xiàn)自動(dòng)負(fù)載均衡和資源共享,而且可以自動(dòng)重新安排失敗的作業(yè)。
EnFuzion 是 TurboLinux 即將推出的科學(xué)群集產(chǎn)品,它并不基于 Beowulf。但是,它可以支持上百個(gè)節(jié)點(diǎn)以及許多不同的非 Linux 平臺(tái),包括 Solaris、Windows NT、HP-UX、IBM AIX、SGI Irix 和 Tru64。EnFuzion 非常有趣,因?yàn)樗\(yùn)行所有現(xiàn)有軟件,并且不需要為環(huán)境編寫(xiě)定制的并行應(yīng)用程序。它支持在節(jié)點(diǎn)間實(shí)現(xiàn)自動(dòng)負(fù)載均衡和資源共享,而且可以自動(dòng)重新安排失敗的作業(yè)。
Platform Computing 的 LSF 批處理
Platform Computing 是群集計(jì)算領(lǐng)域的老手,現(xiàn)在提供了 Linux 平臺(tái)上的“負(fù)載均衡設(shè)施 (LSF) 批處理”軟件。LSF 批處理允許中央控制器安排作業(yè)在群集中任意數(shù)量的節(jié)點(diǎn)上運(yùn)行。在概念上,它類似于 TurboLinux enFuzion 軟件,并且支持在節(jié)點(diǎn)上運(yùn)行任何類型的應(yīng)用程序。
這種方法對(duì)于群集大小是非常靈活的,因?yàn)榭梢悦鞔_選擇節(jié)點(diǎn)的數(shù)量,甚至是運(yùn)行應(yīng)用程序的節(jié)點(diǎn)。于是,可以將 64 個(gè)節(jié)點(diǎn)的群集分成更小的邏輯群集,每個(gè)邏輯群集都運(yùn)行自己的批處理應(yīng)用程序。而且,如果應(yīng)用程序或節(jié)點(diǎn)失敗,它可以在其它服務(wù)器上重新安排作業(yè)。
Platform 的產(chǎn)品在主要 Unix 系統(tǒng)和 Windows NT 上運(yùn)行。目前,只有它們的 LSF 批處理產(chǎn)品已經(jīng)移植到 Linux 上。最終,LSF Suite 組件的其余部分也將緊隨其后移植到 Linux 上。
Resonate Dispatch 系列
Resonate 有一種基于軟件的負(fù)載均衡方法,類似于 Linux 虛擬服務(wù)器。但是,它支持更多特性,以及一些更好的負(fù)載均衡算法。例如,使用 Resonate,可以在每個(gè)群集節(jié)點(diǎn)裝入一個(gè)代理,以確定該節(jié)點(diǎn)當(dāng)前的系統(tǒng)負(fù)載。然后,負(fù)載均衡服務(wù)器檢查每個(gè)節(jié)點(diǎn)的代理,以確定哪個(gè)節(jié)點(diǎn)的負(fù)載最少,并且將新的流量發(fā)送給它。另外,Resonate 還可以使用它的 Global Dispatch 產(chǎn)品更有效地支持地區(qū)性分布式服務(wù)器。
Resonate 已經(jīng)在 Red Hat Linux 上徹底測(cè)試了該軟件,相信它也可以在其它發(fā)行版上運(yùn)行。Resonate 的軟件還可以在其它各種平臺(tái)上運(yùn)行,包括 Solaris、AIX、Windows NT,并且它還可以在混合環(huán)境中進(jìn)行負(fù)載均衡。
MOSIX
MOSIX 使用 Linux 內(nèi)核新版本來(lái)實(shí)現(xiàn)進(jìn)程負(fù)載均衡集群系統(tǒng)。該群集中,任何服務(wù)器或工作站可以按指定加入或離開(kāi),即添加到群集的總處理能力,或從中除去。根據(jù)其文檔,MOSIX 使用自適應(yīng)進(jìn)程負(fù)載均衡和內(nèi)存引導(dǎo)算法使整體性能最大化。應(yīng)用程序進(jìn)程可以在節(jié)點(diǎn)之間搶先遷移,以利用最好的資源,這類似于對(duì)稱多處理器系統(tǒng)可以在各個(gè)處理器之間切換應(yīng)用程序。
MOSIX 在應(yīng)用層是完全透明的,并且不需要重新編譯或者重新鏈接到新的庫(kù),因?yàn)樗幸磺卸及l(fā)生在內(nèi)核級(jí)上??梢杂袔追N方法將它配置成多用戶共享環(huán)境群集。所有服務(wù)器可以共享一個(gè)池,系統(tǒng)可以是群集的一部分,或者群集可以動(dòng)態(tài)地分成幾個(gè)子群集,每種方法都有不同的用途。Linux 工作站還可以是群集的一部分,可以是固定的,也可以是臨時(shí)的,或者只是作為批處理作業(yè)提交者。作為臨時(shí)群集節(jié)點(diǎn),工作站可以在其空閑時(shí)用于增加群集處理能力。也允許只以批處理方式使用群集,在這種方式中,群集被配置成通過(guò)隊(duì)列接受批處理作業(yè)。然后,守護(hù)程序取走作業(yè)并將它們發(fā)送到群集節(jié)點(diǎn)進(jìn)行處理。
MOSIX 的不利之處是它更改 Linux 內(nèi)核行為的一些核心部分,于是系統(tǒng)級(jí)應(yīng)用程序?qū)⒉粫?huì)按期望運(yùn)行。
除了高性能科學(xué)計(jì)算,MOSIX 提供了一個(gè)有趣的選項(xiàng),用于以共同設(shè)置創(chuàng)建集群環(huán)境。通過(guò)使用服務(wù)器和工作站上的閑置資源,它可以更快更有效地創(chuàng)建和運(yùn)行應(yīng)用程序。由于訪問(wèn)了多臺(tái)服務(wù)器,并且可以動(dòng)態(tài)調(diào)整群集大小和更改負(fù)載均衡規(guī)則,它還可以提供高度的服務(wù)器可用性。MOSIX 的不利之處是它更改 Linux 內(nèi)核行為的一些核心部分,于是系統(tǒng)級(jí)應(yīng)用程序?qū)⒉粫?huì)按期望運(yùn)行。要使用網(wǎng)絡(luò)應(yīng)用程序時(shí),而該程序使用基于單個(gè)服務(wù)器地址的套接字連接,MOSIX 通常也會(huì)受到限制。這意味著網(wǎng)絡(luò)應(yīng)用程序在一個(gè)服務(wù)器節(jié)點(diǎn)上開(kāi)始運(yùn)行時(shí),如果 IP 地址與套接字綁定,那么它必須繼續(xù)在該節(jié)點(diǎn)上運(yùn)行。顯然,MOSIX 還正在開(kāi)始遷移套接字,因此這很快就變成了爭(zhēng)論的焦點(diǎn)。
高可用性群集
高可用性 (HA) 群集致力于使服務(wù)器系統(tǒng)的運(yùn)行速度和響應(yīng)速度盡可能快。它們經(jīng)常使用在多臺(tái)機(jī)器上運(yùn)行的冗余節(jié)點(diǎn)和服務(wù),用來(lái)相互跟蹤。如果某個(gè)節(jié)點(diǎn)失敗,它的替補(bǔ)將在幾秒鐘或更短時(shí)間內(nèi)接管它的職責(zé)。因此,對(duì)于用戶而言,群集永遠(yuǎn)不會(huì)停機(jī)。
某些 HA 群集也可以維護(hù)節(jié)點(diǎn)間冗余應(yīng)用程序。因此,用戶的應(yīng)用程序?qū)⒗^續(xù)運(yùn)行,即使他或她使用的節(jié)點(diǎn)出了故障。正在運(yùn)行的應(yīng)用程序會(huì)在幾秒之內(nèi)遷移到另一個(gè)節(jié)點(diǎn),而所有用戶只會(huì)察覺(jué)到響應(yīng)稍微慢了一點(diǎn)。但是,這種應(yīng)用程序級(jí)冗余要求將軟件設(shè)計(jì)成具有群集意識(shí)的,并且知道節(jié)點(diǎn)失敗時(shí)應(yīng)該做什么。但對(duì)于 Linux,大多數(shù)現(xiàn)在還做不到。因?yàn)?Linux 系統(tǒng)沒(méi)有 HA 集群標(biāo)準(zhǔn),并且也沒(méi)有公共 API 可供應(yīng)用程序開(kāi)發(fā)者構(gòu)建有群集意識(shí)的軟件。
HA 群集可以執(zhí)行負(fù)載均衡,但通常主服務(wù)器運(yùn)行作業(yè),而系統(tǒng)使輔助服務(wù)器保持閑置。輔助服務(wù)器通常是主服務(wù)器操作系統(tǒng)設(shè)置的鏡像,盡管硬件本身稍有不同。輔助節(jié)點(diǎn)對(duì)主服務(wù)器進(jìn)行活動(dòng)監(jiān)控或心跳觀察,以查看它是否仍在運(yùn)行。如果心跳計(jì)時(shí)器沒(méi)有接收到主服務(wù)器的響應(yīng),則輔助節(jié)點(diǎn)將接管網(wǎng)絡(luò)和系統(tǒng)身份(如果是 Linux 系統(tǒng),則是 IP 主機(jī)名和地址)。
但是,Linux 在這一領(lǐng)域仍有一點(diǎn)忽略。好消息是有一家著名的供應(yīng)商正在努力盡快研制高可用性群集,因?yàn)樗瞧髽I(yè)級(jí)服務(wù)器都必需的功能。
Linux-HA 項(xiàng)目
高可用性 Linux 項(xiàng)目,根據(jù)其目標(biāo)聲明,旨在為 Linux 提供高可用性解決方案,以通過(guò)社區(qū)開(kāi)發(fā)成果提高可靠性、可用性和服務(wù)能力。Linux 達(dá)到高可用性集群時(shí),這是一種試圖給予 Linux 與先進(jìn)的 Unix 系統(tǒng),如 Solaris、AIX 和 HP/UX,一樣具有競(jìng)爭(zhēng)力的特性。因此,項(xiàng)目的目標(biāo)是在 2001 年之前達(dá)到 Unix 集群比較報(bào)告 (http://www.sun.com/clusters/dh.brown.pdf) 中分析專家組 D. H. Brown 特定功能性級(jí)別。
項(xiàng)目中有可以維護(hù)節(jié)點(diǎn)間心跳并接管失敗節(jié)點(diǎn)的 IP 地址的軟件。如果一個(gè)節(jié)點(diǎn)失敗,它使用“偽造冗余 IP”軟件包將失敗節(jié)點(diǎn)的地址添加到工作節(jié)點(diǎn)以承擔(dān)它的職責(zé)。于是,可以在幾毫秒時(shí)間內(nèi)自動(dòng)替換失敗的節(jié)點(diǎn)。實(shí)際使用中,心跳通常在幾秒范圍內(nèi),除非在節(jié)點(diǎn)之間有專用網(wǎng)絡(luò)鏈接。因此,失敗系統(tǒng)中的用戶應(yīng)用程序仍需要在新的節(jié)點(diǎn)上重新啟動(dòng)。
無(wú)處不在的集群
對(duì)于 Linux,有許多集群系統(tǒng)可供選用。同時(shí),那些項(xiàng)目中有幾個(gè)是非商業(yè)性的,甚至是實(shí)驗(yàn)性質(zhì)的。雖然對(duì)學(xué)術(shù)界和某些組織這也沒(méi)有形成問(wèn)題,但大公司通常首選著名供應(yīng)商的商業(yè)支持平臺(tái)。供應(yīng)商,如 IBM、SGI、HP 和 Sun,提供了用于在 Linux 中構(gòu)建科學(xué)群集的產(chǎn)品和服務(wù),因?yàn)槿杭芰餍?,并且可以銷售大量的服務(wù)器設(shè)備。一旦商業(yè)機(jī)構(gòu)認(rèn)為其它形式的集群是可靠的,那些相同的服務(wù)器供應(yīng)商或許會(huì)圍繞著開(kāi)放源碼集群解決方案創(chuàng)建自己的產(chǎn)品。
Linux 作為服務(wù)器平臺(tái)的重要性依賴于支持大型服務(wù)器和服務(wù)器群集的能力。這就使它可以與 Sun、HP、IBM 和其它公司的 UNIX 服務(wù)器在更高層面上競(jìng)爭(zhēng)。雖然 Windows NT 和 2000 不支持 Linux 能夠支持的集群范圍,但是 HA 集群正規(guī)方法的可用性以及用于構(gòu)建有群集意識(shí)的 API 也使它能夠參與競(jìng)爭(zhēng)。
如果正在考慮構(gòu)建一個(gè)群集,那么您應(yīng)當(dāng)仔細(xì)檢查那些可能性,并將它們與您的需求做比較。您也許會(huì)發(fā)現(xiàn)想要實(shí)現(xiàn)的目標(biāo)還不能成為一個(gè)完整的解決方案,或許會(huì)發(fā)現(xiàn)已經(jīng)有了現(xiàn)成的解決方案。不管是哪種情況,請(qǐng)相信許多現(xiàn)有公司將他們的應(yīng)用程序托付給進(jìn)行深度計(jì)算并提供大量網(wǎng)頁(yè)的 Linux 系統(tǒng)群集。集群是一種企業(yè)系統(tǒng)服務(wù),已經(jīng)在 Linux 下成功測(cè)試過(guò)。盡管新的集群將出現(xiàn),但選擇的多樣性正是 Linux 超過(guò)其它系統(tǒng),如 Windows NT,的優(yōu)勢(shì)。
關(guān)于作者
Rawn Shah 是居住在亞利桑那州圖森市的一位獨(dú)立顧問(wèn)。他多年來(lái)與多平臺(tái)問(wèn)題打交道并撰寫(xiě)相關(guān)文章,但常常令他不解的是很少有人知道有用的系統(tǒng)工具。
摘自:IBM DeveloperWorks