天天看點

伺服器叢集

一:叢集概念: 

1. 兩大關鍵特性 

叢集是一組協同工作的服務實體,用以提供比單一服務實體更具擴充性與可用性的服務平台。在用戶端看來,一個叢集就象是一個服務實體,但事實上叢集由一組服務實體組成。與單一服務實體相比較,叢集提供了以下兩個關鍵特性: 

可擴充性--叢集的性能不限于單一的服務實體,新的服務實體可以動态地加入到叢集,進而增強叢集的性能。 

高可用性--在叢集中,同樣的服務可以由多個服務實體提供。如果一個服務實體失敗了,另一個服務實體會接管失敗的服務實體。叢集提供的從一個出錯的服務實體恢複到另一個服務實體的功能增強了應用的可用性。

在是以叢集種類中,在Linux上面實作叢集的種類是最為廣泛的。幾乎所有的叢集種類都可以在它上面實作。下面就列舉一下在Linux上面實作的叢集技術。

二:叢集分類: 

Linux叢集主要分成三大類: 

負載均衡叢集(Load Balance Cluster) 

高可用叢集( High Availability Cluster)

高性能叢集(High Perfermance)

具體差別如下: 

負載均衡叢集(Load Balance Cluster)   簡稱:LB                               

當伺服器接受大容量的并發請求時,通過分發器講通路請求分攤給背景的伺服器叢集節點,這樣就可以緩解單個伺服器的通路壓力。常用在網頁伺服器。背景的伺服器是處于同等位置上的,各成員伺服器不檢測相鄰接點的狀态。此時的瓶頸就是分發器。如果分發器當機,用戶端就通路不到背景所有的伺服器。容易造成單點故障。

一般應用與大型網絡公司的門戶網站等非互動式伺服器。

高可用叢集( High Availability Cluster) 簡稱:HA                                      

保證伺服器的服務不中斷,可以持續接受通路。當一台伺服器突然當機時,另外一台伺服器立即接管所有服務,響應用戶端的資料請求。

常見的叢集是由2個節點做成的高可用叢集。這兩台伺服器之間有主次關系,備用分發器會時時監聽主分發器的心跳資訊heart-beat(即每隔一段時間向主分發器發送詢問資訊,探測主分發器是否線上)。如果發生資源争用brain-split(主分發器忙于轉發用戶端的資訊而來不及回應備用分發器,那麼備用分發器就會認為主分發器已經當機,下一步就是接管主分發器的所有轉發任務)。此時,主分發器就會通過啟動stonith裝置,來關閉備用分發器。

高性能叢集 (High Perfermance):簡稱HP

也可稱為科學計算叢集。這類叢集緻力于提供單個計算機所不能提供的強大的計算能力。 

讓多台計算機結合起來共同個完成某個大型的資料計算。例如,模拟核爆炸的實驗。

大緻過稱是通過分發器将一個大的科學計算任務劃分成片,然後分發給背景的每個伺服器,當背景的資料計算任務完成後,分發器就會将這些資料收集合并到一起。

LB的一個經典類型就是LVS。基于linux基礎搭建的負載均衡叢集就叫做linux虛拟服務(Linux Virtual Server)。

LVS是由ipvs和ipvsadm構成的。(ipvs是由中國的章文嵩在1998年開發出來的,起初是作為一個子產品來被linux使用。自Redhatlinux核心版本2.4.23以後,被編譯進核心并随之被廣泛使用)

LVS中的IP位址命名規則:

VIP(Virtual IP)别名位址,伺服器提供服務的Ip位址

DIP(Director’s IP)給背景RealServer通信的IP位址

CIP(Client’s IP)用戶端IP位址

RIP(RealServer’s IP)背景RealServer的IP位址

<a href="http://linuxtro.blog.51cto.com/attachment/201003/16/1239505_126872371662AE.jpg"></a>

根據LVS的轉發方式,可以分為以下三種常見類型:

LVS-NAT

LVS-DR 在企業中應用比較廣泛;

LVS-TUN

LVS-NAT的基本屬性為:

<a href="http://linuxtro.blog.51cto.com/attachment/201003/16/1239505_1268723717hAZx.jpg"></a>

1、所有RealServer必須在同一網段内;

2、RealServer主機的伺服器IP必須為私有IP;

3、Director負責排程用戶端與RealServer之間的所有程序;

4、RealServer把DIP作為預設網關;

5、Director可以做端口映射;

6、RealServer可以由任何作業系統來充當;

7、Director有可能成為單點故障;

LVS-DR的基本屬性為:

<a href="http://linuxtro.blog.51cto.com/attachment/201003/16/1239505_12687237198USb.jpg"></a>

1、 所有RealServer伺服器必須在同一網段;

2、 RIP不必要是私有位址;

3、 Director隻排程進入叢集的資料連結,不調用出去叢集的資料連結;

4、 RealServer的網關不指向DIP位址;

5、 Director不能做端口映射;

6、 大多數作業系統(一塊網卡支援多個IP位址)可以做RealServer;

LVS-TUN的基本屬性為:

<a href="http://linuxtro.blog.51cto.com/attachment/201003/16/1239505_1268723721WQnF.jpg"></a>

1、 RIP與DIP不必要在同一個網絡内;

2、 RIP為公網位址;

6、 僅支援IP隧道的作業系統才可以作為RealServer;

7、 允許異地提供服務;

排程算法:

排程算法(schedule methods)分為靜态(Fixed schedule)和動态(Dynamic schedule)兩種。

靜态排程算法(Fixed schedule)包括:

1、輪叫算法(Round-Robin): 簡稱RR

