LVS的工作原理和相關算法

首先我們要了解LVS的工作機制:

LVS裏Director本身不響應請求,只是接受轉發請求到後方,Realservers纔是後臺真正響應請求。

LVS 工作原理基本類似DNAT,又不完全相像,它是一種四層交換,默認情況下來通過用戶請求的的地址和端口,來判斷用戶的請求,從而轉發到後臺真正提供服務的主機,而判斷這種請求的是通過套接字來實現,所以四層就可以實現。而且這個轉發的過程對用戶而言是透明的(簡單的講,就是用戶訪問的是DR的IP,而DR轉發給RSS,而用戶不知道這個過程)

LVS的工作模式:

1.DNAT

2.直接路由

3.隧道

提供的優點:

1.高併發

2.高冗餘

3.適用性,擴展服務器,縮減服務器,方便服務器擴展和收縮

LVS 的IP地址類型

1.VIP:虛擬IP地址,並不提供服務,而是將用戶的請求轉發到後方

2 RIP:真正IP地址,客戶端真正提供服務的IP地址

3.DIP:調度IP地址,通常是和RIP相連的LVS的IP地址

4.CIP:客戶端IP地址,用戶請求時,用戶的IP

流程:如下圖

clip_p_w_picpath002

===============================分 割 線==============================

LVS集羣的類型:

1.LVS-NAT DNAT

2.LVS-DR 直接路由

3.LVS-TUN 隧道

 

下面我們詳細說明這三種類型:

 

LVS-NAT模型原理

clip_p_w_picpath004

用戶的請求和響應都需要經過Director

源地址,目標地址都需要經過轉換,而目標地址轉換是透明的

這種架構的擴展有限調度器,Director將處理所有的請求,壓力比較大,擴展到10個結點就不行了

 

要求:

1.集羣節點必須在同一個物理網絡中,同一個子網或者VLAN

2.DIP和RIP只能在同一個網絡(子網)中,不能跨越網段

3.RIP地址通常是私有地址

4.所有的RIP,必須以DIP爲網關(地址轉換)

5.NAT的地址可以做端口轉換(比如80--à8080)

6.任何操作系統都可以做RIP

7.Director有可能成爲整個系統的瓶頸

clip_p_w_picpath006

數據傳輸:

通過二層(數據鏈路層)轉發(ARP)將DR的MAC地址轉換成RIP的MAC地址(不是轉變,而是轉發),這樣就實現了數據的傳輸,在RSS響應後,再將RSS的MAC地址轉換成RIP的MAC地址。

 

===============================分 割 線==============================

LVS-DR模型原理

clip_p_w_picpath008

用戶的請求必須經過Director,而realserver在響應的使用直接返回請求(圖有問題,有可能設的網關不同,還存在一臺路由器)

需要配置iptables規則,拒絕響應MAC地址轉換,或者通過修改LINUX內核響應

優點:由於它比NAT少了一個地址轉換,響應速度更快

特點

1.必須處於同一個物理網絡中(連在同一個交換機上)

2.RIP可以使用公網地址(建議使用)

3.Director只轉發請求,而realserver直接響應請求而不轉發

4.集羣節點的網關,不能指向DIP

5.不能做端口轉換(不支持)

6.絕大多數的操作系統都可以實現realserver,而realserver需要同一個網卡配置多個Ip地址

7.DR模式的Director比NAT模式能夠帶動更多的節點

clip_p_w_picpath010

數據傳輸:

解決數據進入:

爲了避免RS直接響應,給服務器的lo:0設置VIP地址,給本地網卡設置成CIP,這樣RS就不會直接響應了,隱藏了RS

解決數據出去:

而默認情況下,Linux設置數據包從哪塊網卡出去,源地址設爲該網卡地址,通過添加一條特殊路由信息,如果目標地址是lo的VIP地址,那麼出去的時候源地址設置爲lo的地址。

路由信息的原理:

添加一條主機路由,將VIP的地址自己設置成一個網段,既子網掩碼爲255.255.255.255,這樣VIP出去的時候沒有比VIP更優的了,就成爲最佳IP

 

在互聯網上性能最佳的就是DR應用,但是有一個缺點,必須要求主機間距離比較近(比如一個機房),如果發生天災人禍,集羣就完了,所以我們爲了實現異地分佈,要採用隧道比如***

===============================分 割 線==============================

LVS-TUN模型原理:

虛擬隧道實現:

