LVS介紹及工做原理圖解

1、LVS簡介
LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器,是一個由章文嵩博士發起的自由軟件項目,官方站點是:1、LVS簡介
LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器,是一個由章文嵩博士發起的自由軟件項目,官方站點是:http://www.linuxvirtualserver.org 如今LVS已是Linux標準內核的一部分,在Linux2.4內核之前,使用LVS時必須從新編譯內核以支持LVS功能模塊,可是從Linux2.4內核心以後,已經徹底內置了LVS的各個功能模塊,無需給內核打任何補丁,能夠直接使用LVS提供的各類功能。
使用LVS技術要達到的目標是:經過LVS提供的負載均衡技術和Linux操做系統實現一個高性能,高可用的服務器羣集,它具備良好的可靠性、可擴展性和可操做性。從而以低廉的成本實現最優的服務性能。前端

2、LVS體系架構
使用LVS架設的服務器集羣系統有三個部分組成:最前端的負載均衡層(Loader Balancer),中間的服務器羣組層,用Server Array表示,最底層的數據共享存儲層,用Shared Storage表示。在用戶看來全部的應用都是透明的,用戶只是在使用一個虛擬服務器提供的高性能服務。
LVS的體系架構如圖:
LVS介紹及工做原理圖解
LVS的各個層次的詳細介紹:
Load Balancer層:位於整個集羣系統的最前端,有一臺或者多臺負載調度器(Director Server)組成,LVS模塊就安裝在Director Server上,而Director的主要做用相似於一個路由器,它含有完成LVS功能所設定的路由表,經過這些路由表把用戶的請求分發給Server Array層的應用服務器(Real Server)上。同時,在Director Server上還要安裝對Real Server服務的監控模塊Ldirectord,此模塊用於監測各個Real Server服務的健康情況。在Real Server不可用時把它從LVS路由表中剔除,恢復時從新加入。
Server Array層:由一組實際運行應用服務的機器組成,Real Server能夠是WEB服務器、MAIL服務器、FTP服務器、DNS服務器、視頻服務器中的一個或者多個,每一個Real Server之間經過高速的LAN或分佈在各地的WAN相鏈接。在實際的應用中,Director Server也能夠同時兼任Real Server的角色。
Shared Storage層:是爲全部Real Server提供共享存儲空間和內容一致性的存儲區域,在物理上,通常有磁盤陣列設備組成,爲了提供內容的一致性,通常能夠經過NFS網絡文件系統共享數 據,可是NFS在繁忙的業務系統中,性能並非很好,此時能夠採用集羣文件系統,例如Red hat的GFS文件系統,oracle提供的OCFS2文件系統等。
從整個LVS結構能夠看出,Director Server是整個LVS的核心,目前,用於Director Server的操做系統只能是Linux和FreeBSD,linux2.6內核不用任何設置就能夠支持LVS功能,而FreeBSD做爲 Director Server的應用還不是不少,性能也不是很好。對於Real Server,幾乎能夠是全部的系統平臺,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。linux

3、LVS基本工做原理
LVS介紹及工做原理圖解
一、當用戶向負載均衡調度器(Director Server)發起請求,調度器將請求發往至內核空間
二、 PREROUTING鏈首先會接收到用戶請求,判斷目標IP肯定是本機IP,將數據包發往INPUT鏈
三、 IPVS是工做在INPUT鏈上的,當用戶請求到達INPUT時,IPVS會將用戶請求和本身已定義好的集羣服務進行比對,若是用戶請求的就是定義的集羣服務,那麼此時IPVS會強行修改數據包裏的目標IP地址及端口,並將新的數據包發往POSTROUTING鏈
四、 POSTROUTING連接收數據包後發現目標IP地址恰好是本身的後端服務器,那麼此時經過選路,將數據包最終發送給後端的服務器算法

4、LVS相關術語
一、 DS:Director Server。指的是前端負載均衡器節點。
二、 RS:Real Server。後端真實的工做服務器。
三、 VIP:向外部直接面向用戶請求,做爲用戶請求的目標的IP地址。
四、 DIP:Director Server IP,主要用於和內部主機通信的IP地址。
五、 RIP:Real Server IP,後端服務器的IP地址。
六、 CIP:Client IP,訪問客戶端的IP地址windows

