lvs的排程演算法有幾種 LVS

2021-10-14 13:17:01 字數 3811 閱讀 1606

lvs是linux virtual server的簡寫,意即linux虛擬伺服器,是乙個虛擬的伺服器集群系統,使用負載均衡技術將多台伺服器組成乙個虛擬伺服器。它為適應快速增長的網路訪問需求提供了乙個負載能力易於擴充套件,而**低廉的解決方案。

internet的快速增長使多**網路伺服器面對的訪問數量快速增加,伺服器需要具備提供大量併發訪問服務的能力,因此對於大負載的伺服器來講, cpu、i/o處理能力很快會成為瓶頸。由於單台伺服器的效能總是有限的,簡單的提高硬體效能並不能真正解決這個問題。為此,必須採用多伺服器和負載均衡技術才能滿足大量併發訪問的需要。

針對高可伸縮、高可用網路服務的需求,我們給出了基於ip層和基於內容請求分發的負載平衡排程解決方法,並在linux核心中實現了這些方法,將一組伺服器構成乙個實現可伸縮的、高可用網路服務的虛擬伺服器。

​ 虛擬伺服器的體系結構如下圖所示,一組伺服器通過高速的區域網或者地理分布的廣域網相互連線,在它們的前端有乙個負載排程器(load balancer)。負載排程器能無縫地將網路請求排程到真實伺服器上,從而使得伺服器集群的結構對客戶是透明的,客戶訪問集群系統提供的網路服務就像訪問一台高效能、高可用的伺服器一樣。客戶程式不受伺服器集群的影響不需作任何修改。系統的伸縮性通過在服務機群中透明地加入和刪除乙個節點來達到,通過檢測節點或服務程序故障和正確地重置系統達到高可用性。由於我們的負載排程技術是在linux核心中實現的,我們稱之為linux虛擬伺服器(linux virtual server)

nat模型

原理圖簡述:

1.客戶端請求資料,目標ip為vip

2.請求資料到達lb負載均衡伺服器(以下簡稱lb),lb根據排程演算法將目的位址修改為rip位址及對應埠(此rip位址是根據排程演算法得出的)並在連線hash表中記錄下這個連線。

3.資料報從lb伺服器到達rs伺服器rs3

4.然後rs3進行響應。rs3的閘道器必須是lb的內網ip也就是dip,然後將資料返回給lb伺服器。

5.lb收到rs的返回後的資料,根據連線hash表修改源位址vip&目標位址cip,及對應埠80.然後資料就從lb出發到達客戶端。

6.客戶端收到的就只能看到vipcip資訊。

nat模式總結:

2. 只需要在lb上配置乙個公網ip位址就可以了。

3. 每台內部的節點伺服器的閘道器位址必須是排程器lb的內網位址。

4. nat模式支援對ip位址和埠進行轉換。即使用者請求的埠和真實伺服器的埠可以不一致。

原理圖簡述:

客戶請求資料報,目標位址vip傳送到lb上。

lb接收到客戶請求包,進行ip tunnel封裝。即在原有的包頭加上ip tunnel的包頭。然後傳送出去。

rs節點伺服器根據ip tunnel包頭資訊(此時就又一種邏輯上的**隧道,只有lb和rs之間懂)收到請求包,然後解開ip tunnel包頭資訊,得到客戶的請求包並進行響應處理。

響應處理完畢之後,rs伺服器使用自己的出公網的線路,將這個響應資料報傳送給客戶端。源ip位址還是vip位址。

客戶端收到資料

原理圖簡述

dr模式將報文直接路由給目標lb負載均衡伺服器。

lb負載均衡伺服器根據各個真實伺服器的負載情況,連線數多少等,動態地選擇一台伺服器,不修改目標ip位址和目標埠,也不封裝ip報文,而是將請求報文的資料幀的目標mac位址改為真實伺服器的mac位址。

然後真實伺服器做成請求響應,之後根據自己的路由資訊將這個響應資料報傳送回給客戶,並且源ip位址還是vip。

靜態演算法

(1) .rr:輪叫排程(round robin)  排程器通過」輪叫」排程演算法將外部請求按順序輪流分配到集群中的真實伺服器上,它均等地對待每一台伺服器,而不管伺服器上實際的連線數和系統負載。

(2) .wrr:加權輪叫(weight rr)  排程器通過「加權輪叫」排程演算法根據真實伺服器的不同處理能力來排程訪問請求。這樣可以保證處理能力強的伺服器處理更多的訪問流量。排程器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。

