◆鮮 偉 胡曉勤
?
基于OSPF等價路由的LVS集群負(fù)載均衡技術(shù)的研究
◆鮮 偉 胡曉勤
(四川大學(xué)計算機(jī)學(xué)院 四川 610000)
LVS(Linux Virtual Server)作為負(fù)載均衡軟件目前已經(jīng)普遍的用于各類企業(yè)信息化系統(tǒng)中。本文簡要地介紹了LVS和OSPF等價路由,并針對大規(guī)模網(wǎng)絡(luò)的環(huán)境提出了一種結(jié)合LVS與OSPF的解決方案。該方案實現(xiàn)了多臺LVS All-active,可以用于解決目前常用的LVS主備模式下性能不足的問題。
LVS;OSPF;等價路由;負(fù)載均衡
隨著中國互聯(lián)網(wǎng)的發(fā)展,各類電商企業(yè)為了吸引客戶采取了各種的營銷策略,例如定時搶購,而這對企業(yè)的網(wǎng)絡(luò)系統(tǒng)帶來了巨大挑戰(zhàn)。目前LVS集群常部署在HA模式下,當(dāng)面對海量的突發(fā)流量,LVS集群不堪重負(fù)而導(dǎo)致整體宕機(jī)。本文提出了一種LVS All active模式的的解決方案-基于OSPF等價路由的LVS集群負(fù)載均衡技術(shù),從而解決上面所述的類似問題。
Linux虛擬服務(wù)器(Linux Virtual Server,LVS)是一個虛擬的服務(wù)器集群系統(tǒng),用于實現(xiàn)負(fù)載平衡。項目在1998年5月由章文嵩成立,是中國國內(nèi)最早出現(xiàn)的自由軟件項目之一[1]。LVS是基于Linux內(nèi)核框架netfilter開發(fā)的,在傳輸層實現(xiàn)連接請求動態(tài)分發(fā)來實現(xiàn)負(fù)載均衡,可將一組服務(wù)器組成一個高可用、高性能的虛擬服務(wù)器。
LVS的重要組件包括兩部分,第一個組件ipvs,位于linux內(nèi)核層;另一個組件叫ipvsadm,位于應(yīng)用層。應(yīng)用層的程序通過調(diào)用ipvsadm實現(xiàn)對ipvs的控制和管理。LVS的核心部分作為單獨的模塊存在,可以動態(tài)加載。LVS根據(jù)用戶要求的負(fù)載均衡算法,動態(tài)地載入對應(yīng)的算法模塊。

圖1 LVS工作原理圖
LVS 集群采用 IP 負(fù)載均衡技術(shù),將用戶請求按照一定策略分發(fā)到后端的 Server 上,從而將一組服務(wù)器構(gòu)成一個高性能的、高可用的虛擬服務(wù)器。在特定的場景下,整個服務(wù)器集群的結(jié)構(gòu)對客戶是透明的,而且無需修改客戶端和服務(wù)器端的程序[2]。
如圖1所示,前端一個稱為負(fù)載均衡器的服務(wù)器,負(fù)責(zé)監(jiān)聽和接受客戶端向VIP發(fā)出的請求,之后通過設(shè)定的調(diào)度算法,選出最佳的一個后端服務(wù)器,再將請求分發(fā)給該后端服務(wù)器。
LVS常用的負(fù)載均衡調(diào)度算法有輪詢、加權(quán)輪詢、最小連接數(shù)、加權(quán)最小連接數(shù)、基于局部性的最少連接、帶復(fù)制的基于局部性最少連接、目標(biāo)地址散列調(diào)度和源地址散列調(diào)度[3]。
LVS 屬于一種軟件負(fù)載均衡方式與硬件負(fù)載均衡方式比如F5 Big-IP LTM,不同之處在于LVS 沒有 Node 和 Profile概念,而且LVS只提供 4 層的負(fù)載均衡,目前無法支持七層負(fù)載均衡。
OSPF(開放最短路徑優(yōu)先)協(xié)議屬于內(nèi)部網(wǎng)關(guān)協(xié)議,運行在一個自主系統(tǒng)內(nèi)部。OSPF 是一種基于鏈路狀態(tài)算法的路由選擇協(xié)議,它可以解決RIP(路由信息協(xié)議)的一些局限性,例如:較小的路由范圍、較長的路由收斂時間和不能反映網(wǎng)絡(luò)特征的度量。而且,OSPF能處理更大的路由表來支持更多的路徑[4]。故目前OSPF常勝任于大型局域網(wǎng)。
OSPF默認(rèn)使用4條負(fù)載均衡鏈路,最多可調(diào)整為支持8條等價鏈路負(fù)載均衡。當(dāng)單條鏈路流量負(fù)載過高時,可以使用OSPF的等價路由負(fù)載均衡的特性,將流量分配到多條鏈路從而大幅增加鏈路帶寬。
目前各類網(wǎng)企業(yè)網(wǎng)絡(luò)系統(tǒng)中,主流的集群架構(gòu)是使用LVS+keeplive方案,即HA主備模式。這種解決方案是使用多臺LVS服務(wù)器部署為主備模式,一臺LVS作為主用進(jìn)行實時負(fù)載均衡的連接調(diào)度,另外一臺或多臺LVS通過VRRP(Virtual Router Redundancy Protocol)協(xié)議,對主用LVS狀態(tài)進(jìn)行實時監(jiān)控,一旦主LVS出現(xiàn)異常,VIP(虛擬IP)等資源將在數(shù)秒內(nèi)切換至某臺備用的LVS調(diào)度器,從而保證了系統(tǒng)的高可靠性和業(yè)務(wù)的連續(xù)性。
但是隨著業(yè)務(wù)量的增長,隨之網(wǎng)絡(luò)流量出現(xiàn)了劇烈增長,HA主備模式的弊端不斷顯現(xiàn),逐漸無法適應(yīng)目前業(yè)務(wù)增長。具體地講,其弊端主要表現(xiàn)為:HA模式在任一時刻僅一臺LVS調(diào)度器提供調(diào)度分發(fā)服務(wù),主用的單節(jié)點LVS負(fù)載過重?zé)o法支撐海量請求連接時,導(dǎo)致主節(jié)點LVS宕機(jī),同時備節(jié)點LVS同樣無法承受這些巨量的請求連接,從而將導(dǎo)致整個集群系統(tǒng)癱瘓。
為了應(yīng)對目前互聯(lián)網(wǎng)企業(yè)中海量的連接請求,可以采用LVS+OSPF集群模式,該方案可使多臺LVS服務(wù)器同時active狀態(tài)。
該方案利用開源的軟路由軟件Quagga[5],在負(fù)載均衡節(jié)點上安裝此軟件,并啟用OSPF協(xié)議,與對接的三層交換機(jī)建立OSPF鄰居,進(jìn)而將VIP地址宣告進(jìn)OSPF域。通過調(diào)整鏈路的cost值,三層交換機(jī)將學(xué)習(xí)到去往VIP的多條等價負(fù)載均衡鏈路。OSPF等價路由特性最多可以支持8臺LVS實現(xiàn)ALL-Active的集群服務(wù)。