5、三種模式及原理
一)LVS-NAT原理和特色
多目標IP的DNAT,經過將請求報文中的目標地址和目標端口修改成某挑出的RS的RIP和PORT實現轉發
LVS介紹及工做原理圖解
1.當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP爲CIP,目標IP爲VIP後端

  1. PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
  2. IPVS比對數據包請求的服務是否爲集羣服務,如果,修改數據包的目標IP地址爲後端服務器IP,後將數據包發至POSTROUTING鏈。 此時報文的源IP爲CIP,目標IP爲RIP
  3. POSTROUTING鏈經過選路,將數據包發送給Real Server
  4. Real Server比對發現目標爲本身的IP,開始構建響應報文發回給Director Server。 此時報文的源IP爲RIP,目標IP爲CIP
  5. Director Server在響應客戶端前,此時會將源IP地址修改成本身的VIP地址,而後響應給客戶端。 此時報文的源IP爲VIP,目標IP爲CIP

LVS-NAT模式的特性
(1) RS應該和DIP應該使用私網地址,且RS的網關要指向DIP;
(2) 請求和響應報文都要經由director轉發;極高負載的場景中,director可能會成爲系統瓶頸;
(3) 支持端口映射;
(4) RS可使用任意OS;
(5) RS的RIP和Director的DIP必須在同一IP網絡;
缺陷:對Director Server壓力會比較大,請求和響應都需通過director server服務器

二)LVS-DR原理和特色
經過爲請求報文從新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變;
LVS介紹及工做原理圖解
一、當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP爲CIP,目標IP爲VIP
二、PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
三、 IPVS比對數據包請求的服務是否爲集羣服務,如果,將請求報文中的源MAC地址修改成DIP的MAC地址,將目標MAC地址修改RIP的MAC地址,而後將數據包發至POSTROUTING鏈。 此時的源IP和目的IP均未修改,僅修改了源MAC地址爲DIP的MAC地址,目標MAC地址爲RIP的MAC地址
四、 因爲DS和RS在同一個網絡中,因此是經過二層來傳輸。POSTROUTING鏈檢查目標MAC地址爲RIP的MAC地址,那麼此時數據包將會發至Real Server。
五、 RS發現請求報文的MAC地址是本身的MAC地址,就接收此報文。處理完成以後,將響應報文經過lo接口傳送給eth0網卡而後向外發出。 此時的源IP地址爲VIP,目標IP爲CIP
六、 響應報文最終送達至客戶端 網絡

LVS-DR模式的特性
(1) 確保前端路由器將目標IP爲VIP的請求報文發往Director:
(a) 在前端網關作靜態綁定;
(b) 在RS上使用arptables;
(c) 在RS上修改內核參數以限制arp通告及應答級別;
修改RS上內核參數(arp_ignore和arp_announce)將RS上的VIP配置在lo接口的別名上,並限制其不能響應對VIP地址解析請求。
(2) RS的RIP可使用私網地址,也能夠是公網地址;RIP與DIP在同一IP網絡;RIP的網關不能指向DIP,以確保響應報文不會經由Director;
(3) RS跟Director要在同一個物理網絡;
(4) 請求報文要經由Director,但響應不能經由Director,而是由RS直接發往Client;
(5) 不支持端口映射;
缺陷:RS和DS必須在同一機房中session

三)LVS-Tun原理和特色
在原有的IP報文外再次封裝多一層IP首部,內部IP首部(源地址爲CIP,目標IIP爲VIP),外層IP首部(源地址爲DIP,目標IP爲RIP)
LVS介紹及工做原理圖解
一、當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP爲CIP,目標IP爲VIP 。
二、 PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
三、IPVS比對數據包請求的服務是否爲集羣服務,如果,在請求報文的首部再次封裝一層IP報文,封裝源IP爲爲DIP,目標IP爲RIP。而後發至POSTROUTING鏈。 此時源IP爲DIP,目標IP爲RIP
四、 POSTROUTING鏈根據最新封裝的IP報文,將數據包發至RS(由於在外層封裝多了一層IP首部,因此能夠理解爲此時經過隧道傳輸)。 此時源IP爲DIP,目標IP爲RIP
五、 RS接收到報文後發現是本身的IP地址,就將報文接收下來,拆除掉最外層的IP後,會發現裏面還有一層IP首部,並且目標是本身的lo接口VIP,那麼此時RS開始處理此請求,處理完成以後,經過lo接口送給eth0網卡,而後向外傳遞。 此時的源IP地址爲VIP,目標IP爲CIP
六、響應報文最終送達至客戶端架構

LVS-Tun模式的特性
(1) DIP, VIP, RIP都應該是公網地址;
(2) RS的網關不能,也不可能指向DIP;
(3) 請求報文要經由Director,但響應不能經由Director;
(4) 不支持端口映射;
(5) RS的OS得支持隧道功能;oracle