(3) .dh:目標位址雜湊排程(destination hash )  根據請求的目標ip位址,作為雜湊鍵(hashkey)從靜態分配的雜湊表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。

(4) .sh:源位址 hash(source hash)  源位址雜湊」排程演算法根據請求的源ip位址,作為雜湊鍵(hashkey)從靜態分配的雜湊表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。

動態演算法

①.lc:最少鏈結(least connections)  排程器通過」最少連線」排程演算法動態地將網路請求排程到已建立的鏈結數最少的伺服器上。如果集群系統的真實伺服器具有相近的系統效能,採用」最小連線」排程演算法可以較好地均衡負載。

②.wlc:加權最少連線(預設採用的就是這種)(weighted least connections)  在集群系統中的伺服器效能差異較大的情況下,排程器採用「加權最少鏈結」排程演算法優化負載均衡效能,具有較高權值的伺服器將承受較大比例的活動連線負載。排程器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。

③.sed:最短延遲排程(shortest expected delay )  在wlc基礎上改進,overhead = (active+1)*256/加權,不再考慮非活動狀態,把當前處於活動狀態的數目+1來實現,數目最小的,接受下次請求,+1的目的是為了考慮加權的時候,非活動連線過多缺陷:當許可權過大的時候,會倒置空閒伺服器一直處於無連線狀態。

④.nq永不排隊/最少佇列排程(never queue scheduling nq)  無需佇列。如果有台 realserver的連線數=0就直接分配過去,不需要再進行sed運算,保證不會有乙個主機很空間。在sed基礎上無論+幾,第二次一定給下乙個,保證不會有乙個主機不會很空閒著,不考慮非活動連線,才用nq,sed要考慮活動狀態連線,對於dns的udp不需要考慮非活動連線,而httpd的處於保持狀態的服務就需要考慮非活動連線給伺服器的壓力。

⑤.lblc:基於區域性性的最少鏈結(locality-based least connections)  基於區域性性的最少鏈結」排程演算法是針對目標ip位址的負載均衡,目前主要用於cache集群系統。該演算法根據請求的目標ip位址找出該目標ip位址最近使用的伺服器,若該伺服器是可用的且沒有超載,將請求傳送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處於一半的工作負載,則用「最少鏈結」的原則選出乙個可用的伺服器,將請求傳送到該伺服器。

⑥. lblcr:帶複製的基於區域性性最少連線(locality-based least connections with replication)  帶複製的基於區域性性最少鏈結」排程演算法也是針對目標ip位址的負載均衡,目前主要用於cache集群系統。它與lblc演算法的不同之處是它要維護從乙個目標ip位址到一組伺服器的對映,而lblc演算法維護從乙個目標ip位址到一台伺服器的對映。該演算法根據請求的目標ip位址找出該目標ip位址對應的伺服器組,按」最小連線」原則從伺服器組中選出一台伺服器,若伺服器沒有超載,將請求傳送到該伺服器;若伺服器超載,則按「最小連線」原則從這個集群中選出一台伺服器,將該伺服器加入到伺服器組中,將請求傳送到該伺服器。同時,當該伺服器組有一段時間沒有被修改,將最忙的伺服器從伺服器組中刪除,以降低複製的程度。

LVS排程演算法

演算法 說明 rr 輪詢排程 round robin 它將請求一次分配不同的 rs,也就是在rs中均攤請求,演算法簡單,但是只適合於rs處理效能相差不大的情況 多個伺服器硬體配置差不多 wrr加權輪詢排程 weighted round robin 它根據rs不同的權值分配任務,權值高的rs優先獲得請...

LVS 排程演算法

排程器通過 輪叫 排程演算法將外部請求按順序輪流分配到集群中的真實伺服器上,它均等地對待每一台伺服器,而不管伺服器上實際的連線數和系統負載。排程器通過 加權輪叫 排程演算法根據真實伺服器的不同處理能力來排程訪問請求。這樣可以保證處理能力強的伺服器能處理更多的訪問流量。排程器可以自動問詢真實伺服器的負...

LVS 排程演算法

負載均衡排程演算法 1 輪詢 round robin 簡稱 rr 將客戶端請求平均分發到real server 2加權輪詢 weighted round robin 簡稱 wrr 根據real server 的效能設定權重,在進行輪詢排程 3最少連線 least connections 簡稱 lc ...