肖 佳,王古城,楊 旭,晁 勇
(1.華夏經(jīng)緯信息科技有限公司 北京100022;2.廣東省海外聯(lián)絡(luò)辦公室 廣東 廣州510080;3.騰訊科技(北京)有限公司 北京100080)
雙機(jī)熱備與負(fù)載均衡的設(shè)計(jì)與實(shí)現(xiàn)
肖 佳1,王古城2,楊 旭3,晁 勇1
(1.華夏經(jīng)緯信息科技有限公司 北京100022;2.廣東省海外聯(lián)絡(luò)辦公室 廣東 廣州510080;3.騰訊科技(北京)有限公司 北京100080)
針對OpenFlow SDN系統(tǒng)中的策略管理模塊提出了一種新型的雙機(jī)熱備和負(fù)載均衡方案,采用了服務(wù)器集群的方式,通過Keepalived和Heartbeat實(shí)現(xiàn)了雙機(jī)熱備模塊,通過Nginx實(shí)現(xiàn)了代理服務(wù)器和負(fù)載均衡模塊。經(jīng)工程驗(yàn)證有效降低了故障概率,系統(tǒng)可用性從97﹪提高至近100﹪。
SDN;策略管理;雙機(jī)熱備;負(fù)載均衡
隨著計(jì)算機(jī)技術(shù)的發(fā)展,一套完備系統(tǒng)對數(shù)據(jù)安全和服務(wù)保障有著極高的要求,數(shù)據(jù)和服務(wù)的重要性已遠(yuǎn)遠(yuǎn)超過硬件本身。為了提高業(yè)務(wù)和數(shù)據(jù)的可用性和可靠性,實(shí)際應(yīng)用中通常采取冗余和容錯(cuò)技術(shù)處理,而雙機(jī)熱備就是其中一種有效的解決方案[1]。雙機(jī)熱備系統(tǒng)一般包含主備兩個(gè)功能單元,正常狀態(tài)下主備兩個(gè)單元均上電工作,但只有主單元輸出有效。在主單元發(fā)生故障的情況下,備單元馬上能夠接替工作,保證系統(tǒng)能夠持續(xù)、安全和可靠的運(yùn)行。
系統(tǒng)故障主要原因可分3類,一是硬件自身故障,二是軟件運(yùn)行故障,三是機(jī)房環(huán)境和其他設(shè)備導(dǎo)致的故障。前兩種故障在主備切換前后不具有關(guān)聯(lián)性,可通過雙機(jī)熱備機(jī)制有效規(guī)避。而第三種故障則具有前后關(guān)聯(lián)性,必須通過定量分析證明雙機(jī)熱備機(jī)制的有效性。運(yùn)用貝葉斯原理[2],假設(shè)合理的故障概率,計(jì)算的結(jié)果如表1所示。
表1 基于貝葉斯原理計(jì)算雙機(jī)熱備故障概率Tab.1 The failure probability calculation of dual-server hotstandby based on baysian theory
經(jīng)計(jì)算所得的結(jié)果約為9﹪,該值在備用服務(wù)器發(fā)生故障時(shí)會成為新的先驗(yàn)概率,遠(yuǎn)低于初始的先驗(yàn)概率20﹪,有效降低了故障概率。綜上,無論是哪種故障原因,雙機(jī)熱備系統(tǒng)均能有效提高系統(tǒng)的可靠性和安全性,因而廣泛應(yīng)用于工業(yè)各個(gè)領(lǐng)域。
隨著業(yè)務(wù)量的提高,網(wǎng)絡(luò)訪問量和數(shù)據(jù)流量快速增長,各個(gè)核心組件的處理能力和計(jì)算強(qiáng)度也相應(yīng)增大,單一的服務(wù)器設(shè)備根本無法承擔(dān)。如果放棄現(xiàn)有設(shè)備去做大量的硬件升級將造成資源浪費(fèi),而負(fù)載均衡技術(shù)可以很好的解決業(yè)務(wù)壓力問題,對硬件的要求和投入也大大降低。如圖1所示,一臺普通服務(wù)器的性能較低,數(shù)臺服務(wù)器組成集群的能力則等同于一臺超級服務(wù)器。負(fù)載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,提供了一種廉價(jià)透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬,增加吞吐量,加強(qiáng)數(shù)據(jù)處理能力,提高網(wǎng)絡(luò)的靈活性和可用性[3]。
圖1 服務(wù)器集群Fig.1 Server cluster
SDN誕生于斯坦福大學(xué)Clean Slate課題[4],典型代表是OpenFlow項(xiàng)目[5],而策略管理是Open-Flow SDN中的重要組成部分。策略管理模塊具有網(wǎng)絡(luò)狀態(tài)收集分析、對策略進(jìn)行管理和數(shù)據(jù)可視化等功能,在整個(gè)OpenFlow SDN架構(gòu)中隸屬于集中控制點(diǎn)Controller,作用極為重要。為了提高策略管理模塊的可用性和安全性,確保其提供可靠的服務(wù),本文提出了一種新型的雙機(jī)熱備和負(fù)載均衡的方案。系統(tǒng)通過web服務(wù)器方式提供對外訪問,代理服務(wù)器和負(fù)載均衡模塊采用Nginx實(shí)現(xiàn),雙機(jī)熱備模塊采用Keepalived[6]和Heartbeat[7]實(shí)現(xiàn)。
本策略管理系統(tǒng)架構(gòu)為B/S式,初始設(shè)計(jì)的架構(gòu)示意圖如圖2所示。管理員在外部通過代理服務(wù)器實(shí)現(xiàn)對于服務(wù)器集群的訪問,兩臺代理服務(wù)器采用雙機(jī)熱備技術(shù)確保系統(tǒng)的可靠性。主從代理服務(wù)器通過心跳機(jī)制報(bào)告自身狀況,并監(jiān)聽另一代理服務(wù)器的心跳信號以檢測對方是否發(fā)生故障。正常狀態(tài)下主、從代理服務(wù)器均正常工作,但僅主服務(wù)器輸出有效。如果檢測到主代理服務(wù)器發(fā)生故障,則從服務(wù)器發(fā)出切換信號,切換輸出;如果檢測到從代理服務(wù)器發(fā)生故障,則將其隔離,避免誤切換。
圖2 策略管理系統(tǒng)初始架構(gòu)示意圖Fig.2 Initail schematic of the policy management system architecture
負(fù)載均衡集群將訪問業(yè)務(wù)分?jǐn)?降低了業(yè)務(wù)壓力,硬件配置要求也大幅降低。而集群訪問的數(shù)據(jù)庫服務(wù)器也通過熱備份,即工作狀態(tài)下實(shí)時(shí)備份保證了業(yè)務(wù)數(shù)據(jù)的安全可靠。
主從代理服務(wù)器的負(fù)載均衡可使用Nginx作為反向代理服務(wù)器來實(shí)現(xiàn),而對外提供虛擬IP的軟件可使用Keepalived或Heartbeat。對于Nginx[8]的服務(wù)可以使用一個(gè)監(jiān)控腳本,用來監(jiān)控提供虛擬IP服務(wù)器的Nginx是否處于正常工作狀態(tài)。業(yè)務(wù)服務(wù)器上的軟件取決于系統(tǒng)提供的業(yè)務(wù),如果是Web服務(wù)器可以使用tomcat。數(shù)據(jù)庫服務(wù)器上可以使用Keepalived或Heartbeat提供數(shù)據(jù)庫公共訪問的接口,數(shù)據(jù)庫可根據(jù)業(yè)務(wù)服務(wù)器的要求決定,如Mysql、SQL server等。
上述構(gòu)思方案實(shí)現(xiàn)了雙機(jī)熱備和負(fù)載均衡,而且負(fù)載均衡集群具有可擴(kuò)展性。但是,對于硬件設(shè)備,諸如服務(wù)器和交換機(jī)的數(shù)量要求較多。鑒于實(shí)驗(yàn)室硬件資源有限,而系統(tǒng)業(yè)務(wù)壓力并不大,因此將圖2中的方案做以精簡,修改為如圖3中的方案。
圖3 策略管理系統(tǒng)精簡架構(gòu)示意圖Fig.3 Simplified schematic of the policy management system architecture
修改后的方案如圖2所示,主代理服務(wù)器、負(fù)載均衡服務(wù)器A和數(shù)據(jù)庫服務(wù)器A合并為一個(gè)主服務(wù)器,從代理服務(wù)器、負(fù)載均衡服務(wù)器B和數(shù)據(jù)庫服務(wù)器B合并為一個(gè)從服務(wù)器。功能和工作流程上與原方案基本一致,減少了硬件的數(shù)量,提高了硬件的使用率。在當(dāng)前業(yè)務(wù)壓力下,功能復(fù)合對于整個(gè)系統(tǒng)穩(wěn)定性的影響可以忽略。
實(shí)現(xiàn)過程按照自頂向下的思路,如圖4所示。首先需要實(shí)現(xiàn)的是可供外部訪問的虛擬IP功能。而雙機(jī)熱備可采用Keepalived和Heartbeat這兩款較為通用的軟件,提高可靠性避免單點(diǎn)故障。具體實(shí)現(xiàn)時(shí)可用Keepalived來提供Web訪問的虛擬IP1,而Heartbeat提供數(shù)據(jù)庫訪問的虛擬IP2,也是通過Web訪問。具體模塊關(guān)系與結(jié)構(gòu)如下圖所示。
如圖4所示,主從服務(wù)器對外提供一個(gè)公共的訪問端口,即Keepalived提供的虛擬IP1服務(wù)。外部訪問通過Nginx實(shí)現(xiàn)對Tomcat服務(wù)的訪問,并可實(shí)現(xiàn)負(fù)載均衡機(jī)制,在訪問量較大的情況下可有效提高系統(tǒng)性能。Heartbeat用于提供數(shù)據(jù)庫訪問的虛擬IP2,而Mysql數(shù)據(jù)庫自帶的Master/Slave模式可以實(shí)現(xiàn)數(shù)據(jù)在主從服務(wù)器上的實(shí)時(shí)同步,當(dāng)主數(shù)據(jù)庫出問題時(shí)可以通過Heartbeat服務(wù)檢測,將主數(shù)據(jù)庫服務(wù)轉(zhuǎn)移至從數(shù)據(jù)庫,從而提高數(shù)據(jù)庫服務(wù)的可靠性。在實(shí)際環(huán)境搭建時(shí), Keepalived的配置問題短期內(nèi)沒有解決,因而對方案做了一定的精簡,僅采用了Heartbeat提供外部訪問的虛擬IP,通過運(yùn)行監(jiān)控腳本,實(shí)現(xiàn)最初規(guī)劃。
圖4 系統(tǒng)模塊關(guān)系示意圖Fig.4 Schematic of the system module relationship
本系統(tǒng)雙機(jī)熱備方案的工作流程分為如下4種不同的情況:1)正常工作狀態(tài);2)主服務(wù)器宕機(jī),切換到備用服務(wù)器;3)主服務(wù)器恢復(fù)正常,切換回主服務(wù)器;4)正在運(yùn)行的服務(wù)軟件異常。
下面將針對不同情況分別描述。
1)正常工作狀態(tài)流程。
如圖5所示,主服務(wù)器通過Heartbeat向外提供虛擬IP服務(wù),從服務(wù)器的Heartbeat不斷發(fā)送心跳信息;Nginx提供Web服務(wù)器的公共訪問端口,Nginx將外部訪問任務(wù)通過Tomcat的訪問地址,分配給主從服務(wù)器上的Tomcat;Tomcat根據(jù)本機(jī)上的Mysql數(shù)據(jù)庫內(nèi)容,對外提供Web服務(wù);同時(shí),兩臺機(jī)器上的Mysql數(shù)據(jù)庫實(shí)時(shí)互備,實(shí)現(xiàn)數(shù)據(jù)同步;監(jiān)控腳本不斷檢測各個(gè)軟件的工作狀態(tài),通過服務(wù)端口判斷是否正常。
圖5 監(jiān)控腳本工作流程圖Fig.5 Work fow chart of monitor script
2)主服務(wù)器宕機(jī)時(shí)工作流程
從服務(wù)器一段時(shí)間內(nèi)沒有探測到主服務(wù)器,認(rèn)為主服務(wù)宕機(jī)并接管虛擬IP,但同時(shí)繼續(xù)不斷發(fā)送心跳信號探測主服務(wù)器;從服務(wù)器上的Nginx提供外部訪問端口,并將任務(wù)分配給本機(jī)的 Tomcat(主服務(wù)器已經(jīng)宕機(jī)),Tomcat訪問本機(jī)Mysql數(shù)據(jù)庫并向外提供Web服務(wù)。從服務(wù)上的腳本不斷監(jiān)控著各個(gè)軟件的工作情況。
3)主服務(wù)器恢復(fù)正常的工作流程
主服務(wù)器開機(jī)后,各種軟件相繼啟動,從服務(wù)器探測到主服務(wù)器,將虛擬IP交還給主服務(wù)器,并繼續(xù)不斷發(fā)送心跳信息;Nginx提供Web服務(wù)器的公共訪問端口,Nginx將訪問任務(wù)通過Tomcat的訪問地址,分配給主從服務(wù)器上的Tomcat;Tomcat根據(jù)本機(jī)上的Mysql數(shù)據(jù)庫內(nèi)容,對外提供Web服務(wù);同時(shí),兩臺機(jī)器上的Mysql數(shù)據(jù)庫實(shí)時(shí)互備,實(shí)現(xiàn)數(shù)據(jù)同步;監(jiān)控腳本不斷檢測各個(gè)軟件的工作狀態(tài),監(jiān)控腳本的工作流程如圖5所示。
4)正在運(yùn)行的服務(wù)軟件異常時(shí)工作流程
根據(jù)監(jiān)控腳本的工作流程可知,Heartbeat和Tomcat出現(xiàn)異常時(shí),直接重啟服務(wù)。若Mysql或Nginx出現(xiàn)異常時(shí),首先關(guān)閉依賴其才能提供服務(wù)的Heartbeat或Tomcat,然后重啟Mysql或Nginx。若恢復(fù)正常,則開啟Heartbeat和Tomcat;若依然存在故障,則不啟動,并將錯(cuò)誤寫入日志。上述過程中若主服務(wù)器上的Heartbeat關(guān)閉或異常,則由從服務(wù)器接管虛擬IP;若兩臺服務(wù)器中出現(xiàn)Tomcat關(guān)閉,則正在服務(wù)Nginx不會分配給其任務(wù),由另一臺Tomcat提供服務(wù)。
以平均無故障工作時(shí)間(MTTF)和平均修復(fù)時(shí)間(MTTR)來度量單機(jī)系統(tǒng)和雙機(jī)熱備系統(tǒng)的可用性,計(jì)算公式為,實(shí)際測試結(jié)果如表2所示。
表2 單機(jī)系統(tǒng)和雙機(jī)熱備系統(tǒng)的比較Tab.2 Comparison of single system and dual-server hotstandby system
如表2所示,雙機(jī)熱備可以非常有效的降低系統(tǒng)故障率,提高系統(tǒng)可用性。
本策略管理系統(tǒng)通過Heartbeat軟件實(shí)現(xiàn)了雙機(jī)熱備機(jī)制,而Keepalived軟件也可實(shí)現(xiàn)此功能。Heartbeat還向外提供了虛擬IP,負(fù)載均衡需要通過這個(gè)虛擬IP將訪問任務(wù)下發(fā)到后面的服務(wù)器集群。Nginx的作用就是將訪問任務(wù)平均分派給后面的服務(wù)器,本系統(tǒng)采用2臺Tomcat服務(wù)器實(shí)現(xiàn)負(fù)載均衡。Mysql可以通過簡單的配置來實(shí)現(xiàn)雙機(jī)數(shù)據(jù)互備的目標(biāo)。
本系統(tǒng)的雙機(jī)熱備評價(jià)指標(biāo)主要有以下3點(diǎn):
1)虛擬IP的切換速度:本技術(shù)應(yīng)能在主服務(wù)器出現(xiàn)異常時(shí),快速將業(yè)務(wù)切換到從服務(wù)器上,切換的時(shí)間應(yīng)該是在穩(wěn)定的前提下越短越好。
2)對于服務(wù)訪問的中斷時(shí)間:雖然說雙機(jī)熱備技術(shù)可以提供不間斷的服務(wù),但是對于切換時(shí)的短時(shí)間服務(wù)中斷還是難以避免的,所以應(yīng)將服務(wù)中斷時(shí)間控制的越短越好。
經(jīng)實(shí)測,以上兩項(xiàng)時(shí)間和可控制在200 s以內(nèi)。
3)系統(tǒng)可用性:雙機(jī)熱備技術(shù)應(yīng)能有效提升系統(tǒng)的可靠性,檢測結(jié)果顯示,系統(tǒng)可用性由97.342﹪提升至99.996﹪。
[1]覃慶努,魏學(xué)業(yè),于蓉蓉,等.基于雙機(jī)聯(lián)合故障檢測的雙機(jī)熱備系統(tǒng)可靠性和安全性研究 [J].系統(tǒng)工程與電子技術(shù),2011(12):2776-2780.QIN Qing-nu,WEI Xue-ye,YU Rong-rong,et al.Reliability and security study of dual computer hot-standby system based on dual computer joint fault detection[J].Systems Engineering and Electronics,2011(12):2776-2780.
[2]Nate Silver.The Signal and the Noise[M].New York:Penguin Press,2012.
[3]百度百科.負(fù)載均衡 [EB/OL].[2014-10-20].http://baike.baidu.com/view/51184.htm.
[4]百度百科.SDN[EB/OL].[2014-10-20].http://baike.baidu.com/view/1311159.htm?fr=aladdin.
[5]Nick McKeown.OpenFlow:Enabling Innovation in Campus Networks[J].Sigcomm,2008:69-74.
[6]百度百科.Keepalived[EB/OL].[2014-10-20].http://baike.baidu.com/view/4175422.htm?fr=aladdin.
[7]百度百科.Heartbeat集群配置 [EB/OL].[2014-10-20].http://wenku.baidu.com/linkurl=3ikoxX7G42UjIPjWRjmEBz4H_bts faYvsmBlkoUJjtaVFFJMBXjqa7LA0iwnUlYcYcWSsSXBr3UP ikL3rVEf-SAM2vW-Fm6DEsrqJp6mlLvny.
[8]Nginx官網(wǎng).Nginx[EB/OL].[2014-10-10].http://wiki.nginx.org/.
Design and implementation of dual-server hot-standby and loading-balancing scheme
XIAO Jia1,WANG Gu-cheng2,YANG Xu3,CHAO Yong1
(1.China Information Technology Coporation,LTD.,Beijing 100022,China;2.Guangdong Province Overseas Liaison Office, Guangzhou 510080,China;3.Tencent Technology Coporation,LTD.,Beijing 100080,China)
Aiming at policy management module belonging to Open-Flow SDN system,this paper presents a new scheme of dual-server hot-standby and loading-balancing.The approach of server cluster is adopted.The dual-server hot-standby module is realized byKeepalived and Heartbeat.The proxy server and load-balancing module is achieved by Nginx.Failure probability is reduced effectively proved by engineering implementation and the feasibility of this systemis improved from 97﹪to nearly 100﹪.
SDN;policy management;dual-server hot-standby;loading-balancing
TN91
:A
:1674-6236(2015)18-0176-04
2014-11-29稿件編號:201411249
肖 佳 (1983—),男,安徽蕪湖人,博士研究生,工程師。研究方向:數(shù)據(jù)挖據(jù)、復(fù)雜網(wǎng)絡(luò)和信息安全。