肖 佳,王古城,楊 旭,晁 勇
(1.華夏經緯信息科技有限公司 北京100022;2.廣東省海外聯絡辦公室 廣東 廣州510080;3.騰訊科技(北京)有限公司 北京100080)
雙機熱備與負載均衡的設計與實現
肖 佳1,王古城2,楊 旭3,晁 勇1
(1.華夏經緯信息科技有限公司 北京100022;2.廣東省海外聯絡辦公室 廣東 廣州510080;3.騰訊科技(北京)有限公司 北京100080)
針對OpenFlow SDN系統中的策略管理模塊提出了一種新型的雙機熱備和負載均衡方案,采用了服務器集群的方式,通過Keepalived和Heartbeat實現了雙機熱備模塊,通過Nginx實現了代理服務器和負載均衡模塊。經工程驗證有效降低了故障概率,系統可用性從97﹪提高至近100﹪。
SDN;策略管理;雙機熱備;負載均衡
隨著計算機技術的發展,一套完備系統對數據安全和服務保障有著極高的要求,數據和服務的重要性已遠遠超過硬件本身。為了提高業務和數據的可用性和可靠性,實際應用中通常采取冗余和容錯技術處理,而雙機熱備就是其中一種有效的解決方案[1]。雙機熱備系統一般包含主備兩個功能單元,正常狀態下主備兩個單元均上電工作,但只有主單元輸出有效。在主單元發生故障的情況下,備單元馬上能夠接替工作,保證系統能夠持續、安全和可靠的運行。
系統故障主要原因可分3類,一是硬件自身故障,二是軟件運行故障,三是機房環境和其他設備導致的故障。前兩種故障在主備切換前后不具有關聯性,可通過雙機熱備機制有效規避。而第三種故障則具有前后關聯性,必須通過定量分析證明雙機熱備機制的有效性。運用貝葉斯原理[2],假設合理的故障概率,計算的結果如表1所示。

表1 基于貝葉斯原理計算雙機熱備故障概率Tab.1 The failure probability calculation of dual-server hotstandby based on baysian theory
經計算所得的結果約為9﹪,該值在備用服務器發生故障時會成為新的先驗概率,遠低于初始的先驗概率20﹪,有效降低了故障概率。綜上,無論是哪種故障原因,雙機熱備系統均能有效提高系統的可靠性和安全性,因而廣泛應用于工業各個領域。
隨著業務量的提高,網絡訪問量和數據流量快速增長,各個核心組件的處理能力和計算強度也相應增大,單一的服務器設備根本無法承擔。如果放棄現有設備去做大量的硬件升級將造成資源浪費,而負載均衡技術可以很好的解決業務壓力問題,對硬件的要求和投入也大大降低。如圖1所示,一臺普通服務器的性能較低,數臺服務器組成集群的能力則等同于一臺超級服務器。負載均衡建立在現有網絡結構之上,提供了一種廉價透明的方法擴展網絡設備和服務器的帶寬,增加吞吐量,加強數據處理能力,提高網絡的靈活性和可用性[3]。

圖1 服務器集群Fig.1 Server cluster
SDN誕生于斯坦福大學Clean Slate課題[4],典型代表是OpenFlow項目[5],而策略管理是Open-Flow SDN中的重要組成部分。策略管理模塊具有網絡狀態收集分析、對策略進行管理和數據可視化等功能,在整個OpenFlow SDN架構中隸屬于集中控制點Controller,作用極為重要。為了提高策略管理模塊的可用性和安全性,確保其提供可靠的服務,本文提出了一種新型的雙機熱備和負載均衡的方案。系統通過web服務器方式提供對外訪問,代理服務器和負載均衡模塊采用Nginx實現,雙機熱備模塊采用Keepalived[6]和Heartbeat[7]實現。
本策略管理系統架構為B/S式,初始設計的架構示意圖如圖2所示。管理員在外部通過代理服務器實現對于服務器集群的訪問,兩臺代理服務器采用雙機熱備技術確保系統的可靠性。主從代理服務器通過心跳機制報告自身狀況,并監聽另一代理服務器的心跳信號以檢測對方是否發生故障。正常狀態下主、從代理服務器均正常工作,但僅主服務器輸出有效。如果檢測到主代理服務器發生故障,則從服務器發出切換信號,切換輸出;如果檢測到從代理服務器發生故障,則將其隔離,避免誤切換。

