集羣系統概述 |
級別: 初級 許廣斌 ([email protected]),
工程師 2001 年 5 月 12 日 本文是《基於LINUX的集羣系統》系列文章的第一篇。作者就集羣系統這一概念進行了概述,介紹了集羣系統的發展以及國內外主要的集羣系統解決方案。 第一臺計算機問世已經半個世紀了,在這期間計算機技術經歷了五次更新換代。更新換代的標誌主要有兩個:一個是計算機的器件,另一個是系統體系結構。從第一 代到第五代計算機,器件發生了根本的變化:從電子管、晶體管發展到集成電路,而集成電路又經小規模、中規模、大規模、非常大規模等階段發展到超大規模階 段。系統體系結構的不斷改進,許多重要的概念的不斷提出並且得到實現,推動計算機技術向更高的層次發展。從早期的變址寄存器、通用寄存器、程序中斷和 I/O通道等概念,到虛擬存儲器、Cache存儲器、微程序設計、系列機、基於總線的多CPU系統、向量處理機等概念,發展到64位RISC處理器、基於 MPP、NUMA、集羣等體系結構的可伸縮並行處理系統,計算機系統技術也取得了突飛猛進的發展。 將多臺同構或異構的計算機連接起來協同完成特定的任務就構成了集羣系統。早在二十世紀七八十年代,Digital equipment公司和Tandem計算機公司就開始了集羣系統的研究與開發工作。 高可用性集羣和高性能集羣。 高可用性集羣的主要功能就是提供不間斷的服務。有許多應用程序都必須一天二十四小時地不停運轉,如所有的web服務器、工業控制器、ATM、遠程通訊轉接器、醫學與軍事監測儀以及股票處理機等。對這些應用程序而言,暫時的停機都會導致數據的丟失和災難性的後果。 高性能集羣通 過將多臺機器連接起來同時處理複雜的計算問題。模擬星球附近的磁場、預測龍捲風的出現、定位石油資源的儲藏地等情況都需要對大量的數據進行處理。傳統的處 理方法是使用超級計算機來完成計算工作,但是超級計算機的價格比較昂貴,而且可用性和可擴展性不夠強,因此集羣成爲了高性能計算領域矚目的焦點。
集羣系統採用的操作系統主要有VMS、UNIX、WindowsNT和Linux。 美國DEC公司(Digital Equipment Corporation)開發的VMScluster系統開發最早,技術也很成熟,應用也很廣泛,但由於VMS操作系統只能在DEC公司的VAX系列和Alpha系列服務器上運行,VMScluster的應用受到很大限制。 UNIX是服務器或工作站上普遍使用的操作系統,它運行穩定、安全性也比較好,因此許多大的公司都採用了基於UNIX的集羣系統解決方案,如DEC、 HP、SUN、IBM、NCR和DG等公司,其中在國內影響比較大的主要是DEC、HP、SUN和IBM。其中DEC公司的Trucluster系統提供 了由4臺Digital Alpha Server組成的集羣系統,它集高可靠性、高可用性和易管理性於一身,是關鍵業務計算機系統的理想解決方案。 基於WindowsNT的集羣系統解決方案廠商主要有Mircrosoft和DEC。Microsoft於1995年就開始了集羣系統的開發工作。 Windows 2000中已經增加了集羣功能,該高可用性集羣叫做WolfPack,也叫做Microsoft Cluster Server (MCS)。它主要是在企業級對基於Windows NT服務器的應用程序提供可用性和可升級性。WolfPack現在支持兩個服務器,一個用來對用戶提供服務,另一個作爲備份服務器使用。 Microsoft下一步的目標是將WolfPack支持的節點數擴展到16個。Wolfpack的缺陷在於:它只提供了兩個節點的失敗恢復功能,而沒有 採用複雜的應用程序資源管理功能,因此在一定程度上影響了系統的高可用性、高可靠性和可升級性。Wolfpack不能支持多種操作系統,而只能運行於 Windows NT操作系統上。由於WindowsNT操作系統本身在穩定性、大型並行計算上與UNIX系統存在較大差距,目前主要在中小型系統上應用。但是隨着 WindowsNT系統走向成熟,基於WindowsNT的計算機集羣系統將獲得更廣泛的應用。 九十年代末期,Linux操作系統不斷走向成熟,它的健壯性不斷增強,並且提供了GNU軟件和標準化的PVM、MPI消息傳遞機制,最重要的是Linux在普通PC機上提供了對高性能網絡的支持,這樣就大大推動了基於Linux的集羣系統的發展。 Turbolinux公司推出了能夠顯著地提高基於TCP/IP協議的多種網絡服務的服務質量的高可用性集羣系統Turbocluster。Red Hat也提供了基於Linux Virtual Server思想構建的高可用性集羣系統Piranha。由Ericsson軟件工程研究中心開發的高可用性集羣系統Eddie的主要目的是提供一個商業級的,能提供較好的服務質量的web服務器的解決方案。 Platform公司開發的高可用性集羣系統Lsf提供了分佈式集羣系統的解決方案,通過將物理上分離的多個集羣連接在一起使使多個同構或異構的計算機能夠通過局域網或廣域網共享計算資源,並能夠爲用戶提供對資源的透明訪問。 高性能集羣系統MOSIX爲Linux核心增添了集羣計算的功能。在MOSIX集羣環境中,用戶無需對應用程序進行修改,或將應用程序與庫連接起來,或將應用程序分配到不同的節點上運行。MOSIX會自動將這些工作透明地交給別的節點來執行。 日本的F5公司開發出了高可用性集羣BIG-IP,它是使用於本地網絡站點或數據中心的高可用的、智能化的負載平衡產品,它提供了對網絡流量的自動和智能的管理。與前幾種集羣系統不同的是,BIG-IP向用戶提供的是一個即插即用設備,而其它的提供的都是軟件方法。 IBM、Microsoft和Intel於2000年7月聯合發佈了一種高可用性服務器集羣軟件及硬件包,這種服務器集羣的配置包括32臺IBM Netfinity 8500R及Intel Pentium Ⅲ Xeon處理器,運行IBM的DB2 Universal Database和Microsoft Windows 2000 Advanced Server操作系統,每分鐘可以執行440879次交易。這套系統面向數據密集的應用,特別是B2B、電子商務和企業資源規劃領域。 在科學計算領域中,人們開始把注意力投向通過普通PC機或工作站的集羣來代替昂貴的超級計算機。比較成功的例子是高性能集羣系統Beowulf,它最初是由NASA的Goddard Flight Center進行開發的,主要目的是支持大規模的科學計算問題,如地球和太空科學麪臨的一些計算問題。 國內也有不少公司進行了集羣系統的研究和開發工作。 聯想公司在1999年9月推出了用於分佈式高性能計算的NS10000高性能集羣服務器,該系統是一個四節點的系統,主要基於聯想萬全4500R服務器, 以總體成本相對較低的設備組合,足以替代傳統RISC小型機和中型機的工作,而價格僅爲市場上同等性能小型機的1/2--1/4。 朗新公司也推出了類似於Turbocluster的高可用性集羣系統LongShine Cluster Server。 1999年9月20日,中國第一家專業面向Linux高端應用市場的集羣網絡有限公司推出了國內首例Linux安全集羣系統。它是國內第一個通過公安部認 證的安全Linux系統,而其集羣技術也已應用於諸多國際著名網站,如Linux的門戶www.linux.com、英國國家JANET Cache網、奧地利的入口站點和瑞士電信等。其核心代碼也已被納入美國Red Hat Linux發佈版的核心。 中國自主開發研製的集羣式高性能計算機集羣系統"自強2000-SUHPCS"於2000年9月在上海大學問世。這一系統的峯值速度達到每秒3000億次浮點操作。是當前中國國內集羣式高性能計算機系統中速度最快的。 最典型的集羣系統 如何管理各種各樣的計算資源(如:CPU時間、內存空間、網絡帶寬、應用程序等)是許多企業當前都很頭疼的問題。尤其是對於那些員工遍佈全球的公司而言,如何充分利用有限的計算資源是非常關鍵的問題。由platform公司開發的lsf 多集羣系統使多個異構的計算機能夠通過局域網或廣域網共享計算資源,並能夠爲用戶提供對資源的透明訪問。Lsf現在主要支持以下三種大規模資源共享:
Lsf將多個集羣連接在一起,一個集羣往往是企業中的一個部門,每個集羣中有一個主控機,此主控機負責收集該集羣系統中的各臺主機的負載信息,並且根據各 主機的負載信息情況對作業進行調度。各個集羣系統之間根據一定的策略進行資源共享。在每個主控機上定義了該集羣能共享哪些集羣系統中的資源。當用戶發送了 一個任務請求時,lsf系統能將此任務發送到對應的資源所在地,並根據調度策略選擇負載較輕的機器對此任務進行處理。當多個用戶請求同一個資源時,根據用 戶的請求優先級來確保優先級高的用戶的緊急任務能首先得到滿足。Lsf還具有以下特點:
TurboCluster是一個企業級的集羣方案,它允許在多個計算機上構建高可用的、可擴展的網絡。它支持Intel和Alpha芯片,支持Linux 、Windows NT 和Solaris操作系統平臺。使用TurboCluster系統可以顯著地提高基於TCP/IP協議的多種網絡服務的服務質量,這些服務包括Web、 Mail、News和Ftp等。TurboCluster具有良好的可用性、可擴展性和可管理性,集羣內部的實際服務器的數量可以擴充到無限臺。 TurboCluster是一種基於軟件的集羣系統解決方案,它還能夠支持異構的網絡環境。它的結構如圖2-1所示。 當客戶向集羣系統發送一個請求時,該請求首先到達高級流量管理器,高級流量管理器通過一定的調度策略將此請求轉發到集羣中的某一臺實際服務器上對此請求進 行處理,最終的迴應請求將直接發送給客戶。由於最終的迴應請求沒有通過高級瀏覽管理器而是直接發送給客戶,這樣大大減輕了高級瀏覽管理器上的負載,從而降 低了瓶頸產生的可能。TurboCluster中採用的調度策略有:輪迴(Round Robin)、加權輪迴(Weighted Round Robin)、最少連接(Least Connection)。爲了減少高級流量管理器產生失效的可能,TurboCluster爲高級流量管理器準備了一個備份機。該備份機不斷詢問管理器來 確認它正在正常工作,一旦發現主管理器已經失效,備份機將接替它繼續工作。 圖2-1 turbocluster結構圖 TurboCluster具有如下一些增強的性能。
Linux虛擬服務器(Linux Virtual Server, LVS)建築於實際的服務器集羣之上,用戶看不到提供服務的多臺實際服務器,而只能看見一臺作爲負載平衡器的服務器。實際的服務器通過高速局域網或地理上 分散的廣域網連接。實際服務器的前端是一臺負載平衡器,他將用戶的請求調度到實際服務器上完成,這樣看起來好像所有服務都是通過虛擬服務器來完成的。 Linux虛擬服務器能夠提供良好的可升級性、可靠性和可用性。用戶可以透明地增加或減少一個節點,可以對實際服務器進行監測,如果發現有節點失敗就重新 配置系統。 Linux Virtual Server的結構如圖3-1所示。 圖3-1 Linux虛擬服務器結構圖 LVS提供了四種調度算法:輪轉調度,加權輪轉調度,最少連接調度,加權最少連接調度。
LVS提供了三種IP級的負載平衡方法:Virtual Server via NAT 、Virtual Server via IP Tunneling、Virtual Server via Direct Routing。 Virtual Server via NAT方法使用了報文雙向重寫的方法, Virtual Server via IP Tunneling採用的是報文單向重寫的策略, Virtual Server via Direct Routing採用的是報文轉發策略,這些策略將在以後的文章中詳細描述。
MOSIX爲Linux核心增添了集羣計算的功能。它支持的操作系統平臺有BSD/OS 和Linux,它允許任意多個基於X86/Pentium的服務器和工作站協同工作。在MOSIX集羣環境中,用戶無需對應用程序進行修改,或將應用程序與庫連接起來,或將應用程序分配到不同的節點上運行。MOSIX會自動將這些工作透明地交給別的節點來執行。 MOSIX的核心是適應性的資源管理算法,它對各節點的負載進行監測並做出相應的迴應,從而提高所有進程的整體性能。它使用搶先的進程遷移方法來在各節點 中分配和再分配進程,從而充分利用所有的資源。適應性的資源管理算法具體上又包括適應性的負載平衡算法、內存引導算法和文件I/O的優化算法。這些算法都 對集羣中的資源使用情況的變化做出響應。如:節點上的不平衡的負載分佈或由於內存不足而導致的過多的磁盤換入換出。在這種情況下,MOSIX將進程從一個 節點遷移到另外一個節點上,從而來均衡負載或將進程遷移到有足夠的內存空間的節點上。 由於MOSIX是在Linux的核心中實現的,因此它的操作對應用程序而言是完全透明的。可以用它來定義不同的集羣類型,這些集羣中的機器可以相同也可以不同。 與 Turbocluster、Linux Virtual Server、Lsf等集羣系統不同的是,MOSIX集羣中的每個節點既是主節點又是服務節點,不存在主控節點。對於那些在本地節點創建的進程而言,該節 點就是一個主節點;對於那些從遠方節點遷移過來的進程而言,該節點就是服務節點。這意味着可以在任意時刻向集羣中增加節點或從集羣中刪除節點,而不會對正 在運行的進程產生不良的影響。MOSIX的另外一個特性就是它的監測算法能夠監測每個節點的速度、負載、可用內存、IPC 以及I/O rate 。系統使用這些信息來決定將進程發送到哪個具體的節點上。當在某個節點上創建了一個進程以後,該進程就在這個節點上執行。當該節點的負載超過了一定的閥值 以後,就將該進程透明地遷移到別的節點上繼續執行。 MOSIX文件系統採用直接文件系統訪問的方法,它可以允許遷移到別的節點的進程在本地進行I/O操作。這樣就減少了需要進行I/O操作的進程與創建該進 程的節點之間的通訊,從而允許這些進程更加自由地在集羣中的節點中進行遷移。MOSIX文件系統使所有節點都可以像訪問本地文件系統一樣透明地訪問其它節 點上的所有目錄和文件。 一個低端的MOSIX配置可以包含通過以太網連接起來的多臺PC機。一個較大的配置可以包含通過快速以太網連接起來的多臺工作站和服務器。高端的MOSIX配置可以包含通過Gigabit-Ethernet連接起來的多臺SMP 或非SMP工作站和服務器。
Eddie的主要目的是提供一些供那些進行重要任務處理的網站使用的工具,從而使這些網站能夠提供持續的高級服務。Eddie創建了一個真正的分佈式web服務器結構,它支持分佈於不同的物理地點的web服務器。它的結構如圖5-1所示。 圖5-1所示的分佈式服務器包含兩個集羣,它們分別是site 1 和site 2。每個集羣都包含着一臺域名服務器和若干臺運行web服務器軟件的實際的服務器。當用戶敲入一個域名時,首先在Local DNS上對這個域名進行解析,找出與其對應的IP地址。如果Local DNS無法對這個域名進行解析,就將此域名發送到Authoritative DNS上,Authoritative DNS返回應該訪問的服務器的IP地址,然後用戶就可以訪問指定的服務器上的內容了。 圖5-1 Eddie集羣結構圖 Eddie主要包含兩個軟件包:HTTP網關和增強的DNS服務器。如圖5-2所示,在每個站點上增加一個新的服務器(即前端機),在其上運行HTTP網 關來接受外界發來的請求並且將請求調度到合適的後端機上執行,DNS服務器上運行增強的DNS服務器軟件,通過該軟件可以在多個地理上分散的網址上均衡負 載。 Eddie主要有以下與衆不同的特點:
圖5-2 Eddie功能結構圖 典型的集羣共有的特點是:
檢驗集羣系統的主要指標是可靠性(reliability)、高可用性(availability)、可維護性(serviceablity)和其它相關特點和功能。 可靠性主要指集羣中的軟件、節點計算機和共享存儲設備的可靠和穩定程度。 高可用性(High Availabity,HA)要求當硬件系統發生故障時,運行在該系統上的數據不會丟失,而且在儘可能短的時間內恢復應用系統的正常運行,能夠滿足上述要求的系統稱爲高可用性系統。 在美國D.H.Brown Association 公司的集羣系統評測報告中,將集羣系統的測試項目分爲11個大項,即:
|