基於Linux的集羣系統(二)

基於Linux的集羣系統(二) 典型集羣系統介紹

在《基於Linux的集羣系統》系列文章的第二部分,作者將向我們介紹幾個最典型的集羣系統。

Lsf

如何管理各種各樣的計算資源(如:CPU時間、內存空間、網絡帶寬、應用程序等)是許多企業當前都很頭疼的問題。尤其是對於那些員工遍佈全球的公司而言,如何充分利用有限的計算資源是非常關鍵的問題。由platform公司開發的lsf 多集羣系統使多個異構的計算機能夠通過局域網或廣域網共享計算資源,並能夠爲用戶提供對資源的透明訪問。Lsf現在主要支持以下三種大規模資源共享:

   1. 一個大企業中的多個部門,每個部門可以有一個或多個集羣,這樣就使得部門內部和部門之間可以共享資源。
   2. 較小部門的數據中心。大的昂貴的計算資源如超級計算機可以透明地與遠方較小的部門直接進行共享。
   3. 通過鬆散連接的站點共享資源。

Lsf將多個集羣連接在一起,一個集羣往往是企業中的一個部門,每個集羣中有一個主控機,此主控機負責收集該集羣系統中的各臺主機的負載信息,並且根據各主機的負載信息情況對作業進行調度。各個集羣系統之間根據一定的策略進行資源共享。在每個主控機上定義了該集羣能共享哪些集羣系統中的資源。當用戶發送了一個任務請求時,lsf系統能將此任務發送到對應的資源所在地,並根據調度策略選擇負載較輕的機器對此任務進行處理。當多個用戶請求同一個資源時,根據用戶的請求優先級來確保優先級高的用戶的緊急任務能首先得到滿足。

Lsf還具有以下特點:

   1. 提供了增強的計算能力。
      通過全局資源共享,用戶可以訪問各種各樣的計算資源,許多閒置的計算機現在都可以充分利用起來進行任務處理,許多機器也可以並行地執行同一個任務,這樣就大大增強了用戶的計算能力。
   2. lsf提供了用戶可配置的安全策略。
      通過讓用戶使用RFC931協議、Kerberos、和DCE認證等策略,系統保證了遠方的任務來自授權的用戶。
   3. 每一個集羣都是一個自治的系統。
      每個集羣中的主控機的配置文件中記錄瞭如下信息:如允許在多個集羣系統之間傳輸的任務的數量與類型,允許在多個集羣之間共享資源的用戶名。
   4. 提供非共享的用戶賬號和文件系統。
      當任務在多個集羣之間進行傳輸時,用戶的賬號可以根據配置文件進行映射。爲了支持異構的系統,lsf通過在任務執行前後將文件在集羣系統之間傳遞來提供對非共享的文件系統的支持。
   5. 良好的可擴展性。
      在單一的集羣系統中通過主控機進行管理,所有的配置信息都在主控機上,多個集羣系統之間信息的傳遞主要是與主控機有關,而與集羣中的其它主機無關。因此lsf的集羣能非常容易地擴展到成百甚至上千臺。
   6. lsf系統支持多種操作系統平臺。
      如主要的UNIX平臺:Sun Solaris、 HP-UX、 IBM AIX、 Digital UNIX/Compaq Tru64 UNIX、SGI IRIX以及 Red hat Linux、 Windows NT、Windows 2000等。

TurboCluster

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具有如下一些增強的性能。

   1. 通過heartbeat在備份機上監測流量管理器的運行狀態來提供更高的可用性。
   2. 對不可預測的系統或應用程序的失效進行自動管理。
   3. 提供動態的負載平衡,它能夠消除瓶頸並且處理峯值負載。
   4. 高級流量管理器只轉發已經授權的請求,通過在實際的應用程序服務器的前端增加虛擬防火牆來提高網絡的安全性。
   5. TurboCluster對外只顯現出流量管理器的IP,而集羣系統中的實際服務器的IP地址對外界而言是不可見的。
   6. 當實際服務器正在對外界提供服務時就可以對它進行維護工作。

