天天看點

LVS 之 叢集概念介紹

1  概述

備注:本文主要結合自己的學習筆記,以及參考部落格 叢集(cluster)原理(轉)整理而成。

叢集(cluster)就是一組計算機,他們作為整體向使用者提供一組網絡資源。這些單個的計算機系統就是叢集的節點(node)。一個理想的叢集是,使用者從不會意識到叢集系統底層的節點,在他/她們看來,叢集是一個系統,而非多個計算機系統。并且叢集系統的管理者可以随意的增加和删除叢集系統的節點。

2  Linux Cluster類型

a)高可用性(High Availability)叢集

HA叢集緻力于提供高度可靠的服務,避免SPOF單點失敗(single Point Of failure)的問題。就是利用叢集系統的容錯性對外提供7*24小時不間斷的服務,如高可用的檔案伺服器、資料庫服務等關鍵應用。

b)負載均衡(Load Balancing)叢集:

使任務可以在叢集中盡可能平均的分攤不同計算機處理,充分利用叢集的處理能力,提高對任務的處理效率。在實際應用中這幾種叢集類型可能混合使用,以提供更高穩定的服務,如在一個使用網絡流量負載均衡的叢集中,就會包含高可用的網絡檔案系統、高可用的網絡服務。

其中負載均衡伺服器的高可用性是指為了屏蔽負載均衡伺服器失效,需要建立一個備份機。主伺服器和備份機上都運作High Availability監控程式,通過傳送諸如“I am alive”這樣的資訊來監控對方的運作狀況。當備份機不能在一定的時間内收到這樣的資訊時,它就接管主伺服器IP并繼續提供服務;當備份管理器又從主管理器收到“I am alive”這樣的資訊時,他就釋放IP位址,這樣的主管理器就開開始再次進行叢集管理的工作了。為在主伺服器失效的情況下系統能正常工作,我們在主、備份機之間實作負載叢集系統配置資訊的同步和備份,保持兩者系統的基本一緻。

.LB Cluster分類

四層:lvs,nginx(stream),haproxy(modetcp)

七層:基于http,如nginx(http),haproxy(mode http), httpd(apache)...

c)性能計算(High Perfervidmance  Computing)叢集

HPC叢集,也稱為計算叢集。在這種叢集運作的是專門開發的并行應用程式,它可以把一個問題的資料分不到多台計算機上,利用這些計算機的共同資源來完成任務,進而可以解決單機不能勝任的工作(如果問題規模太大,單機計算速度太慢)。

這類叢集緻力于提供了單個計算機所不能提供的強大的計算能力。如天氣預報、石油勘探與油藏模拟、分子模拟、生物計算等。

3  叢集的優點

a)高擴充性

b)高可用性HA:叢集中的一個節點失效,它的任務可傳遞給其他節點。可以防止單點失效

c)高性能:負載平衡叢集允許系統同時接入更多的使用者

d)高性能價比:可以采用廉價的複合工業标準的硬體來構造高性能的系統

4 叢集分類

4.1 基于軟硬體分類

.硬體:

F5 Big-IP

Citrix Netscaler

A10 A10

.軟體:

lvs:LinuxVirtual Server,不能識别應用層資料

nginx:支援四層排程,也可以支援7層排程

haproxy:支援四層排程,也支援7層排程

應用層的排程器,需要對發過來的請求進行解開資料包,然後再封裝。有一個問題是,socket一台機器上隻能是65536個,并發請求太多,主機将不能正常提供請求。解決方案是把背景服務拆分開,對服務進行分類。把不同的服務拆開,獨立提供服務

ats:apachetraffic server,yahoo捐助

perlbal:Perl 編寫

pound

4.2  基于工作的協定層次劃分:

.傳輸層(通用):DPORT

    LVS:

    nginx:stream機制

    haproxy:mode tcp機制

實際工作中,生産環境用 nginx  和    haproxy進行排程

.應用層(專用):針對特定協定,自定義的請求模型分類

proxy server:

    http:nginx,httpd, haproxy(mode http), ...

    fastcgi:nginx,httpd, ...

    mysql:mysql-proxy,...

5  叢集相關概念介紹

5.1  HA概念介紹

計算機系統的可用性(availability)是通過系統的可靠性(reliability)和可維護性(maintainability)來度量的。工程上通常采用平均無故障時間(MTBF:MeanTime Between Failure)來度量系統的可靠性,用平均恢複時間(MTTR:MeanTime To Restoration(repair))來度量系統的可維護性。于是可用性定義為:A=MTTF/(MTBF+MTTR)*100%。   可用性百分比範圍是(0,1),如99%,99.5%, 99.9%, 99.99%, 99.999%, 99.9999%。其中99.999%表示一年内允許5分鐘的故障時間