圖2 策略管理系統初始架構示意圖Fig.2 Initail schematic of the policy management system architecture
負載均衡集群將訪問業務分攤,降低了業務壓力,硬件配置要求也大幅降低。而集群訪問的數據庫服務器也通過熱備份,即工作狀態下實時備份保證了業務數據的安全可靠。
主從代理服務器的負載均衡可使用Nginx作為反向代理服務器來實現,而對外提供虛擬IP的軟件可使用Keepalived或Heartbeat。對于Nginx[8]的服務可以使用一個監控腳本,用來監控提供虛擬IP服務器的Nginx是否處于正常工作狀態。業務服務器上的軟件取決于系統提供的業務,如果是Web服務器可以使用tomcat。數據庫服務器上可以使用Keepalived或Heartbeat提供數據庫公共訪問的接口,數據庫可根據業務服務器的要求決定,如Mysql、SQL server等。
上述構思方案實現了雙機熱備和負載均衡,而且負載均衡集群具有可擴展性。但是,對于硬件設備,諸如服務器和交換機的數量要求較多。鑒于實驗室硬件資源有限,而系統業務壓力并不大,因此將圖2中的方案做以精簡,修改為如圖3中的方案。

圖3 策略管理系統精簡架構示意圖Fig.3 Simplified schematic of the policy management system architecture
修改后的方案如圖2所示,主代理服務器、負載均衡服務器A和數據庫服務器A合并為一個主服務器,從代理服務器、負載均衡服務器B和數據庫服務器B合并為一個從服務器。功能和工作流程上與原方案基本一致,減少了硬件的數量,提高了硬件的使用率。在當前業務壓力下,功能復合對于整個系統穩定性的影響可以忽略。
實現過程按照自頂向下的思路,如圖4所示。首先需要實現的是可供外部訪問的虛擬IP功能。而雙機熱備可采用Keepalived和Heartbeat這兩款較為通用的軟件,提高可靠性避免單點故障。具體實現時可用Keepalived來提供Web訪問的虛擬IP1,而Heartbeat提供數據庫訪問的虛擬IP2,也是通過Web訪問。具體模塊關系與結構如下圖所示。
如圖4所示,主從服務器對外提供一個公共的訪問端口,即Keepalived提供的虛擬IP1服務。外部訪問通過Nginx實現對Tomcat服務的訪問,并可實現負載均衡機制,在訪問量較大的情況下可有效提高系統性能。Heartbeat用于提供數據庫訪問的虛擬IP2,而Mysql數據庫自帶的Master/Slave模式可以實現數據在主從服務器上的實時同步,當主數據庫出問題時可以通過Heartbeat服務檢測,將主數據庫服務轉移至從數據庫,從而提高數據庫服務的可靠性。在實際環境搭建時, Keepalived的配置問題短期內沒有解決,因而對方案做了一定的精簡,僅采用了Heartbeat提供外部訪問的虛擬IP,通過運行監控腳本,實現最初規劃。

圖4 系統模塊關系示意圖Fig.4 Schematic of the system module relationship
本系統雙機熱備方案的工作流程分為如下4種不同的情況:1)正常工作狀態;2)主服務器宕機,切換到備用服務器;3)主服務器恢復正常,切換回主服務器;4)正在運行的服務軟件異常。
下面將針對不同情況分別描述。
1)正常工作狀態流程。
如圖5所示,主服務器通過Heartbeat向外提供虛擬IP服務,從服務器的Heartbeat不斷發送心跳信息;Nginx提供Web服務器的公共訪問端口,Nginx將外部訪問任務通過Tomcat的訪問地址,分配給主從服務器上的Tomcat;Tomcat根據本機上的Mysql數據庫內容,對外提供Web服務;同時,兩臺機器上的Mysql數據庫實時互備,實現數據同步;監控腳本不斷檢測各個軟件的工作狀態,通過服務端口判斷是否正常。