Linux Virtual Server

Linux虛擬服務器(Linux Virtual Server, LVS)建築於實際的服務器集羣之上,用戶看不到提供服務的多臺實際服務器,而只能看見一臺作爲負載平衡器的服務器。實際的服務器通過高速局域網或地理上分散的廣域網連接。實際服務器的前端是一臺負載平衡器,他將用戶的請求調度到實際服務器上完成,這樣看起來好像所有服務都是通過虛擬服務器來完成的。 Linux虛擬服務器能夠提供良好的可升級性、可靠性和可用性。用戶可以透明地增加或減少一個節點,可以對實際服務器進行監測,如果發現有節點失敗就重新配置系統。

Linux Virtual Server的結構如圖3-1所示。

圖3-1 Linux虛擬服務器結構圖
 



調度算法

LVS提供了四種調度算法:輪轉調度,加權輪轉調度,最少連接調度,加權最少連接調度。

   1. 輪轉調度(Round Robin Scheduling)
      輪轉調度不考慮服務器的連接數和響應時間,它將所有的服務器都看作是相同的。當以輪轉的形式將連接分發到不同的服務器上。
   2. 加權輪轉調度(Weighted Round Robin Scheduling)
      根據每個機器的處理能力的不同給每個機器分配一個對應的權重,然後根據權重的大小以輪轉的方式將請求分發到各臺機器。這種調度算法的耗費比其它的動態調度算法小,但是當負載變化很頻繁時,它會導致負載失衡,而且那些長請求會發到同一個服務器上。
   3. 最少連接調度(Least Connection Scheduling)
      最少連接調度將用戶請求發送到連接數最少的機器上。最少連接調度是一種動態調度方法,如果集羣中各臺服務器的處理能力相近,則當負載的變化很大時也不會導致負載失衡,因爲它不會把長請求發送到同一臺機器上。但是當處理器的處理能力差異較大時,最少連接調度就不能很好的發揮效能了。
   4. 加權最小連接調度(Weighted Least Connection Scheduling)
      根據服務器的性能不同而給它們分配一個相應的權重,權重越大,獲得一個連接的機會就越大。有如下的運算方法:(假設共有n臺機器,每一臺服務器i的權重爲Wi (i=1,..,n),活躍連接數爲Ci (i=1,..,n), 所有的連接數爲Ci (i=1,..,n)的總和,下一個連接會發送給服務器j,服務器j滿足以下的要求): (Cj/ALL_CONNECTIONS)/Wj = min { (Ci/ALL_CONNECTIONS)/Wi } (i=1,..,n) 由於ALL_CONNECTIONS是一個常數,因此上面的式子可以優化爲: Cj/Wj = min { Ci/Wi } (i=1,..,n)

負載平衡方法

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

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的主要目的是提供一些供那些進行重要任務處理的網站使用的工具,從而使這些網站能夠提供持續的高級服務。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主要有以下與衆不同的特點:

   1. 提高了web服務器的吞吐量。通過提供強大的負載平衡能力,Eddie使用戶可以充分利用分佈式web服務器中的所有資源。主要在兩個地方使用了負載平衡。首先後端機將本機上的負載信息如CPU負載、內存、磁盤延遲、運行隊列數據以及頁面錯等信息發送給前端機,前端機根據負載輕重將外界請求發送到合適的服務器上。另外在增強DNS服務器軟件中也提供了負載平衡的功能,前端機和後端機的綜合負載信息都發送到Authoritative DNS服務器上,然後Local DNS可以根據各個Authoritative DNS上的負載的輕重來決定將域名解析的任務發送到哪一臺Authoritative DNS上。這樣就可以充分利用分佈式服務器環境中的所有資源,增強了web服務器的吞吐量。
   2. 提供很好的服務質量。首先Eddie通過使用靜態和動態負載平衡策略提高了web服務器的吞吐量,減少了用戶請求的響應時間;其次,當用戶發一個請求時,系統就要檢查是否來自該用戶的連接已經存在,如果存在,就將請求繼續發送到上次對該請求提供服務的服務器上,這樣就保證了用戶對web訪問的持續性。如果沒有足夠的資源,則將用戶請求加入等待隊列,並且告訴用戶它的請求要等待一會兒纔會被處理。