系統故障:

硬體故障:設計缺陷、wear out(損耗)、自然災害……

軟體故障:設計缺陷

5.1.1  HA的容錯備援運作過程

自動偵測(Auto-Detect)階段 由主機上的軟體通過備援偵測線,經由複雜的偵聽程式。邏輯判斷,互相偵測對方運作情況,所檢查的項目有:主機硬體(CPU和周邊)、主機網絡、主機作業系統、資料引擎以及其他應用程式、主機與磁盤陣列連線。為確定偵測的正确性,而防止錯我的判斷,可設定安全偵測時間、包括偵測時間間隔、偵測次數以調整安全系數,并且由主機的備援通信連線,将所彙集的訊息記錄下來,以供維護參考。

自動切換(Auto-Switch)階段 某一主機如果确認對方故障,則正常主機繼續進行原來的任務,還将依據各種容錯備援模式接管預先設定的備援作業程式,并進行後續的程式以及服務。

自動恢複(Auto-Recovery)階段  在正常主機代替故障機工作後,故障機可離線進行修複工作。在故障主機修複後,通過備援通訊線與原來主機連線,自動切換回修複完成的主機上。整個回複過程完成有EDI-HA自動完成,亦可依靠預先配置,選擇回複動作為半自動或不回複。

5.1.2 HA三種工作方式

a) 主從方式(非對稱方式)

工作原理:主機工作,備機處于監控狀況;當主機當機時,備機接管主機的一切工作,待主機恢複正常後,按使用者的設定以自動或手動方式将服務切換到主機上運作,資料的一緻性通過共享存儲系統解決。

b) 雙機雙工方式(互備互援)

工作原理:兩台主機同時運作各自的服務工作且互相檢測情況,當任一台主機當機時,另一台主機立即接管它的一切工作,保證工作實時,應用服務系統的關鍵資料存放在共享存儲系統中。

c) 叢集工作方式(多伺服器互備方式)

工作原理:多台主機一起工作,各自運作一個或幾個服務,各為服務定義一個或多個備用主機,當某個主機故障時,運作在其上的服務就可以被其它主機接管。

5.1.4  HA叢集實作方案

keepalived: vrrp協定,和lvs配合使用。keepalive實作高可用,lvs實作排程。

ais:應用接口規範

heartbeat

cman+rgmanager(RHCS)

coresync_pacemaker

5.2  會話保持:負載均衡(LB)

(1) session sticky:同一使用者排程固定伺服器

Source IP:LVS sh算法(對某一特定服務而言)

注意,基于源位址排程不太靠譜,因為可能IP經過NAT轉換,該源IP後端可能有很多機器發起請求,如果将這些請求都集中排程到

同一台機器,可能會會後端該伺服器造成較大的負擔

Cookie:伺服器分發給用戶端的

cookie用來表示用戶端的身份的。早期用重cookie,包含了所有的資訊。

後來用輕cookie,主要有session的id.session是在伺服器端的。

根據cookie的資訊來決定分發給哪台機器上。cookie屬于應用層的資料。是以要使用應用層的排程器,如Ngnix或haproxy

(2) session replication:每台伺服器擁有全部session,如session multicastcluster

(3) session server:專門的session伺服器,如Memcached,Redis

6  高可用的實作

有如下6種方法實作高可用

1)共享存儲(shared storage)

NAS:網絡附屬存儲(NetworkAttached Storage),檔案共享伺服器

SAN:存儲區域網絡,(Storage Area Network),塊級别的共享

2)網絡分區  (Networkpartition)

有以下兩個方式:

a) 法定人數(quorum):

with quorum:> total/2

without quorum: <= total/2

b)隔離裝置:fence,有兩種手段

當監測到有裝置異常是,可以通過以下兩個方法隔離異常裝置

斷電重新開機:STONITH = ShootingThe Other Node In The Head,

隔離資源:斷開存儲的連接配接

 3)雙節點叢集(TWO nodes Cluster)

4)Failover:故障切換,即某資源的主節點故障時,将資源轉移至其它節點的操作

5)Failback:故障移回,即某資源的主節點故障後重新修改上線後,将之前已轉移至其它節點的資源重新切回的過程

6)HACluster實作方案:

有以下兩個方案:

vrrp協定的實作:輕量級解決方案,如keepalived

ais:重量級的解決方案,應用接口規範完備HA叢集,邏輯比較複雜。有三個解決方案

RHCS:Red Hat Cluster Suite紅帽叢集套件,完整解決方案