Lvs 調度算法

lvs scheduler:僅根據IP和端口進行調度

靜態方法:僅根據算法自己進行調度,不考慮當前服務器實際負載狀況;保證起點公平web

RR:round robin, 輪調,輪詢,輪叫:算法

    調度器經過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而無論服務器上實際的鏈接數和系統負載。後端

WRR:weighted rr, 加權輪詢;緩存

    調度器經過"加權輪叫"調度算法根據真實服務器的不一樣處理能力來調度訪問請求。這樣能夠保證處理能力強的服務器處理更多的訪問流量。調度器能夠自動問詢真實服      務器的負載狀況,並動態地調整其權值。服務器

SH:source ip hash, 源地址哈希;未來自於同一個IP的請求始終調度至同一個RS。網絡

    (由於IP-VS在本地會維護一個哈希表,這張表把每個請求的源地址K被調度到哪個real server V,都會記錄下來。表中的每一個K-V有可能還會有一個計時器,SH       實現session保持的機制,會損害負載均衡的效果,由於它會未來自同一個地址的請求將始終被調度至同一個real server)session

    源地址散列"調度算法根據請求的源IP地址,做爲散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,      不然返回空。負載均衡

DH:desination ip hash, 目標地址哈希;對同一個目標的請求始終發往同一個RS性能

    根據請求的目標IP地址,做爲散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。優化

    正向web代理,負載均衡內網用戶對互聯網的請求;

Client --> Director --> Web Cache Server(正向代理)

 

動態方法:根據算法及各RS當前的負載狀態進行評估;保證結果公平

挑選後端real server是有挑選方式是有計算機制的,首先要把各real server的當前負載狀況記錄下來,

計算當前主機的負載方式:  Overhead=       

RS權重爲0時,表示RS不可用  

把全部權重加起來,權重之和是總體權重基數,每一個服務器的權重比上這個權重之和,獲得的比例大概就是調度這個服務器與整個集羣所接受的全部全部請求的比例。

LC:最少連接(Least Connections)
   調度器經過"最少鏈接"調度算法動態地將網絡請求調度到已創建的連接數最少的服務器上。若是集羣系統的真實服務器具備相近的系統性能,採用"最小鏈接"調度算法能夠較好地均衡      負載。

Overhead=Active*256+Inactive      活動鏈接數*256+非活動連接數

Active:每個服務器當前主機活動連接的數量;

Inactive:非活動鏈接數量

256:相比較於非活動(Inactive)連接的數量,活動連接將會佔據更多的資源,因此權重比較大

RS1: 10, 100

RS2: 20, 10

WLC: weighted LC   加權最少鏈接(默認採用的就是這種)(Weighted Least Connections)

在集羣系統中的服務器性能差別較大的狀況下,調度器採用"加權最少連接"調度算法優化負載均衡性能,具備較高權值的服務器將承受較大比例的活動鏈接負載。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。

Overhead=(Active*256+Inactive)/weight

RS1: 10, 100, 1

RS2: 20, 10, 3

缺陷是:當前10個主機,都沒有響應報文,假如能力最小的排最前面,來了一個請求,那麼只能第一個主機響應,因此響應的最慢,然後面響應快的主機卻在空閒。

SED:Shortest Expection Delay  最短延遲調度/最短時間望延遲

在WLC基礎上改進,Overhead=(ACTIVE+1)*256/weight,再也不考慮非活動狀態,把當前處於活動狀態的數目+1來實現,數目最小的,接受下次請求,+1的目的是爲了考慮加權的時候,非活動鏈接過多缺陷:當權限過大的時候,會致使空閒服務器一直處於無鏈接狀態。

Overhead=(Active+1)*256/weight

剛開始每臺主機的活動連接數都爲0,利用SED調度算法後,這裏先不乘以256,由於不考慮非活動連接,就沒有必要考慮非活動鏈接數

第一臺主機的Overhead=(0+1)/1=1

第二臺主機的Overhead=(0+1)/2=1/2

第三臺主機的Overhead=(0+1)/3=1/3

第四臺主機的Overhead=(0+1)/4=1/4

第五臺主機的Overhead=(0+1)/5=1/5

按照上述計算後,第五臺連接數最少,權重最大,因此直接挑選第五臺響應請求,這就最大限度利用了資源

缺點:總共兩臺服務器,第一臺權重爲1,第二臺權重爲4,那麼前三個請求會所有分給第二臺

RS1: 0, 1

RS2: 0, 9

NQ: Nerver Queue永不排隊

SED算法的改進;(首先挑選一個主機分配一個請求,而後挑選下一個主機分配請求,直到把全部主機輪詢一遍以後,再根據SED算法進行分配)  

無需隊列。若是有臺realserver的鏈接數=0就直接分配過去,不須要再進行sed運算,保證不會有一個主機很空閒。在SED基礎上不管+幾,第二次必定給下一個,保證不會有一個主機很空閒,不考慮非活動鏈接,才用NQ,SED要考慮活動狀態鏈接,對於DNS的UDP不須要考慮非活動鏈接,而httpd的處於保持狀態的服務就須要考慮非活動鏈接給服務器的壓力。

LBLC:Locality-Based LC 基於局部/本地的最少連接(locality-Based Least Connections)

即爲動態的DH算法;用到場景:只有在實現正向代理,代理本地大量客戶端訪問互聯網時,用到緩存時纔有用

正向代理情形下的cache server調度

Client --> Director --> Web Cache Server(正向代理)

基於局部性/本地的"最少連接調度算法"是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工做負載,則用"最少連接"的原則選出一個可用的服務器,將請求發送到該服務器。

 

LBLCR:LBLC with Replication,帶複製功能的LBLC;帶複製的基於局部性最少鏈接(Locality-Based Least-Connections with Replication)

帶複製的基於局部性"最少連接"調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。它與LBLC算法的不一樣之處是它要維護從一個目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按"最小鏈接"原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按"最小鏈接"原則從這個集羣中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以下降複製的程度。

相關文章
相關標籤/搜索