圖5-2 Eddie功能結構圖
 



典型集羣系統小結

典型的集羣共有的特點是:

   1. 集羣都是將普通PC 工作站、工作站或服務器通過某種方式連接起來構成的多機系統。連接方式可以採取通過網絡適配器和網絡集線器,或通過將各個機器的RS-232串口直接連接起來,還可以通過內存通道卡和內存通道集線器的方式連接各臺機器。
   2. 集羣系統都具有良好的可用性。即它們都能夠在集羣的某部分資源出故障的情況下繼續向用戶提供持續的服務。幾乎所有的典型集羣都擁有災難恢復功能。
   3. 集羣系統有良好的可擴展性。只需很少的配置工作就可以方便地向集羣中加入或刪除工作節點。
   4. 典型的集羣系統提供了良好的可管理性。管理人員通過簡單的操作就可以對集羣中的工作節點或控制節點進行配置工作。
   5. 集羣系統一般都提供了負載平衡功能。負載平衡包括靜態負載平衡和動態負載平衡,爲了最大程度地利用集羣中的一切資源,集羣需要具有動態負載平衡功能,它能夠通過監視集羣中的實際節點的負載情況並動態地進行調度的改變。
   6. 大部分集羣系統都有一個主控機,它能夠對集羣中的機器的運行狀態進行監視,而且能夠根據各機器的負載輕重進行任務的調度。

評測標準

檢驗集羣系統的主要指標是可靠性(reliability)、高可用性(availability)、可維護性(serviceablity)和其它相關特點和功能。

可靠性主要指集羣中的軟件、節點計算機和共享存儲設備的可靠和穩定程度。

高可用性(High Availabity,HA)要求當硬件系統發生故障時,運行在該系統上的數據不會丟失,而且在儘可能短的時間內恢復應用系統的正常運行,能夠滿足上述要求的系統稱爲高可用性系統。

在美國D.H.Brown Association 公司的集羣系統評測報告中,將集羣系統的測試項目分爲11個大項,即:

   1. 集羣內備份與恢復:考察集羣對故障和條件變化的檢測和響應能力。
   2. 集羣可配置性:考察集羣硬件和軟件配置的靈活性。
   3. 節點內故障恢復:考察獨立節點硬件和軟件故障條件下的恢復能力。
   4. 集羣並行數據庫可存取性:考察集羣對並行數據庫的支持程度和效率,即集羣內各節點同時訪問同一數據庫的能力和效率。
   5. 集羣內高可用性可管理能力:考察集羣系統提供的集羣管理工具和界面的易使用性和友好性。
   6. 集羣單一系統映像:考察集羣在分佈式環境中對客戶端提供的單一系統的形象。完美的情況就是爲了管理和使用方便,集羣提供分佈式集羣資源就像單機系統一樣。
   7. 災難恢復能力:考察集羣在地理數據鏡像、遠程數據複製、遠程自動故障處理等方面的能力,即集羣在火災、洪水和地震等條件下保持正常運行和自動故障恢復的能力。
   8. 硬件和軟件RAID功能:考察集羣對硬件和軟件RAID(Redudant Array of Independent Disks)的支持程度,從而保證數據的安全性和可恢復性。
   9. 節點內故障預防:考察節點對故障的預警能力和節點內故障的易分辨性。
  10. 節點故障在線維護:考察節點在不停機條件下增加或更換部件的能力以及節點內軟件的可管理性(如軟件升級)。
  11. 節點維護特徵:考察集羣在重啓動自動配置(在部分部件失效或增加冗餘部件的情況下)、遠程操作和遠程故障通知等方面的能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章