一 前言前端
目前,愈來愈多的網站採用Linux操做系統,提供郵件、Web、文件存儲、數據庫等服務。也有很是多的公司在企業內部網中利用Linux服務器提供這些服務。隨着人們對Linux服務器依賴的加深,對其可靠性、負載能力和計算能力也倍加關注。Linux集羣技術應運而生,能夠用低廉的成本,很好地知足人們的這些須要。 node
二 集羣概念linux
集羣是一組協同工做的服務實體,用以提供比單一服務實體更具擴展性和可用性的服務平臺。nginx
從客戶端看來,一個集羣就是一個完整不可細分的實體,但事實上一個集羣實體是由完成不一樣任務的服務節點個體所組成的。web
集羣實體的可擴展性是指,在集羣運行的中新的服務節點能夠動態的加入集羣實體從而提高集羣實體的綜合性能。算法
集羣實體的高可用性是指,集羣實體經過其內部的服務節點的冗餘使客戶端免予OUT OF SERVICE 錯誤。簡單的說,在集羣中同一服務能夠由多個服務節點提供,當部分服務節點失效後,其它服務節點能夠接管服務。數據庫
集羣實體地址是指客戶端訪問集羣實體獲取服務資源的惟一入口地址。服務器
負載均衡是指集羣中的分發設備(服務)將用戶的請求任務比較均衡(不是平均)分佈到集羣實體中的服務節點計算、存儲和網絡資源中。網絡
通常咱們將提供負載均衡分發的設備叫作負載均衡器。架構
負載均衡器通常具有以下三個功能:
1. 維護集羣地址
2. 負責管理各個服務節點的加入和退出
3. 集羣地址向內部服務節點地址的轉換
錯誤恢復是指集羣中某個或某些服務節點(設備)不能正常工做(或提供服務),其它相似服務節點(設備)能夠資源透明和持續的完成原有任務。具有錯誤恢復能力是集羣實體高可用性的必要條件。
負載均衡和錯誤恢復都須要集羣實體中各個服務節點中有執行同一任務的資源存在,並且對於同一任務的各個資源來講,執行任務所需的信息視圖必須一致。
三 集羣分類
按照側重點的不一樣,能夠把Linux集羣分爲三類。
一類是高可用性集羣(High Availability)
高可用性集羣的主要功能就是提供不間斷的服務,運行於兩個或多個節點上,目的是在系統出現某些故障的狀況下,仍能繼續對外提供服務。有許多應用程序都必須一天二十四小時地不停運轉,如全部的web服務器、工業控制器、ATM、遠程通信轉接器、醫學與軍事監測儀以及股票處理機等。對這些應用程序而言,暫時的停機都會致使數據的丟失和災難性的後果。
(1)HA集羣經過特殊軟件把獨立的(node)系統鏈接起來,組成一個可以提供故障切換功能的集羣;
(2)HA集羣能夠保證在多種故障中,關鍵服務的可用性、可靠性及數據完整性;
(3)HA集羣主要用於文件服務、WEB服務,數據庫服務等關鍵應用中。
這類集羣中比較著名的有Turbolinux TurboHA、Heartbeat、Kimberlite,keepalived等。
可用性一般指系統的uptime,在7x24x365的工做環境中,99%的可用性指在一年中能夠有87小時36分鐘的DOWN機時間,一般在關鍵服務中這種一天多的故障時間是沒法接受的,因此提出了前面提到的錯誤恢復概念,以知足99.999%的可用性需求。包括在RHEL中的HA集羣技術和容錯(fault tolerance)並非同義詞。
容錯系統使用高度專業化的、一般很是昂貴的硬件來實現一個徹底冗餘的環境。在這個環境中運行的服務可以不被硬件失效中斷。 容錯系統並不容忍操做員和軟件的錯誤,而HA集羣卻可以經過服務的冗餘性來修正這類錯誤。此外,因爲紅帽企業 Linux 是爲在通用廉價的硬件上運行而設計的,它所創造的系統高可用性環境的費用只是容錯硬件費用的極少的一部分。
高可用性集羣和多機熱備技術有很大區別,但不少人會將其混淆。多機熱備技術是指一臺服務器做爲主機,其它服務器作爲備份機(能夠不在加電狀態稱之爲冷備,能夠在加電狀態稱之爲熱備),當主機失效時,備份機經過人爲的參與接管服務。
第二類是負載均衡集羣(Load Balancing)
(1)在LB服務器上使用專門的路由算法,將數據包分散到多個真實服務器中進行從而達到網絡服務均衡負載的做用
(2)Lb服務器能夠充分利用現有資源,提升高負載服務的性能,下降高負載服務本
(3)Lb集羣主要用於公共WEB服務、FTP服務、數據庫服務等高負載服務中
LB的目的是提供和節點個數成正比的負載能力,這種集羣很適合提供大訪問量的Web服務。負載均衡集羣每每也具備必定的高可用性特色。Turbolinux Cluster Server、Linux Virtual Server都屬於負載均衡集羣。
對於使用服務的用戶(如網站)來講,Linux 虛擬服務器(LVS)集羣看起來是一個服務器。事實上,該用戶使用的是一對冗餘 LVS 路由器以後的兩個或多個服務器的集羣。這對路由器把客戶請求均衡地分配給集羣系統。負載均衡集羣的系統容許管理員使用常見廉價的硬件和 Linux 在知足可用性需求的同時還提供服務的連續持久的訪問。
LB集羣的開源項目:LVS 詳情見官方網站:http://www.linuxvirtualserver.org
第三類是高性能計算集羣(High performance Computing)
高性能計算集羣經過將多臺機器鏈接起來同時處理複雜的計算問題。模擬星球附近的磁場、預測龍捲風的出現、定位石油資源的儲藏地等狀況都須要對大量的數據進行處理。傳統的處理方法是使用超級計算機來完成計算工做,可是超級計算機的價格比較昂貴,並且可用性和可擴展性不夠強,所以集羣成爲了高性能計算領域矚目的焦點。
按照計算關聯程度的不一樣,又能夠分爲兩種。
一種是任務片方式 DC (Distributed Computing),要把計算任務分紅任務片,再把任務片分配給各節點,在各節點上分別計算後再把結果彙總,生成最終計算結果,例如
OpenMosix OpenSSI。
另外一種是並行計算方式 PC (Parallel Computing),節點之間在計算過程當中大量地交換數據,能夠進行具備強耦合關係的計算。這兩種超級計算集羣分別適用於不一樣類型的數據處理工做。有了超級計算集羣軟件,企業利用若干臺PC機就能夠完成一般只有超級計算機才能完成的計算任務。這類軟件有Turbolinux EnFusion、SCore等。
四,高可用性集羣與負載均衡集羣的工做原理不一樣,適用於不一樣類型的服務。
一般,負載均衡集羣適用於提供靜態數據的服務,如HTTP服務;
高可用性集羣既適用於提供靜態數據的服務,如HTTP服務,又適用於提供動態數據的服務,如數據庫等。高可用性集羣之因此能適用於提供動態數據的服務,是因爲節點共享同一存儲介質,如RAIDBox。也就是說,在高可用性集羣內,每種服務的用戶數據只有一份,存儲在共用存儲設備上,在任一時刻只有一個節點能讀寫這份數據。
以Turbolinux TurboHA爲例,集羣中有兩個節點A和B,架設這個集羣只提供Oracle服務,用戶數據存放於共用存儲設備的分區/dev/sdb3上。在正常狀態下,節點A提供Oracle數據庫服務,分區/dev/sdb3被節點A加載在/mnt/oracle上。當系統出現某種故障並被TurboHA軟件檢測到時,TurboHA會將Oracle服務中止,並把分區/dev/sdb3卸載。以後,節點B上的TurboHA軟件將在節點B上加載該分區,並啓動Oracle服務。對於Oracle服務有一個虛擬的IP地址,當Oracle服務從節點A切換到節點B上時,虛擬的IP地址也會隨之綁定到節點B上,所以用戶仍可訪問此服務。
雖然集羣系統並不能解決全部的系統問題,可是它可以幫助系統管理員最大限度地利用
現有的資源。並非全部的程序都適用於集羣系統,可是常見的系統應用如HTTP服務,
FTP服務,數據庫服務均可以利用集羣系統來加強它們的功能。
五 集羣的架構
1.前端的負載均衡層(locad balancer)
2.間層服務器羣組層(server array)
3.底端數據共享存儲層(share storage)
在用戶看來,整個集羣系統的全部內部應用結構都是透明的,最終用戶只是在使用一個虛擬服務器提供的高性能服務
六linux集羣的優點和劣勢
集羣技術的優點(一)
1. 低成
2. 高可用
3. 高擴展
4. 高資源利用率
集羣技術相對傳統的大型機技術具備低成本的優點,購買與維護一個大型機的費用每每數倍於一個相同性能的集羣系統。
經過高可用集羣,咱們能夠構建可用度達到99.999%的高可用服務,也就是在極端環境下,正常配置的高用服務可能達到每一年DownTime不超過6分鐘。
因爲集羣系統由多臺計算機構成,通常狀況況下咱們能夠在不影響系統現有服務的狀況下對系統進行擴充、升級、或是進行各類維護操做。同時其它擴展技術,一般僅僅支持幾十個CPU的擴展,擴展能力有限。而採起集羣技術的集羣實體則能夠擴展成百上千的服務節點,每一個服務節點有能夠擴展多個CPU,其擴展能力有明顯優點。
在大型企業中常常會有大批的機器被淘汰,利用集羣系統,咱們能夠將老舊的計算機鏈接在一塊兒並行運作以提供高性能的服務。
Linux集羣的優點(二)
1. 穩定
2. 高性能
3. 兼容UNIX系統
4. 開源的發展模式
5. 兼容多種硬件平臺
6. 利於分發的純文本配置文件
7. 方便快捷的文本化管理界面
Linux是目前兼容硬件平臺及各類文件系統最爲完備的操做系統,良好的軟硬件兼容性保證了LINUX系統可以適用於異構集羣,同時開放源碼的發展模式也保證了現有的集羣軟件可以方便地遷移至LINUX下運行。LINUX強大的終端管理能力及純文本配置方式使得大規模的集羣系統更加易於管理、配置。
LINUX系統的度可配置性能夠保證系統可以爲各類應用提供最大限度的優化能力,同時亦可保證整個系統的穩定性。對UNIX系統的兼容使得目前基於UNIX的集羣系統能夠在很小的修改下就可以成功運行於LINUX。
Linux 集羣的劣勢(三)
1. Linux 集羣系統多爲文本控制方式,使用複雜。
2. Linux集羣軟件大多基於GPL協議,用戶擔憂沒法獲得完備的商業支持
3. Linux集羣的相關人才稀少,培訓成本大
Linux系統的開發起源於1992年,比起歷史攸久的UNIX系統或WINDOWS系統來講,在專業人員中的承認程度及瞭解程度還很不足。在GPL協議下發行的Linux除特定廠商外,其它發行版不能提供完整的商業支持,基於Linux集羣解決方案每每基於系統管理員對LINUX系統的認知程度
七Linux集羣目前活躍的解決套件
1. 高可用性集羣(HA)
○ RedHat Cluster Suite(RHCS)
○ Linux-HA(Heartbeat)
○ Keeplived
2. 負載均衡集羣(LB)
○ Linux Virtual Server(LVS)
○ haproxy
○ nginx
3. 分佈式高性能計算(DC)
○ OpenMosix
○ OpenSSI
4. 並行式高性能計算(PC)
○ Beowulf
RHCS是由RedHat的集羣套件系統,除了完成高可用性功能以外,它還具有負載均衡功能。
Heartbeat是一個免費的開放源代碼的高可用集羣系統,目前已經被Novell(SuSE Linux)、Mandriva Linux、 Debian GNU/Linux、Ubuntu Linux等普遍使用,基於心跳檢測。
Keepalived是一個基於實現lvs高可用開發擴展的程序,目的是提供高可用,基於vrrp路由檢測。
LVS是Linux Virtual Server(linux虛擬服務器),採用基於ip的四層負載均衡,有多種調度算法。
haproxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持4-7層的負載均衡,同時支持虛擬主機, 國內大型網站均有使用,提供多種調度算法。
Nginx是一個web服務器,工做於tcp七層,具備靈活的配置功能,通常用於流量不是很大的場合。
高性能計算集羣系統主要用於大規模科學計算環境,在企業中應用較少,搭建高性能計算集羣每每會針對具體計算內容專門設計系統結構及應用軟件。
雖然擁有很大的 Linux 集羣用戶基礎,openMosix 項目仍被關閉。主要的開發者已經離開,他們缺少繼續下去的促動或者說能獲得什麼的回報。其官方聲稱多核 CPU 使得集羣是多餘的,夾雜在很是不可能和徹底的不合理之中。從技術的角度看,開源的 bproc (the Beowulf process migration module/Beowulf 進程遷移模塊) 是陳舊的,除非你是一個研究者,不然MOSIX 是很是可貴得到的,而 kerrighed 還是不成熟的。從用戶的角度看,openMosix 是開源集羣世界中迄今爲止最好的管理工具,可是它已經成爲過去時了!