1.專線(加密)

2.二層:在MAC之外再加一層MAC

3.三層:源IP目標IP之外再加一層IP

隧道目的: 隱藏意圖,通過轉換來(ip套ip)隱藏目的

clip_p_w_picpath012

特徵:

1.集羣節點和Director不必在同一個網絡

2.RIP必須使用公網地址

3.Director只需要處理進來的請求,不需要處理出去的請求

4.響應的請求一定不能經過Direcor.

5.Directory不支持端口映射

6.只能使用那些支持IP 隧道協議的操作系統做realserver

優點:LVS-TUN可以實現基於網絡的集羣,這樣就脫離了LVS-DR的realserver之間的距離限制。

clip_p_w_picpath014

===============================分 割 線==============================

LVS的負載均衡要依賴算法(Scheduling methods :調度方法)來實現,根據特點它們分爲如下兩類:

1.fiexd scheduling 靜態(固定)

2.dnamic scheduling 動態

 

FIEXD SCHEDULING靜態算法

 

特點:不考慮後端realserver的連接狀態,而動態的要考慮後端的鏈接數爲標準

1. Round-robin (RR) 輪詢

既第一次訪問A,第二次訪問B,第三次再訪問A…..循環下去

 

2. Weighted Round-Robin WRR

加強論調:提高後臺服務器的響應能力

根據後方服務器的響應能力,來定義權重,根據權重來轉發請求,權重大的優先訪問

 

3.Destination hashing DH

目的:實現針對目標地址的請求做固定轉發

將來自同一個用戶的特定請求轉發到固定的指定的主機(比如提供web服務),以提高緩存(網頁文件緩存)利用率(命中率)。

clip_p_w_picpath016

4.Souce hashing SH

目的:將來自同一個用戶的地址,始終轉發到router或者firewall

應用場景:

clip_p_w_picpath018

將用戶的請求按照平均指定到不同的防火牆,實現平均內網負載,通過特定防火牆(網關)出去(上網)

靜態算法的缺陷:不考慮後臺real-server的負載,連接狀態

 

動態算法:Dynamic Scheduling Mehtod

這裏有兩個概念:

活動連接:後臺real-server當前處於活動狀態(active)和ESTABLISHED state(想關聯)的連接,像ssh,或者telnet會一直處於活動狀態。

非活動連接:非活動的狀態(inactive)或者非FIN的數據包,比如httpd(未開啓keepalive), 而httpd除非啓用keepalive, 發送完成後直接斷開,處於inactive的狀態

 

相關動態算法

1. LC least-connection 最少連接

LC同時檢查一臺主機上的活動連接數和非活動連接數,連接數最少(活動狀態的連接數少)的將會接受下一個連接請求。

LC同時考察活動連接和非活動連接,它用活動連接*256+非活動連接作爲 overhead 通overhead誰的小,轉發給誰

但是非活動鏈接也會影響連接,當活動連接的比數比較大的時候,會影響結果

2.WLC Weighted Least-Connection 加權最少連接數

加權按照機器的性能劃分。Overhead/加權請求要轉發給小得那個

加權算法,是集羣應用上的最好的算法之一,比較公平

 

2. SED Shortest Expected Delay 最短延遲

在WLC基礎上改進

Overhead = (ACTIVE+1)*256/加權

不再考慮非活動狀態,把當前處於活動狀態的數目+1來實現,數目最小的,接受下次請求

+1的目的是爲了考慮加權的時候,非活動連接過多

缺陷:當權限過大的時候,會倒置空閒服務器一直處於無連接狀態

 

3.NQ算法永不排隊

保證不會有一個主機很空間。SED基礎上無論+幾,第二次一定給下一個,保證不會有一個主機不會很空閒

不考慮非活動連接,才用NQ,SED要考慮活動狀態連接

對於DNS的UDP不需要考慮非活動連接,而httpd的處於保持狀態的服務就需要考慮非活動連接給服務器的壓力

 

 

4.LBLC 基於本地的最少連接算法

和DH的區別:考慮後臺的負載能力和連接情況

支持權重,它在WLC基礎上改進

 

5.LBLCR 基於本地的帶複製的最少連接數

是對LBLC的一個改進,能夠在LBLC的基礎上實現負載均衡

判斷後端,到底誰的連接少,當A的連接很多,而B的很空閒,會將A的部分連接分配到B上(打破原有規則,避免大範圍的不公平)

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