圖5 監控腳本工作流程圖Fig.5 Work fow chart of monitor script
2)主服務器宕機時工作流程
從服務器一段時間內沒有探測到主服務器,認為主服務宕機并接管虛擬IP,但同時繼續不斷發送心跳信號探測主服務器;從服務器上的Nginx提供外部訪問端口,并將任務分配給本機的 Tomcat(主服務器已經宕機),Tomcat訪問本機Mysql數據庫并向外提供Web服務。從服務上的腳本不斷監控著各個軟件的工作情況。
3)主服務器恢復正常的工作流程
主服務器開機后,各種軟件相繼啟動,從服務器探測到主服務器,將虛擬IP交還給主服務器,并繼續不斷發送心跳信息;Nginx提供Web服務器的公共訪問端口,Nginx將訪問任務通過Tomcat的訪問地址,分配給主從服務器上的Tomcat;Tomcat根據本機上的Mysql數據庫內容,對外提供Web服務;同時,兩臺機器上的Mysql數據庫實時互備,實現數據同步;監控腳本不斷檢測各個軟件的工作狀態,監控腳本的工作流程如圖5所示。
4)正在運行的服務軟件異常時工作流程
根據監控腳本的工作流程可知,Heartbeat和Tomcat出現異常時,直接重啟服務。若Mysql或Nginx出現異常時,首先關閉依賴其才能提供服務的Heartbeat或Tomcat,然后重啟Mysql或Nginx。若恢復正常,則開啟Heartbeat和Tomcat;若依然存在故障,則不啟動,并將錯誤寫入日志。上述過程中若主服務器上的Heartbeat關閉或異常,則由從服務器接管虛擬IP;若兩臺服務器中出現Tomcat關閉,則正在服務Nginx不會分配給其任務,由另一臺Tomcat提供服務。
以平均無故障工作時間(MTTF)和平均修復時間(MTTR)來度量單機系統和雙機熱備系統的可用性,計算公式為,實際測試結果如表2所示。

表2 單機系統和雙機熱備系統的比較Tab.2 Comparison of single system and dual-server hotstandby system
如表2所示,雙機熱備可以非常有效的降低系統故障率,提高系統可用性。
本策略管理系統通過Heartbeat軟件實現了雙機熱備機制,而Keepalived軟件也可實現此功能。Heartbeat還向外提供了虛擬IP,負載均衡需要通過這個虛擬IP將訪問任務下發到后面的服務器集群。Nginx的作用就是將訪問任務平均分派給后面的服務器,本系統采用2臺Tomcat服務器實現負載均衡。Mysql可以通過簡單的配置來實現雙機數據互備的目標。
本系統的雙機熱備評價指標主要有以下3點:
1)虛擬IP的切換速度:本技術應能在主服務器出現異常時,快速將業務切換到從服務器上,切換的時間應該是在穩定的前提下越短越好。
2)對于服務訪問的中斷時間:雖然說雙機熱備技術可以提供不間斷的服務,但是對于切換時的短時間服務中斷還是難以避免的,所以應將服務中斷時間控制的越短越好。
經實測,以上兩項時間和可控制在200 s以內。
3)系統可用性:雙機熱備技術應能有效提升系統的可靠性,檢測結果顯示,系統可用性由97.342﹪提升至99.996﹪。
[1]覃慶努,魏學業,于蓉蓉,等.基于雙機聯合故障檢測的雙機熱備系統可靠性和安全性研究 [J].系統工程與電子技術,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]百度百科.負載均衡 [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官網.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—),男,安徽蕪湖人,博士研究生,工程師。研究方向:數據挖據、復雜網絡和信息安全。