LVS(Linux Virtual Server),中文名 Linux 虛擬服務器,由章文嵩博士發起的一個開源項目,它的官方網站是 http://www.linuxvirtualserver.org 如今 LVS 已是 Linux 內核標準的一部分。前端
LVS 是一個很經常使用的開源四層負載均衡解決方案,是一種集羣技術,採用 IP 負載均衡和基於內容請求分發技術,基於 Linux 內核的 Netfilter 模塊設計,LVS 架構從邏輯上可分爲調度層、Server 集羣和共享存儲。linux
#相關術語 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 隧道技術
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地址對應的服務器組,按"最小鏈接"原則從服務器組中選出一臺服務器, #若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按"最小鏈接"原則從這個集羣中選出一 臺服務器 ,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改, 將最忙的服務器從服務器組中刪除,以下降複製的程度。