LVS 介紹

    LVS(Linux Virtual Server),中文名 Linux 虛擬服務器,由章文嵩博士發起的一個開源項目,它的官方網站是 http://www.linuxvirtualserver.org 如今 LVS 已是 Linux 內核標準的一部分。前端

    LVS 是一個很經常使用的開源四層負載均衡解決方案,是一種集羣技術,採用 IP 負載均衡和基於內容請求分發技術,基於 Linux 內核的 Netfilter 模塊設計,LVS 架構從邏輯上可分爲調度層、Server 集羣和共享存儲。linux

 

LVS 工做原理

  1. 用戶請求發送到負載均衡調度器(Director Server)上,調度器將請求轉發至內核空間;
  2. PREROUTING 連接收到請求,獲取報文中的目標 IP 地址,確認爲本機,發往 INPUT 鏈;
  3. IPVS 是工做在 INPUT 鏈上的,當請求到達 INPUT 鏈時,IPVS 會根據調度算法將數據報文中的目標 IP 地址和端口修改成配置好的 real Server 集羣中的一臺,並將修改後的數據包發送到 POSTROUTING 鏈;
  4. POSTROUTING 連接受到數據包後根據目標 IP 地址,發送到對應的目標服務器;

#相關術語

ipvs:工做在內核空間,負責實現調度的代碼
ipvsadm:LVS 管理命令,工做在用戶空間,負責編寫規則、定義集羣服務和後臺服務器
DS:Director Server,前端負載均衡節點
RS:Real Server,後端服務器集羣
VIP:Virtual IP,用戶請求 IP,直接面向用戶
DIP:Director Server IP,調度器 IP
RIP:Real Server IP,後端集羣 Server IP
CIP:Client IP,用戶客戶端 IP 地址
VS/NAT:基於網絡地址轉換技術
VS/DR:基於直接路由技術
VS/TUN:基於 IP 隧道技術

 

LVS 調度算法

1.Fixed Scheduling Method 靜態調服方法

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

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

DH  #目標地址hash
#算法也是針對目標IP地址的負載均衡,但它是一種靜態映射算法,經過一個散列(Hash)函數將一個目標IP地址映射到一臺服務器。
#目標地址散列調度算法先根據請求的目標IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。

SH  #源地址hash
#算法正好與目標地址散列調度算法相反,它根據請求的源IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是 可用的且未超載,將請求發送到該服務器,不然返回空。
#它採用的散列函數與目標地址散列調度算法的相同。除了將請求的目標IP地址換成請求的源IP地址外,它的算法流程與目標地址散列調度算法的基本類似。在實際應用中,源地址散列調度和目標地址散列調度能夠結合使用在防火牆集羣中,它們能夠保證整個系統的惟一出入口。



2.Dynamic Scheduling Method 動態調服方法

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

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

SED #最少指望延遲
#基於wlc算法,舉例說明:ABC三臺機器分別權重123,鏈接數也分別是123,name若是使用WLC算法的話一個新請求 進入時他可能會分給ABC中任意一個,使用SED算法後會進行這樣一個運算
#A:(1+1)/2    
#B:(1+2)/2    
#C:(1+3)/3
#根據運算結果,把鏈接交給C

NQ  #從不排隊調度方法
#無需列隊,若是有臺realserver的鏈接數=0 就直接分配過去,不須要進行sed運算.

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

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