其實企業中最經常使用的是 DR 實現方式,而 NAT 配置上比較簡單和方便,後續實踐中會總結 DR 和 NAT 具體使用配置過程

5、LVS的十種調度算法
一)靜態調度:
①RR(Round Robin):輪詢調度
輪詢調度算法的原理是每一次把來自用戶的請求輪流分配給內部中的服務器,從1開始,直到N(內部服務器個數),而後從新開始循環。算法的優勢是其簡潔性,它無需記錄當前全部鏈接的狀態,因此它是一種無狀態調度。【提示:這裏是不考慮每臺服務器的處理能力】
②WRR:weight,加權輪詢(以權重之間的比例實如今各主機之間進行調度)
因爲每臺服務器的配置、安裝的業務應用等不一樣,其處理能力會不同。因此,咱們根據服務器的不一樣處理能力,給每一個服務器分配不一樣的權值,使其可以接受相應權值數的服務請求。
③SH:source hashing,源地址散列。主要實現會話綁定,可以將此前創建的session信息保留了
源地址散列調度算法正好與目標地址散列調度算法相反,它根據請求的源IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的而且沒有超負荷,將請求發送到該服務器,不然返回空。它採用的散列函數與目標地址散列調度算法的相同。它的算法流程與目標地址散列調度算法的基本類似,除了將請求的目標IP地址換成請求的源IP地址,因此這裏不一個一個敘述。
④DH:Destination hashing:目標地址散列。把同一個IP地址的請求,發送給同一個server。
目標地址散列調度算法也是針對目標IP地址的負載均衡,它是一種靜態映射算法,經過一個散列(Hash)函數將一個目標IP地址映射到一臺服務器。目標地址散列調度算法先根據請求的目標IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。

二)動態調度:
①LC(Least-Connection):最少鏈接
最少鏈接調度算法是把新的鏈接請求分配到當前鏈接數最小的服務器,最小鏈接調度是一種動態調度短算法,它經過服務器當前所活躍的鏈接數來估計服務器的負載均衡,調度器須要記錄各個服務器已創建鏈接的數目,當一個請求被調度到某臺服務器,其鏈接數加1,當鏈接停止或超時,其鏈接數減一,在系統實現時,咱們也引入當服務器的權值爲0時,表示該服務器不可用而不被調度。
簡單算法:active256+inactive(誰的小,挑誰)
②WLC(Weighted Least-Connection Scheduling):加權最少鏈接。
加權最小鏈接調度算法是最小鏈接調度的超集,各個服務器用相應的權值表示其處理性能。服務器的缺省權值爲1,系統管理員能夠動態地設置服務器的權限,加權最小鏈接調度在調度新鏈接時儘量使服務器的已創建鏈接數和其權值成比例。
簡單算法:(active
256+inactive)/weight【(活動的鏈接數+1)/除以權重】(誰的小,挑誰)
③SED(Shortest Expected Delay):最短時間望延遲
基於wlc算法
簡單算法:(active+1)256/weight 【(活動的鏈接數+1)256/除以權重】④NQ(never queue):永不排隊(改進的sed)無需隊列,若是有臺realserver的鏈接數=0就直接分配過去,不須要在進行sed運算。⑤LBLC(Locality-Based Least Connection):基於局部性的最少鏈接基於局部性的最少鏈接算法是針對請求報文的目標IP地址的負載均衡調度,不籤主要用於Cache集羣系統,由於Cache集羣中客戶請求報文的布標IP地址是變化的,這裏假設任何後端服務器均可以處理任何請求,算法的設計目標在服務器的負載基本平衡的狀況下,將相同的目標IP地址的請求調度到同一個臺服務器,來提升個太服務器的訪問局部性和主存Cache命中率,從而調整整個集羣系統的處理能力。基於局部性的最少鏈接調度算法根據請求的目標IP地址找出該目標IP地址最近使用的RealServer,若該Real Server是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工做負載,則用「最少連接」的原則選出一個可用的服務器,將請求發送到該服務器。⑥LBLCR(Locality-Based Least Connections withReplication):帶複製的基於局部性最少連接帶複製的基於局部性最少連接調度算法也是針對目標IP地址的負載均衡,該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按「最小鏈接」原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按「最小鏈接」原則從這個集羣中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以下降複製的程度。使用LVS技術要達到的目標是:經過LVS提供的負載均衡技術和Linux操做系統實現一個高性能,高可用的服務器羣集,它具備良好的可靠性、可擴展性和可操做性。從而以低廉的成本實現最優的服務性能。

相關文章
相關標籤/搜索