一、lVS基本介紹
LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器。也是國人章文嵩博士發起的一個開源項目,現在LVS已經是Linux內核標準的一部分。利用LVS技術可以實現高性能,高可壓縮的網絡服務,例如www服務,FTP服務,MAIL服務等。
二、LVS的體系架構
使用LVS架設的服務器集羣系統有三個部分組成:最前端的負載均衡層(Loader Balancer),中間的服務器羣組層,用Server Array 表示,最底層的數據共享存儲層,用Shared Storage表示。在用戶看來所有的應用都是透明的,用戶只是在使用一個虛擬服務器提供的高性能服務。
1、LVS的體系架構如圖:
2、LVS的各個層次的詳細介紹
Load Balancer層:位於整個集羣系統的最前端,有一臺或者多臺負載調度器(Director Server)組成,LVS模塊就安裝在Director Server 上,而Director 的主要作用類似於一個路由器,它含有完成LVS功能所設定的路由表,通過這些路由表把用戶的請求分發給Server Array層的應用服務器上。同時,在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在繁忙的業務系統中,性能並不是很好,此時可以採用集羣文件系統。
從整個LVS結構可以看出,Director Server是整個LVS的核心,對於Real Server,可以是所有的系統平臺,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。
三、LVS集羣
1、十種調度算法
(1)靜態
rr 輪循調度 (Round-Robin Scheduling)
wrr 加權輪循調度 (Weighted Round-Robin Scheduling)
sh 源地址散列調度 (Source Hashing Scheduling)
dh 目的地址散列調度 (Destination Hashing Scheduling)
(2)動態
lc 最小連接調度 (Least-Connection Scheduling)
wlc 加權最小連接調度 (Weighted Least-Connection Scheduling)
sed 最短預期延時調度 (Shortest Expected Delay Scheduling)
nq 不排隊調度 (Never Queue Scheduling)
lblc 基於局部性的最少連接調度 (Locality-Based Least Connections Scheduling)
lblcr 帶複製的基於局部性的最少連接調度 (Locality-Based Least Connections with Replication Scheduling)
2、三種IP負載均衡技術
(1)IPVS/NAT
網絡結構圖:
負載均衡內核空間原理圖
IPVS/NAT模式的基本原理
首先CIP發送請求package給VIP,VIP收到package後,會根據LVS設置的LB算法選擇一個合適的RS?然後把package的目標IP修改爲RIP,RIP收到這個package後判斷目標ip爲自己,就處理這個package,處理完後把這個包發送給LVS VIP,LVS 收到這個package 後把sorce ip改成VIP的IP,dst ip改成 CIP,然後發給CIP。其中的轉換我們可以這樣理解:所有發送到VIP的數據包全部轉換爲RIP的地址以及對應端口。IPVS/NAT模式優缺點
優點:
容易配置,容易理解,容易管理的工作模式
節省外網IP資源,LVS-NAT工作方式將系統架構封裝在局域網中,只需要LVS有一個外網地址或外網地址映射就可實現訪問
系統架構相對封閉,內網環境下防火牆的設置要求不會太高,容易進行物理服務器的運維
LVS/NAT工作模式下的RS服務器可以是任何操作系統,只要支持TCP/IP協議即可
缺點:
LVS-NAT中,負載均衡調度器作爲轉發點,當RS服務器數量變多時,調度器將會負載,轉發點也是瓶頸點
(2)IPVS/DR
網絡結構圖
IPVS/DR模式的基本原理
LVS節點接收到請求報文後,會改寫報文的數據鏈路層格式。將VIP MAC寫成RIP的Mac,但是網絡層和傳輸層報文不會改寫,然後重新回發給交換機。這裏就涉及一個問題,現在RIP和 IP的對應關係的錯誤的,這個數據報文到了交換機後,由於這種錯位的關係,是不能進行三層交換的,只能進行二層交換(一旦進行IP交換,數據報文的驗證就會出錯,被丟棄)。所以LVS-DR方式要求Real Server和LVS節點必須在同一個局域網內,或者這樣說更確切:LVS節點需要找到一個二層鏈路,將改寫了Mac地址的報文發送給Real Server,而不能進行三層交換的校驗。
簡單來說就是CIP發送一個PV請求給VIP,VIP收到這個請求後會跟LVS設置的LB算法選擇一個LB比較合理的realserver,然後將此請求的package的MAC地址修改爲realserver的MAC地址;VIP會把這個包廣播到當前這個LAN裏面,所以,要提前保證VIP和所有的realserver在同一個網段
IPVS/DR 模式的優缺點
優點
解決了LVS-NAT工作模式中的轉發瓶頸問題,能夠支撐規模更大的負載均衡場
比較耗費網外IP資源,機房的外網IP資源都是有限的,如果在正式生產環境中確實存在這個問題,可以採用LVS-NAT和LVS-DR混合使用的方式來緩解
缺點
配置工作較LVS-NAT方式稍微麻煩一點,您至少需要了解LVS-DR模式的基本工作方式才能更好的指導自己進行LVS-DR模式的配置和運行過程中問題的解決
由於LVS-DR模式的報文改寫規則,導致LVS節點和Real Server節點必須在一個網段,因爲二層交換是沒法跨子網的。但是這個問題針對大多數系統架構方案來說,實際上並沒有本質限制
(3)IPVS/TUN
首先這裏需要理解以下關於IP隧道的概念
將一個完整的IP報文封裝成另一個新的IP報文的數據部分,並通過路由器傳送到指定的地點。在這個過程中路由器並不在意被封裝的原始協議的內容。到達目的地點後,由目的地方依靠自己的計算能力和對IP隧道協議的支持,打開封裝協議,取得原始協議。如圖:
其實數據轉發原理和DR是一樣的,不過這個我個人認爲主要是位於不同位置(不同機房);LB是通過隧道進行了信息傳輸,雖然增加了負載,可是因爲地理位置不同的優勢,還是可以參考的一種方案;
優點
負載均衡器只負責將請求包分發給物理服務器,而物理服務器將應答包直接發給用戶。所以,負載均衡器能處理很巨大的請求量,這種方式,一臺負載均衡能爲超過100臺的物理服務器服務,負載均衡器不再是系統的瓶頸。使用VS-TUN方式,如果你的負載均衡器擁有100M的全雙工網卡的話,就能使得整個Virtual Server能達到1G的吞吐量。
缺點
這種方式需要所有的服務器支持"IP Tunneling"(IP Encapsulation)協議;