lvs工作模式和工作原理
一、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)協議;