LVS的工作原理和相關演算法

來源:互聯網
上載者:User

 

 

首先我們要瞭解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

 

流程:如

 

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

LVS叢集的類型:

1.LVS-NAT    DNAT

2.LVS-DR      直接路由

3.LVS-TUN     隧道

 

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

 

LVS-NAT模型原理 

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

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

 

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

 

要求:

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

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

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

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

5.NAT的地址可以做連接埠轉換(比如80--à8080)

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

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

 

 

 

資料轉送:

通過二層(資料連結層)轉寄(ARP)將DR的MAC地址轉換成RIP的MAC地址(不是轉變,而是轉寄),這樣就實現了資料的傳輸,在RSS響應後,再將RSS的MAC地址轉換成RIP的MAC地址。

 

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

 

LVS-DR模型原理

 

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

 

 

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

 

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

 

特點

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

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

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

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

5.不能做連接埠轉換(不支援)

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

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

資料轉送:

解決資料進入:

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

解決資料出去:

而預設情況下,Linux設定資料包從哪塊網卡出去,源地址設為該網卡地址,通過添加一條特殊路由資訊,如果目標地址是lo的VIP地址,那麼出去的時候源地址設定為lo的地址。

路由資訊的原理:

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

 

 

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

 

 

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

LVS-TUN模型原理:

 

虛擬隧道實現:

1.專線(加密)

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

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

 

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

 

特徵:

1.叢集節點和Director不必在同一個網路

2.RIP必須使用公網地址

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

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

5.Directory不支援連接埠映射

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

 

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

 

 

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

 

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

1.fiexd scheduling      靜態(固定)

2.dnamic scheduling    動態

 

 

FIEXDSCHEDULING靜態演算法

 

特點:不考慮後端realserver的串連狀態,而動態要考慮後端的連結數為標準

1.      Round-robin (RR)   輪詢

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

 

2.      Weighted Round-Robin   WRR

加強論調:提高後台伺服器的響應能力

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

 

3.Destination hashing  DH

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

將來自同一個使用者的特定請求轉寄到固定的指定的主機(比如提供web服務),以提高緩衝(網頁檔案快取)利用率(命中率)。

 

4.Souce hashing   SH

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

應用情境:

 

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

 

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

 

 

 

動態演算法:DynamicScheduling Mehtod

這裡有兩個概念:

活動串連:後台real-server當前處於活動狀態(active)和ESTABLISHEDstate(想關聯)的串連,像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的目的是為了考慮加權的時候,非活動串連過多

 

缺陷:當許可權過大的時候,會倒置空閑伺服器一直處於無串連狀態

 

NQ演算法永不排隊

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

 

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

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

 

 

LBLC   基於本地的最少串連演算法

和DH的區別:考慮背景負載能力和串連情況

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

 

 

LBLCR  基於本地的帶複製的最少串連數

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

 

 

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

 

 

 

 

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.