LVS 之 調度算法介紹

1? 概述

LVS中ipvs?scheduler總共有10中調度算法:RR,WRR,LC,WLC,LBLC,LBLCR,DH,SH,SED,NQ,

VS根據其調度時是否考慮各RS當前的負載狀態,分成兩大類:靜態方法和動態方法,其中,算法越復雜,會影響服務器的效率(性能)

2??靜態方法

靜態方法僅根據算法本身進行調度,關心的是起點公平。相對LVS而言的,而不關心RS是否可以處理請求,如RS的負載狀態。

有如下4類算法

RRroundrobin

輪詢,后端RS均攤所有的請求

WRRWeighted RR

加權輪詢,根據權值來分配請求的數量

SHSource Hashing

源地址hash,實現session sticky,源IP地址hash;將來自于同一個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定

但是,這種方式問題比較多,如源地址是nat后的公網地址,如果該地址對應的后端機器很多,這樣同一ip的訪問可能會對同一服務器造成負擔。

DHDestination Hashing

目標地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡,如:寬帶運營商

3? 動態方法

動態主要根據每RS當前的負載狀態及調度算法進行調度Overhead=value較小的RS將被調度

動態調度關心的是最終的結果,要考慮到后端服務器RS的負載情況

有如下6類算法

LCleast connections

適用于長連接應用

Overhead=activeconns*256+inactiveconns

活動連接表示正在傳送數據

非活動連接表示建立連接了,但是沒有傳送數據

WLCWeighted LC

WLC是默認調度方法

Overhead=(activeconns*256+inactiveconns)/weight

這里如果是第一次連接,活動和非活動連接的值都是0.,這樣同LC和WL的算法計算結果都是0,需要通過SED來解決這個問題。因為初始+1,就會有數值的對比

SEDShortest Expection Delay

初始連接高權重優先,Overhead=(activeconns+1)*256/weight

NQNever Queue

第一輪均勻分配,后續SED,解決了第一次分配不均勻的問題。使得所有的服務器都會執行一定的任務

LBLCLocality-Based LC

動態的DH算法,使用場景:根據負載狀態實現正向代理

LBLCRLBLC with Replication

帶復制功能的LBLC,解決LBLC負載不均衡問題,從負載重的復制到負載輕的RS

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容