摘 要: 介紹了LVS集群技術(shù)的原理、框架。以CentOS操作系統(tǒng)為基礎(chǔ),描述了LVS集群的配置及實現(xiàn)過程,并對構(gòu)建的集群系統(tǒng)進(jìn)行了配置、功能和性能測試。測試結(jié)果表明,所構(gòu)建的集群系統(tǒng)穩(wěn)定、可靠,具有高可用性、可擴(kuò)展性和負(fù)載均衡的特性。
關(guān)鍵詞: LVS;集群;教學(xué)資源庫;負(fù)載均衡;高可用性
隨著互聯(lián)網(wǎng)規(guī)模的快速擴(kuò)張,人們訪問互聯(lián)網(wǎng)的業(yè)務(wù)流量呈爆炸式的增長,網(wǎng)絡(luò)服務(wù)器的并發(fā)響應(yīng)能力面臨嚴(yán)峻的考驗;同時,更多更復(fù)雜的Web事務(wù)處理也對服務(wù)器的性能提出了更高的要求。單臺的計算機(jī)提供的服務(wù)已不能勝任如此艱巨的任務(wù),而集群技術(shù)的出現(xiàn),則有效地解決了這一問題。
根據(jù)集群的功能、結(jié)構(gòu)和技術(shù)的不同,可分為高性能集群、高可用性集群和負(fù)載均衡集群,其中負(fù)載均衡是集群技術(shù)的核心,是決定集群性能的重要因素[1]。在集群技術(shù)的發(fā)展過程中,出現(xiàn)了許多種不同的集群技術(shù)實現(xiàn)方案,而Linux作為一種開源的操作系統(tǒng)及基于LVS實現(xiàn)的Linux集群技術(shù),則更多地得到了人們的關(guān)注。
1 LVS集群技術(shù)
1.1 LVS簡介
LVS[2](Linux Virtual Server,Linux虛擬服務(wù)器)是Linux操作系統(tǒng)上的一個負(fù)載均衡軟件,是在1998年由國防科技大學(xué)的章文嵩博士主持的一個在Linux操作系統(tǒng)上開發(fā)的開源集群項目[3]。目前技術(shù)發(fā)展的比較成熟,已成為Linux內(nèi)核的一部分。
1.2 LVS模型
LVS提供的可伸縮網(wǎng)絡(luò)服務(wù)的框架如圖1所示。IPVS軟件提供三種IP負(fù)載均衡技術(shù),KTCPVS實現(xiàn)了基于內(nèi)容請求分發(fā)的應(yīng)用層交換??梢岳肔VS框架實現(xiàn)高可伸縮的、高可用的Web、FTP、Mail等網(wǎng)絡(luò)服務(wù),開發(fā)高可用的電子商務(wù)應(yīng)用。
LVS在兩個層次上很好實現(xiàn)了負(fù)載均衡,基于網(wǎng)絡(luò)層的IPVS和應(yīng)用層的KTCPVS內(nèi)容請求分發(fā)技術(shù),三種負(fù)載均衡技術(shù)分別為網(wǎng)絡(luò)地址轉(zhuǎn)換模式VS/NAT、IP隧道模式VS/TUN和直接路由模式VS/DR。
1.3 LVS的通用體系結(jié)構(gòu)[4]
在圖2所示中,負(fù)載調(diào)度器是集群調(diào)度的核心,是客戶機(jī)通過虛擬IP訪問集群系統(tǒng)的入口。多個真實服務(wù)器組成真實提供服務(wù)的服務(wù)器池,真實服務(wù)器的數(shù)目可根據(jù)需要動態(tài)添加,它們共享一個存儲區(qū)域。整個系統(tǒng)對外呈現(xiàn)一個虛擬服務(wù)器,擁有虛擬IP,用戶通過虛擬IP訪問負(fù)載調(diào)度器后,根據(jù)采用的負(fù)載均衡算法將用戶的請求調(diào)度到一個真實的內(nèi)部服務(wù)器進(jìn)行處理,多個服務(wù)器可以并行執(zhí)行用戶的請求,增加集群系統(tǒng)的整體吞吐率[5]。
CentOS5默認(rèn)安裝LVS,采用Piranha圖形界面進(jìn)行配置管理,跳動進(jìn)程Pulse是Piranha的主進(jìn)程,它負(fù)責(zé)發(fā)送和檢測節(jié)點(diǎn)之間的心跳(heartbeat)[6-7],兩個節(jié)點(diǎn)周期性地發(fā)送heartbeat信息到網(wǎng)絡(luò)上,指出當(dāng)前節(jié)點(diǎn)是活動(active)的還是非活動(inactive)的。當(dāng)LVS開始工作時,LVS進(jìn)程通過調(diào)用ipvsadm程序配置和維護(hù)內(nèi)核中的IPVS路由表,為每一個真實服務(wù)器啟動一個nanny進(jìn)程。nanny進(jìn)程可以查看服務(wù)器上配置服務(wù)的狀態(tài),在服務(wù)故障時,通知LVS進(jìn)程,LVS進(jìn)程即可調(diào)用ipvsadm刪除IPVS中對應(yīng)的路由表項。
當(dāng)backup router通過心跳通道(heartbeat channel)沒有接收到active router的回應(yīng)時,將調(diào)用send_arp函數(shù)重新建立虛擬IP到備份結(jié)點(diǎn)MAC的映射,然后通過發(fā)送命令使active router中的LVS進(jìn)程關(guān)閉,在備份結(jié)點(diǎn)中啟動LVS進(jìn)程以恢復(fù)和配置服務(wù)器之間的連接。
2 基于LVS的集群技術(shù)在Linux內(nèi)核2.6上的實現(xiàn)[7-8]
2.1 平臺應(yīng)用背景
我院的共享型專業(yè)教學(xué)資源庫平臺建設(shè)是在近幾年學(xué)校的數(shù)字化校園建設(shè)成果的基礎(chǔ)上,依托校園網(wǎng)構(gòu)建一個功能完整、形式多樣、內(nèi)容豐富的、基于Web的共享型專業(yè)教學(xué)資源庫軟件平臺,構(gòu)筑開放的教學(xué)資源環(huán)境,最大限度地滿足學(xué)生自主學(xué)習(xí)的需要。為向系統(tǒng)用戶(教師和學(xué)生)提供流暢、不間斷、實時高速度的訪問服務(wù),采用了開源Linux操作系統(tǒng)CentOS5.4,結(jié)合基于LVS的集群技術(shù),構(gòu)建系統(tǒng)平臺服務(wù)器。
2.2 系統(tǒng)拓?fù)?/strong>
平臺系統(tǒng)以虛擬IP向外提供服務(wù),圖3中①、②為負(fù)載均衡主、從調(diào)度器,通過交換網(wǎng)絡(luò)與真實服務(wù)器③、④、⑤、⑥連接,平臺系統(tǒng)共享內(nèi)部存儲⑦和⑧。節(jié)點(diǎn)①和②負(fù)責(zé)把客戶請求轉(zhuǎn)發(fā)到Real Server上,當(dāng)節(jié)點(diǎn)①負(fù)載均衡器(load balance)不正常工作時,節(jié)點(diǎn)①的資源和VIP(虛擬IP)自動切換到節(jié)點(diǎn)②,整個系統(tǒng)的調(diào)度策略采用LVS/DR。共享型專業(yè)教學(xué)資源庫平臺拓?fù)淙鐖D3所示。
2.4 集群系統(tǒng)配置過程
在CentOS5.4中已集成了LVS,只需在系統(tǒng)安裝時選擇相應(yīng)的套件即可,省去了繁瑣的內(nèi)核編譯過程。
(1)按拓?fù)湟?,配置相?yīng)服務(wù)器的網(wǎng)絡(luò)參數(shù),并安裝所需的piranha軟件包。
#rpm-ivh piranha-0.8.4-7.el5.i386.rpm
#/etc/init.d/piranha-gui restart
(2)訪問http://125.219.112.X:3636,進(jìn)行集群的Web界面配置。
配置包括GLOBAL SETTINGS、REDUNDANCY和VIRTUAL SERVERS,配置文檔可參考文獻(xiàn)[7],配置完成后,信息保存到/etc/sysconfig/ha/lvs.cf文件。
?。?)把主調(diào)度器上的配置文件保存到備份調(diào)度器。
?。?)在主、從調(diào)度器上分別啟動piranha主進(jìn)程。
#service pulse restart
3 性能測試
在平臺服務(wù)器的集群功能配置完成后,為了驗證集群配置的正確性,以及是否滿足負(fù)載均衡、高可用性的要求,同時對于Web站點(diǎn)的服務(wù)器的響應(yīng)時間和吞吐量性能表現(xiàn),做以下測試:
3.1 集群的調(diào)度測試
在圖4中,在3臺真實的Web服務(wù)器和1臺的真實FTP服務(wù)器中放置不同的首頁面,利用另一臺測試機(jī)訪問并隨機(jī)刷新http://125.219.112.X-1或ftp://125.219.112.X-1,查看輸出結(jié)果,測試用戶的訪問能否被調(diào)度到真實的服務(wù)器上。
驗證結(jié)果:共進(jìn)行了100次隨機(jī)訪問,其中80次訪問Web服務(wù),20次訪問FTP服務(wù),統(tǒng)計不同頁面的出現(xiàn)次數(shù)如表2所示。
3.2 集群可用性測試
模擬宕機(jī)情形,關(guān)閉主調(diào)度器,測試主、從調(diào)度器能否正常切換。
測試結(jié)果:在LVS工作過程中,關(guān)閉主調(diào)度器①,通過使用ping命令檢查已不能與主調(diào)度器①連通,用3.1節(jié)中方法重新測試調(diào)度,結(jié)果相同,說明在主調(diào)度器宕機(jī)過程中,從調(diào)度器已接管所有資源管理功能,等到主調(diào)度器重啟完成,再度進(jìn)行測試,仍然得到3.1節(jié)中相同的結(jié)果,說明在可用性測試中,集群的主、從調(diào)度器正常平滑切換。
3.3 壓力負(fù)載測試
JMeter[9]是Apache組織的開放源代碼項目,它是功能和性能測試的工具。對JMeter進(jìn)行測試時,使用了分布式測試技術(shù),使用6臺測試PC,其中一臺機(jī)器作為Controller,其他的機(jī)器為Agent,在所有的機(jī)器上運(yùn)行JMeter-server.bat文件。在所有的機(jī)器上設(shè)置線程數(shù)(模擬并發(fā)用戶數(shù)),經(jīng)過統(tǒng)計,系統(tǒng)的平均響應(yīng)時間和吞吐量如表3所示。
本文使用CentOS5操作系統(tǒng),采用基于LVS/DR調(diào)度的集群技術(shù)建立了共享型專業(yè)教學(xué)資源庫平臺,并對構(gòu)建的集群進(jìn)行了配置、功能和性能測試。系統(tǒng)使用以來一直穩(wěn)定、快速、高效地向校園網(wǎng)絡(luò)用戶提供服務(wù),從未出現(xiàn)過宕機(jī)或斷網(wǎng)故障。系統(tǒng)的應(yīng)用結(jié)果表明,所構(gòu)建的集群系統(tǒng)具有高可用性、可擴(kuò)展性及負(fù)載均衡的特性,是安全和穩(wěn)定的集群系統(tǒng)。
集群系統(tǒng)是復(fù)雜的,可通過不同的配置改變進(jìn)行優(yōu)化[10],最大限度地提升集群的性能,這也是下一步的研究重點(diǎn)。
參考文獻(xiàn)
[1] 涂俊英.一種改進(jìn)的Linux集群系統(tǒng)負(fù)載均衡算法[J].微電子學(xué)與計算機(jī),2012,31(3):106-109.
[2] Xu Yang, Xie Xiaoyao, Xia Daoxun. Research and design on LVS cluster system[M/CD]. 2009.
[3] Linux服務(wù)器集群系統(tǒng)[EB/OL].http://www.linuxvirtualserver.org/zh/lvs1.html,2003.
[4] 劉惠.基于LVS集群動態(tài)調(diào)度的研究與實現(xiàn)[D].安徽:安徽大學(xué),2012.
[5] 王東煜,張佳樂.基于Linux集群系統(tǒng)的并行通信性能研究[J].電子技術(shù)應(yīng)用,2012,38(6):111-113.
[6] 張永立,胡杰,張根寶.Linux集群心跳檢測方法的研究與實現(xiàn)[J].化工自動化及儀表,2010(6):82-84.
[7] CentOS 5 Document[EB/OL]. http://www.centos.org/docs/5/html/5.2/2008.5.
[8] 張帆,袁道華,葉振,等.基于Linux的服務(wù)器集群系統(tǒng)設(shè)計及實現(xiàn)[J].計算機(jī)工程與應(yīng)用,2006(5),127-131.
[9] Apache Jmeter[EB/OL]. http://jmeter.apache.org/,2013.
[10] 劉玉艷,沈明玉.一種LVS負(fù)載均衡調(diào)度算法WLC的改進(jìn)[J].制造業(yè)自動化,2010,32(9):187-191.