LVS調度算法(上)——靜態調度算法

        LVS的調度方法有十幾中,每種方法的調度標準和適用場景不同。大體有兩大類,分別爲固定調度方法或稱爲靜態調度方法,另一類是動態調度方法。

常用的具體算法有十種。


       

        1.輪詢調度(rr)

        將所有請求平均的分發到每個集羣節點上,即輪流調度。

 

        2.加權輪詢調度(wrr)

        由於不同的服務器性能不同,因此要考慮讓性能高的節點多承擔一些請求,這就需要定義每個節點的權重。調度器根據該節點的權重來判斷分發給它的請求量。

也就是以多個節點它們之間的權重比例來分發。

 

        3.源地址hash(Sourcehash,sh)

        用於實現會話綁定到某個具體節點。根據請求的來源地址進行請求的分發,用於實現將某個客戶端的所有請求都分發到一個固定的服務器上,

與Nginx中的ip_hash算法一樣,也是根據客戶端IP的hash值來計算請求轉發的目標節點。只要客戶端IP沒有改變,以後的所有請求都轉發到一個

固定的服務器節點。

        這種調度算法在一定程度上會破壞公平調度的效果,但是請求量越大則調度也就越公平。主要爲了實現將某個客戶端的會話一直鎖定在某個節點,

這樣利用保持session,從而避免需要做多個節點的session複製。因爲http是無狀態的協議,多個請求之間沒有關係,爲了能夠表示出請求與上一次

請求的關係,就通過將sessionID寫入cookie的方式來實現對客戶端多次請求的標識,也就是使用Cookie來實現服務端對客戶端的追蹤。

 

        在這種機制中,如果某個服務器節點掛了,那麼用戶的session也就丟失了,此時用戶再請求時Director發現該客戶端對應的節點掛了,就會將該

請求重新轉發到其它節點,但是用戶發現保存在session中的數據丟失了。爲了避免這種情況,可以在多個服務器節點之間使用session複製,或使用

一個公共的session服務器。如果是了session複製或session服務器,就可以不再使用sh這種調度算法了。

 

        4.目標地址hash(Destination Hash)

        用於將同一類型的請求轉發到一個固定節點,例如將以 .jgp、.png等結尾的請求轉發到同一個節點。這種算法其實不是爲了真正意義的負載均衡,

而是爲了資源的分類管理。這種調度算法主要應用在使用了緩存節點的系統中。例如A用戶訪問 .html時被轉發到後端的某個緩存服務器,當緩存中沒有

時就訪問後端的web服務器,並且響應用戶後將該資源放入html的緩存服務器;B用戶再請求某個html時,依然被轉發到html的緩存服務器,這樣B用戶

就可以直接獲取這個資源而不用再請求後端web服務器。

        因此,目標地址hash這種算法將同一類請求都轉發到一個固定節點上,一般應用在緩存系統中,爲了提高緩存命中率。

 

        以上的四種調度算法被稱爲靜態調度算法,注意是因爲它們進行調度時不考慮後端服務器是空閒還是繁忙,也就是不考慮後端服務器當前的負載量,

也就是不考慮當前調度服務器節點上活動連接和非活動連接的數量。如果某個服務器節點上有較多的用戶保持在線,而另一個節點只有少量用戶在線,

如果還是纔有靜態調度算法,就會造成服務器的負載不均衡情況的發生,因此就有了動態調度算法。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章