1. 程式人生 > >LVS 之 調度算法介紹

LVS 之 調度算法介紹

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.,這樣同LCWL的算法計算結果都是0,需要通過SED來解決這個問題。因為初始+1,就會有數值的對比

SEDShortest Expection Delay

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

NQ

Never Queue

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

LBLCLocality-Based LC

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

LBLCRLBLC with Replication

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



本文出自 “陽光運維” 博客,請務必保留此出處http://ghbsunny.blog.51cto.com/7759574/1975009

LVS 之 調度算法介紹