當用戶端請求資料進來時,Director直接按順序将請求配置設定給背景伺服器節點。這種情況并沒有考慮各個伺服器節點之間性能的優劣。

2、權重輪叫算法(Weighted Round-Robert):簡稱WRR

當請求資料進來時,Director會根據各伺服器節點之間的權重不同而将通路請求不均等配置設定給背景伺服器。

3、目标位址雜湊演算法(Diestination Hashing):簡稱DH

隻要資料來源請求來源是同一個IP,則Director将配置設定給背景同一個RealServer。其缺陷是當同一IP(用戶端IP是由NAT轉發而來)發出大量通路時,可能會導緻背景某個RealServer非常繁忙,而其他RealServer卻無事可做的局面,這顯然不是我們想看到的結果。

4、源位址雜湊演算法(Source hashing):簡稱SH

此時叢集出口處至少有兩台防火牆,資料通路來源由這個防火牆進入,就必須有這個防火牆出去,這種固定來源位址進出叢集的算法就是源位址雜湊演算法。常應用于防火牆連結追蹤。

動态排程算法(Dynamic schedule):

應用動态排程算法時,Director要做資料連結追蹤,将連結分為活動連結和非活動連結。(活動連結:tcp連結打開,即鍊路處于ESTABLISHED狀态;非活動連結:當tcp連結斷開或者FIN=0時,LVS繼續保持連結狀态。)然後根據目前RealServer的狀态(即繁忙程度)來進行通路請求的配置設定。

1、最少活動連結算法(Least-connection):簡稱LC

适用于背景各個RealServer的負載相同的情況下,當發生新的資料連結請求時,Director先檢測背景各個RealServer的活動非活動連接配接數,然後通過算法計算得出各個RealServer的負載數,然後将通路請求轉發到負載數小的RealServer上。

求負載數算法公式為:負載數=活動連接配接數X256+非活動連接配接數

2、權重最少活動連結算法(Weight Least-connection):簡稱WLC

适用于背景各個RealServer的負載不同的情況下,當發生新的資料連結請求時,Director先檢測背景各個RealServer的活動非活動連接配接數,然後通過算法計算得出各個RealServer的負載數,然後将通路請求轉發到負載數小的RealServer上。隻是求負載數的算法有所不同。

求負載數算法公式為:負載數=(活動連接配接數X256+非活動連接配接數)/權重

3、最少期望延遲算法(shortest Expected Delay):簡稱SED

不計算非活動連接配接數,隻計算活動連接配接數

4、無隊列算法(Never Queue):簡稱NQ

是對WLC的改進算法。

5、基于局部最少活動連結算法(Locality-Based Least-Connection):簡稱LBLC

根據請求的目标IP位址找出該目标IP位址最近使用的伺服器,若該伺服器是可用的且沒有超載,将請求發送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處于一半的工作負載,則用"最少連結"的原則選出一個可用的伺服器,将請求發送到該伺服器。

6、基于局部最少活動連結複制算法(Locality-Based Least-Connection with Replication

):簡稱WLBLC

當有大量同一目标通路叢集背景同一個RealServer時,會造成此RealServer過于繁忙,如果将多台機器組合在一起作為一個RealServer接受用戶端通路,則會減輕單個RealServer的通路壓力。

常用的定義ipvsadm的文法參數:

--t –tcp-server service-address

--u –udp-server service-aaddress

-f    防火牆标記

-s -schedule-service 啟用的排程算法

-p 設定持久連結的數值,預設為360s

-r –realserver server-address RealServer的IP位址

-g 使用LVS-DR轉發方式,redhat 的預設規則

-i 使用LVS-TUN轉發方式

-m 使用LVS-NAT轉發方式

ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]] [-M netmask] 在核心的虛拟伺服器表中添加一條新的虛拟伺服器記錄,也就是增加一台新的虛拟伺服器||編輯核心虛拟伺服器表中的一條虛拟伺服器記錄

ipvsadm -D -t|u|f virtual-service-address删除核心虛拟伺服器表中的一條虛拟伺服器記錄

ipvsadm -E 修改服務

ipvsadm -C清除核心虛拟伺服器表中的所有記錄

ipvsadm -R恢複虛拟伺服器規則

ipvsadm -S [-n] 儲存虛拟伺服器規則,輸出為-R 選項可讀的格式

ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port[-g|i|m] [-w weight]在核心虛拟伺服器表的一條記錄裡添加一條新的RealServer伺服器記錄,也就是在一個虛拟伺服器中增加一台新的RealServer伺服器||編輯一條虛拟伺服器記錄中的某條RealServer伺服器記錄

ipvsadm -d -t|u|f service-address -r server-address删除一條虛拟伺服器記錄中的某條RealServer記錄

ipvsadm -L|l [options] 顯示核心虛拟伺服器表

ipvsadm -Z [-t|u|f service-address] 虛拟服務表計數器清零(清空目前的連接配接數量等)

ipvsadm --set tcp tcpfin udp設定連接配接逾時值

ipvsadm --start-daemon state [--mcast-interface interface] 啟動同步守護程序

ipvsadm --stop-daemon停止同步守護程序

ipvsadm -h顯示幫助資訊 

-w --weight weight   RealServer伺服器的權值

-c --connection 顯示LVS 目前的連接配接 如:ipvsadm -L -c

--timeout 顯示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout

--daemon 顯示同步守護程序狀态

--status 顯示統計資訊

--rate 顯示速率資訊

--sort 對虛拟伺服器和RealServer伺服器排序輸出

--numeric -n 輸出IP 位址和端口的數字形式 

本文轉自 linuxtro 51CTO部落格,原文連結:http://blog.51cto.com/linuxtro/284318,如需轉載請自行聯系原作者

繼續閱讀