圖2 LVS+OSPF集群模式
該技術(shù)具體工作流程如下:
如圖2所示,每臺LVS一個接口與三層交換機(jī)上連,另一個接口下連多臺RS。三層交換機(jī)與LVS安裝的軟路由軟件Quagga分別啟用OSPF,并彼此建立OSPF鄰接關(guān)系。每臺LVS將各自的VIP宣告進(jìn)OSPF域,最終三層交換機(jī)路由表將有多條通往VIP的等價路由。前端LVS與后端RS使用DR(directly routing)模式[6]。
當(dāng)客戶端向VIP發(fā)起一個TCP連接請求,數(shù)據(jù)包必將路由到三層交換機(jī),三層交換機(jī)查詢路由表,通往目的地址VIP有多條等價路徑,通過對源IP地址、源端口、目的IP地址和目的端口進(jìn)行hash,將TCP連接分配到集群中的某一臺前端LVS上,LVS將請求分發(fā)到后端某一臺后端Real server(RS),后端RS完成處理后將數(shù)據(jù)直接返回給用戶,完成整個過程。
該解決方案的好處在于:首先,LVS可以自由橫向擴(kuò)展,最多擴(kuò)展到8臺前端LVS同時active;另外,不存在LVS備機(jī),提高了設(shè)備利用率;最后,高可用性進(jìn)一步提升,某臺LVS宕機(jī)后,其他active接替其處理。
為了驗證該方案可行性和集群性能,將分別進(jìn)行HA模式和多活LVS模式對比實驗測試。本次實驗中,將使用Microsoft Web Application Stress Tool(簡稱WAS),一種WEB壓力測試工具。
實驗環(huán)境,我們利用一臺Dell PowerEdge 710服務(wù)器上進(jìn)行測試,物理機(jī)采用ESXi 64位版本為6.5的系統(tǒng),處理器為8顆Intel Xeon CPU E5620 @240GHZ處理,16GB內(nèi)存。在ESXI中多個虛擬機(jī),虛擬機(jī)中都使用Centos7.2系統(tǒng),每個虛擬機(jī)使用1顆vCPU、2G內(nèi)存。
分別部署HA模式和多活LVS模式,使用WAS分別對集群進(jìn)行Web壓力測試。測試結(jié)束后,WAS會產(chǎn)生一個report,包括對各項性能進(jìn)行了詳細(xì)分析,其中一個重要指標(biāo)是TTLB(Time To First Byte),它反應(yīng)了業(yè)務(wù)的平均響應(yīng)時間。基于報告我們得到實驗結(jié)果,如下圖所示,圖3顯示了當(dāng)連接數(shù)較小的時候,并發(fā)連接數(shù)在100到400時,多活LVS模式與HA模式在TTLB指標(biāo)差別微弱。但是隨著增加連接數(shù),多活LVS模式的TTLB指標(biāo)明顯優(yōu)于HA模式。這是由于多臺LVS服務(wù)器同時分擔(dān)了連接數(shù)的調(diào)度分發(fā)。

圖3 LVS的HA模式與多活模式TTLB指標(biāo)對比
本文首先對LVS和OSPF進(jìn)行了簡要介紹,進(jìn)一步介紹了目前企業(yè)中常用的LVS HA模式的負(fù)載均衡技術(shù),并分析了該技術(shù)的在目前移動互聯(lián)網(wǎng)情況下的弊端,進(jìn)而提出了基于OSPF的LVS集群解決方案-多活LVS集群模式。最后通過實驗,驗證了本文介紹的方案在性能方面的更加優(yōu)越。
[1]wikipedia.https://en.wikipedia.org/wiki/Linux_ Virtual_Server.
[2]騰訊云. https://www.qcloud.com/community/ article/238341.
[3]ZhnagWS.LVSclusterLoaddispatch[EB/OL].[2016-03-10].http://www.linuxvirtualserver.org/zh/lvs4.html.
[4]楊嵐蘭,唐寧九.基于IPv6的OSPF技術(shù)及實現(xiàn)[D].四川大學(xué), 2005.
[5]quagga. http://www.nongnu.org/quagga.
[6]章文崇山. http://www.linuxvirtualserver. org/zh/ lvs3.html.