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