介绍最全的LVS负载均衡技术
LVS集群采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請求分發(fā)技術(shù)。調(diào)度器具有很好的吞吐率,將請求均衡地轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,且調(diào)度器自動屏蔽掉服務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個高性能的、高可用的虛擬服務(wù)器。整個服務(wù)器集群的結(jié)構(gòu)對客戶是透明的,而且無需修改客戶端和服務(wù)器端的程序。為此,在設(shè)計時需要考慮系統(tǒng)的透明性、可伸縮性、高可用性和易管理性。
LVS的三種模式:
VS/NAT通過NAT實現(xiàn)虛擬服務(wù)器
由于IPv4中IP地址空間的日益緊張和安全方面的原因,很多網(wǎng)絡(luò)使用保留IP地址(10.0.0.0/255.0.0.0、 172.16.0.0/255.128.0.0和192.168.0.0/255.255.0.0)[64, 65, 66]。這些地址不在Internet上使用,而是專門為內(nèi)部網(wǎng)絡(luò)預(yù)留的。當(dāng)內(nèi)部網(wǎng)絡(luò)中的主機(jī)要訪問Internet或被Internet訪問時,就需要 采用網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation, 以下簡稱NAT),將內(nèi)部地址轉(zhuǎn)化為Internets上可用的外部地址。NAT的工作原理是報文頭(目標(biāo)地址、源地址和端口等)被正確改寫后,客戶相信 它們連接一個IP地址,而不同IP地址的服務(wù)器組也認(rèn)為它們是與客戶直接相連的。由此,可以用NAT方法將不同IP地址的并行網(wǎng)絡(luò)服務(wù)變成在一個IP地址 上的一個虛擬服務(wù)。
VS/NAT的體系結(jié)構(gòu)如圖2所示。在一組服務(wù)器前有一個調(diào)度器,它們是通過Switch/HUB相連接的。這些服務(wù)器提供相同的網(wǎng)絡(luò)服務(wù)、相同的內(nèi)容, 即不管請求被發(fā)送到哪一臺服務(wù)器,執(zhí)行結(jié)果是一樣的。服務(wù)的內(nèi)容可以復(fù)制到每臺服務(wù)器的本地硬盤上,可以通過網(wǎng)絡(luò)文件系統(tǒng)(如NFS)共享,也可以通過一 個分布式文件系統(tǒng)來提供?
VS/DR? ?通過直接路由模式實現(xiàn)虛擬服務(wù)器
VS/DR 的工作流程如圖8所示:它的連接調(diào)度和管理與VS/NAT和VS/TUN中的一樣,它的報文轉(zhuǎn)發(fā)方法又有不同,將報文直接路由給目標(biāo)服務(wù)器。在VS/DR 中,調(diào)度器根據(jù)各個服務(wù)器的負(fù)載情況,動態(tài)地選擇一臺服務(wù)器,不修改也不封裝IP報文,而是將數(shù)據(jù)幀的MAC地址改為選出服務(wù)器的MAC地址,再將修改后 的數(shù)據(jù)幀在與服務(wù)器組的局域網(wǎng)上發(fā)送。因為數(shù)據(jù)幀的MAC地址是選出的服務(wù)器,所以服務(wù)器肯定可以收到這個數(shù)據(jù)幀,從中可以獲得該IP報文。當(dāng)服務(wù)器發(fā)現(xiàn) 報文的目標(biāo)地址VIP是在本地的網(wǎng)絡(luò)設(shè)備上,服務(wù)器處理這個報文,然后根據(jù)路由表將響應(yīng)報文直接返回給客戶。?
VS/TUN??通過ip隧道實現(xiàn)虛擬服務(wù)器要求:
在VS/NAT 的集群系統(tǒng)中,請求和響應(yīng)的數(shù)據(jù)報文都需要通過負(fù)載調(diào)度器,當(dāng)真實服務(wù)器的數(shù)目在10臺和20臺之間時,負(fù)載調(diào)度器將成為整個集群系統(tǒng)的新瓶頸。大多數(shù) Internet服務(wù)都有這樣的特點(diǎn):請求報文較短而響應(yīng)報文往往包含大量的數(shù)據(jù)。如果能將請求和響應(yīng)分開處理,即在負(fù)載調(diào)度器中只負(fù)責(zé)調(diào)度請求而響應(yīng)直 接返回給客戶,將極大地提高整個集群系統(tǒng)的吞吐量。
IP隧道(IP tunneling)是將一個IP報文封裝在另一個IP報文的技術(shù),這可以使得目標(biāo)為一個IP地址的數(shù)據(jù)報文能被封裝和轉(zhuǎn)發(fā)到另一個IP地址。IP隧道技 術(shù)亦稱為IP封裝技術(shù)(IP encapsulation)。IP隧道主要用于移動主機(jī)和虛擬私有網(wǎng)絡(luò)(Virtual Private Network),在其中隧道都是靜態(tài)建立的,隧道一端有一個IP地址,另一端也有唯一的IP地址。
我們利用IP隧道技術(shù)將請求報文封裝轉(zhuǎn)發(fā)給后端服務(wù)器,響應(yīng)報文能從后端服務(wù)器直接返回給客戶。但在這里,后端服務(wù)器有一組而非一個,所以我們不可能靜態(tài) 地建立一一對應(yīng)的隧道,而是動態(tài)地選擇一臺服務(wù)器,將請求報文封裝和轉(zhuǎn)發(fā)給選出的服務(wù)器。這樣,我們可以利用IP隧道的原理將一組服務(wù)器上的網(wǎng)絡(luò)服務(wù)組成 在一個IP地址上的虛擬網(wǎng)絡(luò)服務(wù)。 VS/TUN的體系結(jié)構(gòu)如圖4所示,各個服務(wù)器將VIP地址配置在自己的IP隧道設(shè)備上。?
?
可伸縮網(wǎng)絡(luò)服務(wù)的幾種結(jié)構(gòu),它們都需要一個前端的負(fù)載調(diào)度器(或者多個進(jìn)行主從備份)。我們先分析實現(xiàn)虛擬網(wǎng)絡(luò)服務(wù)的主要技術(shù),指出IP負(fù)載均衡技術(shù)是在負(fù)載調(diào)度器的實現(xiàn)技術(shù)中效率最高的。在已有的IP負(fù)載均衡技術(shù)中,主要有通過網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation)將一組服務(wù)器構(gòu)成一個高性能的、高可用的虛擬服務(wù)器,我們稱之為VS/NAT技術(shù)(VirtualServer via Network Address Translation)。在分析VS/NAT的缺點(diǎn)和網(wǎng)絡(luò)服務(wù)的非對稱性的基礎(chǔ)上,我們提出了通過IP隧道實現(xiàn)虛擬服務(wù)器的方法VS/TUN (VirtualServervia IP Tunneling),和通過直接路由實現(xiàn)虛擬服務(wù)器的方法VS/DR(VirtualServer via Direct Routing),它們可以極大地提高系統(tǒng)的伸縮性。VS/NAT、VS/TUN和VS/DR技術(shù)是LVS集群中實現(xiàn)的三種IP負(fù)載均衡技術(shù)。
?
LVS的十中輪詢算法:
一.rr 輪叫(RoundRobin)
?? 調(diào)度器通過"輪叫"調(diào)度算法將外部請求按順序輪流分配到集群中的真實服務(wù)器上,它均等地對待每一臺服務(wù)器,而不管服務(wù)器上實際的連接數(shù)和系統(tǒng)負(fù)載。
二.wrr 加權(quán)輪叫(WeightedRound Robin)
?? 調(diào)度器通過"加權(quán)輪叫"調(diào)度算法根據(jù)真實服務(wù)器的不同處理能力來調(diào)度訪問請求。這樣可以保證處理能力強(qiáng)的服務(wù)器處理更多的訪問流量。調(diào)度器可以自動問詢真實服務(wù)器的負(fù)載情況,并動態(tài)地調(diào)整其權(quán)值。
三.lc 最少鏈接(LeastConnections)
?? 調(diào)度器通過"最少連接"調(diào)度算法動態(tài)地將網(wǎng)絡(luò)請求調(diào)度到已建立的鏈接數(shù)最少的服務(wù)器上。如果集群系統(tǒng)的真實服務(wù)器具有相近的系統(tǒng)性能,采用"最小連接"調(diào)度算法可以較好地均衡負(fù)載。
四.wlc 加權(quán)最少鏈接(WeightedLeast Connections)
?? 在集群系統(tǒng)中的服務(wù)器性能差異較大的情況下,調(diào)度器采用"加權(quán)最少鏈接"調(diào)度算法優(yōu)化服務(wù)器性能,具有較高權(quán)值的服務(wù)器將承受較大比例的活動連接負(fù)載。調(diào)度器可以自動問詢真實服務(wù)器的負(fù)載情況,并動態(tài)地調(diào)整其權(quán)值。
五.lblc 基于局部性的最少鏈接(Locality-BasedLeast Connections)
?? "基于局部性的最少鏈接"調(diào)度算法是針對目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。該算法根據(jù)請求的目標(biāo)IP地址找出該目標(biāo)IP地址最近使用的服務(wù)器,若該服務(wù)器是可用的且沒有超載,將請求發(fā)送到該服務(wù)器;若服務(wù)器不存在,或者該服務(wù)器超載且有服務(wù)器處于一半的工作負(fù)載,則用"最少鏈接"的原則選出一個可用的服務(wù)器,將請求發(fā)送到該服務(wù)器。
六.lblcr 帶復(fù)制的基于局部性最少鏈接(Locality-BasedLeast Connections with Replication)
?? "帶復(fù)制的基于局部性最少鏈接"調(diào)度算法也是針對目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。它與LBLC算法的不同之處是它要維護(hù)從一個目標(biāo)IP地址到一組服務(wù)器的映射,而LBLC算法維護(hù)從一個目標(biāo)IP地址到一臺服務(wù)器的映射。該算法根據(jù)請求的目標(biāo)IP地址找出該目標(biāo)IP地址對應(yīng)的服務(wù)器組,按"最小連接"原則從服務(wù)器組中選出一臺服務(wù)器,若服務(wù)器沒有超載,將請求發(fā)送到該服務(wù)器,若服務(wù)器超載;則按"最小連接"原則從這個集群中選出一臺服務(wù)器,將該服務(wù)器加入到服務(wù)器組中,將請求發(fā)送到該服務(wù)器。同時,當(dāng)該服務(wù)器組有一段時間沒有被修改,將最忙的服務(wù)器從服務(wù)器組中刪除,以降低復(fù)制的程度。
七.dh 目標(biāo)地址散列(DestinationHashing)
?? "目標(biāo)地址散列"調(diào)度算法根據(jù)請求的目標(biāo)IP地址,作為散列鍵(HashKey)從靜態(tài)分配的散列表找出對應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請求發(fā)送到該服務(wù)器,否則返回空。
八.sh 源地址散列(SourceHashing)
"源地址散列"調(diào)度算法根據(jù)請求的源IP地址,作為散列鍵(HashKey)從靜態(tài)分配的散列表找出對應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請求發(fā)送到該服務(wù)器,否則返回空。
九.SED最短期望延遲(ShortestExpected Delay)
??“按內(nèi)容服務(wù)器的最短期望延遲分配鏈接,SED=(Ci+1)/Ui ,即(任務(wù)數(shù)+1)/權(quán)重
十.NQ(無需隊列等待)
?? 將請求優(yōu)先裝發(fā)給空閑的服務(wù)器,否則按最短預(yù)計延遲策略分配鏈接。
?
實現(xiàn)軟件
Ipvsadm-1.24-8.1.i386.rpm包,redhat光盤自帶本軟件,軟件具體命令介紹如下:
ipvsadm -A -t XXX.XXX.XXX.XXX -s rr
-A --add-service在服務(wù)器列表中新添加一條新的虛擬服務(wù)器記錄
-t?表示為tcp服務(wù)
-u?表示為udp服務(wù)
-s --scheduler?使用的調(diào)度算法,rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq?默認(rèn)調(diào)度算法是wlc
ipvsadm -a -t 172.18.1.187:80 –r172.18.1.2:80 -m -w 1
-a --add-server?在服務(wù)器表中添加一條新的真實主機(jī)記錄
-t --tcp-service?說明虛擬服務(wù)器提供tcp服務(wù)
-u --udp-service?說明虛擬服務(wù)器提供udp服務(wù)
-r --real-server?真實服務(wù)器地址
-m --masquerading?指定LVS工作模式為NAT模式
-w --weight?真實服務(wù)器的權(quán)值
-g --gatewaying?指定LVS工作模式為直接路由器模式(也是LVS默認(rèn)的模式)
-i --ipip?指定LVS的工作模式為隧道模式
-p?會話保持時間,定義流量唄轉(zhuǎn)到同一個realserver的會話存留時間? ?
附件是三種模式的詳細(xì)方法!!!!
總結(jié)
以上是生活随笔為你收集整理的介绍最全的LVS负载均衡技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为、中移动等发布增强版5.5G:10G
- 下一篇: linux parallel 命令,Li