摘 要: 針對高性能T比特核心路由器,,探討如何通過高可用性" title="高可用性">高可用性模塊的設計保證路由器的高可靠性,確保主處理器的癱瘓不影響網(wǎng)絡的正常運行,。
關鍵詞: 高可用性 主備切換 心跳探測
隨著計算機網(wǎng)絡技術的高速發(fā)展,,網(wǎng)絡設備的安全可靠越來越受到人們的重視。路由器的高可用性成為網(wǎng)絡運營商們關注的焦點,。高可用性是指路由器的不間斷運行能力,,即持續(xù)操作能力。它要求路由器本身所采用的硬件和軟件系統(tǒng)具有穩(wěn)定可靠的性能,,并且可以從軟件設計入手,,實現(xiàn)一個高可用性的軟件產(chǎn)品。
本文以高性能T比特核心路由器為實例,,探討如何通過高可用性模塊的設計保證網(wǎng)絡的高可靠性,,做到處理器故障不會影響網(wǎng)絡的連通性,更不會導致整個網(wǎng)絡的癱瘓,,從根本上解決數(shù)據(jù)中心的風險問題,。
1 高可用性技術
高可用性是指可持續(xù)的、具有一致性和完整性的數(shù)據(jù)訪問,。高可用性系統(tǒng)通過提高服務器可靠性,、磁盤可靠性、應用程序" title="應用程序">應用程序可靠性達到高可用性的要求,??梢酝ㄟ^共享磁盤陣列提高磁盤可靠性,使用冗余網(wǎng)絡提高網(wǎng)絡可靠性,,使用合作的服務器提高服務器可靠性,,通過應用程序的探測與有效恢復提高應用程序的可靠性。
路由器作為計算機網(wǎng)絡的核心設備,,其高可用性至關重要,。在硬件方面,路由器要有一個很好的體系結構及各種冗余非常完善,,關鍵部件如路由引擎和交換矩陣要有冗余,。在軟件方面,,其自身要強壯,另外在遇到更換硬件,、系統(tǒng)升級,、增加板卡和改變鏈路等網(wǎng)絡調(diào)整時,軟件要有能力保證整個網(wǎng)絡業(yè)務不受局部調(diào)整的影響,,讓整個網(wǎng)絡體現(xiàn)出非常高的可用性,,保證路由引擎進行不丟包的切換。主引擎發(fā)生故障,,切換到副引擎時不丟包,,平滑切換,否則硬件的冗余就沒有意義,,是假冗余,。另外還要保證平穩(wěn)重啟" title="重啟">重啟。當路由重啟時,,由此產(chǎn)生的路由重新計算和網(wǎng)絡范圍的路由更新會消耗掉處理資源,,并有可能出現(xiàn)黑洞或瞬時轉(zhuǎn)發(fā)循環(huán)形式的非預期網(wǎng)絡行為。而平穩(wěn)重啟會避免這種情況的發(fā)生,。
根據(jù)以上要求,,本文提出了一種適用于T比特路由器的主控軟件容錯系統(tǒng)設計方案。采用硬件冗余與軟件容錯相結合,、熱備與雙工" title="雙工">雙工相結合的工作方式代替?zhèn)鹘y(tǒng)的容錯熱備份方案,,并根據(jù)該方案設計實現(xiàn)了高可用性模塊。測試結果表明,,采用該設計方案的主控軟件系統(tǒng)具有很好的容錯性能和故障恢復能力,,能夠滿足T比特路由器對主控軟件系統(tǒng)的高可用性要求。
2 基于高性能T比特路由器的主控軟件容錯系統(tǒng)設計
2.1 主控軟件容錯系統(tǒng)設計中的基本問題
基于容錯需求的考慮,,當主控系統(tǒng)出現(xiàn)軟硬件故障時路由器仍需要正常工作,,故硬件配置采用1+1冗余設計,配備主用(Active)和備用(Standby)兩塊主控板" title="主控板">主控板,,構建雙主控熱備容錯系統(tǒng),。當主用主控板發(fā)生故障,系統(tǒng)自動進行主備切換,,由備用主控板接替主用板工作,,保證業(yè)務的正常運行。當主用模塊發(fā)生嚴重故障或主用復位時,,將觸發(fā)自動倒換方式,,及時倒換到備用板。這種1+1冗余設計可擴展到N+1冗余設計,。
整個切換過程對用戶透明,,需要考慮的重點和實現(xiàn)的難點在于主備系統(tǒng)間數(shù)據(jù)庫一致性問題,、平滑切換技術的實現(xiàn)和故障監(jiān)測機制。
(1)數(shù)據(jù)庫一致性問題
路由器主控板上記錄了系統(tǒng)實時運行數(shù)據(jù),,因此正常工作中需要進行實時的系統(tǒng)數(shù)據(jù)備份,以保證主用和備用上的數(shù)據(jù)庫一致,,否則在主備切換時,,備用不能正常接替主用。針對該問題,,在高可用性模塊的設計中,,采用了一種雙工與熱備相結合的不完全熱備設計。需要備份的數(shù)據(jù)主要是系統(tǒng)數(shù)據(jù)庫中的路由表項和轉(zhuǎn)發(fā)表表項,。
雙工與熱備相結合的不完全設計是指:雙主控板上都運行心跳探測程序用于故障探測,,主用主控板上運行路由器正常工作所需要的所有應用程序,而備用主控板上運行部分重要應用程序,。這些程序正常工作時與主用主控板上的程序有相同的輸入數(shù)據(jù),,但處理結果并不輸出。這樣的設計保證了路由器出現(xiàn)故障進行切換時低耗時,,減輕了需要備份的數(shù)據(jù)量,,既不像完全雙工工作方式那樣浪費資源,又避免了熱備工作方式的很多不足,,性能明顯優(yōu)于純粹的熱備或者雙工方式,。
數(shù)據(jù)備份有冷備份和熱備份兩種。冷備份是在數(shù)據(jù)庫已經(jīng)正常關閉的情況下,,進行完整數(shù)據(jù)庫的備份,,是最快和最安全的方法。冷備份的最大問題是必須在數(shù)據(jù)庫關閉的情況下進行,,當數(shù)據(jù)庫處于打開狀態(tài)時,,執(zhí)行數(shù)據(jù)庫文件系統(tǒng)備份是無效的。
熱備份是在數(shù)據(jù)庫運行時,,采用archivelog mode方式備份數(shù)據(jù),。有雙機鏡像和共享磁盤陣列兩種方案。雙機鏡像方案可選擇將主數(shù)據(jù)庫服務器上的表,、文件,、數(shù)據(jù)庫或全部內(nèi)容通過專用連接通道鏡像到備用服務器上,優(yōu)點是簡單,、便宜,,缺點是降低系統(tǒng)資源。共享磁盤陣列方案為兩臺主機共用一個磁盤陣列,,優(yōu)點是不降低系統(tǒng)性能,,為目前較為流行的主流技術,,但要求磁盤陣列具有較高的可靠性。
對于運行在骨干網(wǎng)中的路由器,,冷備份顯然不適用,。因為路由器運行過程中不可能定時關閉數(shù)據(jù)庫來備份數(shù)據(jù),更不可能在路由器出現(xiàn)故障時再備份數(shù)據(jù),。因此采用熱備份,。鑒于要備份的數(shù)據(jù)量不大,不必采取雙機鏡像和共享磁盤陣列方式,。在本設計中采用了一種新型的數(shù)據(jù)熱備份方式:將需要備份的數(shù)據(jù)以日志文件的形式存儲,,通過TCP傳輸方法將文件轉(zhuǎn)化為數(shù)據(jù)流由主用主控板備份到備用主控板上,實現(xiàn)實時備份,。面向連接的TCP傳輸可靠且速度快,,丟失文件的概率極小。
(2)切換延時問題
路由器主控系統(tǒng)出現(xiàn)故障時,,要能夠?qū)τ脩敉该鞯剡M行主備切換,,就要實現(xiàn)系統(tǒng)間的無縫切換,減少切換過程中的時延并降低數(shù)據(jù)丟失率,。無縫切換是一種完美的切換,,包括快速切換和平滑切換兩方面??焖偾袚Q意味著低延遲,,平滑切換就是低的數(shù)據(jù)包丟失率,無縫切換是兩者的結合,,即低延遲和低丟失率,。對于快速切換,要求在單板掉鏈之前完成切換過程,,使備用主控板接替主用主控板的工作,,保證路由器中的各個流程正常工作不受主控故障的影響,使網(wǎng)絡正常運行,。對于平滑切換,,有兩點要求:一是切換時,主備用主控板上的數(shù)據(jù)庫是一致的,;二是在主備用數(shù)據(jù)庫一致的基礎上,,備用主控板啟用后能在規(guī)定的時間內(nèi)完成備份數(shù)據(jù)的導入。所謂規(guī)定的時間,,也包含在切換的總時間內(nèi),,切換時間=發(fā)現(xiàn)故障時間+啟用切換時間+故障接管時間。
(3)故障監(jiān)測機制
系統(tǒng)中的兩塊主控板,,經(jīng)過主備協(xié)商后確定主備地位,,一塊為Master狀態(tài),,控制整個系統(tǒng);另一塊為Slave狀態(tài),,處于備份狀態(tài),。兩塊主控板之間通過UDP傳輸心跳報文交互自身的狀態(tài)數(shù)據(jù),以識別主控的軟/硬件故障,。路由器正常運行時,,主用和備用主控板之間定時發(fā)送keepalive報文進行心跳探測,報文內(nèi)容中包含了自身的狀態(tài)信息,。備用主控板在定時器到期前未收到來自主用主控板的keepalive報文就認為主用主控板失效,,進入主備切換,,備用主控板成為新主用,,自動接管原主用主控板的服務程序,繼續(xù)提供服務,。原主用主控板從故障中恢復或被更換后,,會重新發(fā)送協(xié)商報文,與新主用主控板取得聯(lián)系,,成為新備用主控板,,而不必再進行一次切換,節(jié)省了系統(tǒng)資源,。
2.2 高可用性模塊的設計及實現(xiàn)
在主控軟件容錯系統(tǒng)設計中,,采用了兩塊主控板掛載八塊單板。兩塊主控板之間通過面向無連接的UDP通信機制交互心跳數(shù)據(jù),,通過面向連接的TCP通信機制傳輸備份文件數(shù)據(jù)流,;主控板與單板之間通過高速以太網(wǎng)連接。圖1給出了該系統(tǒng)的總體結構圖,。
?
按照功能的不同,,在設計方案中將高可用性模塊劃分為三個子模塊:AS通信模塊、AS系統(tǒng)監(jiān)控模塊和AS keepalive模塊,,如圖2所示,。
AS通信模塊負責主控系統(tǒng)上高可用性模塊與系統(tǒng)數(shù)據(jù)維護模塊(SYSDATA)和板間通信模塊(BDCOM)間的通信、數(shù)據(jù)備份和TCP傳輸,。
AS監(jiān)控模塊負責主控軟件各個系統(tǒng)進程的監(jiān)控,、維護、管理等核心功能,。當某個軟件占CPU使用百分比過大時,,則認為該主控軟件運行不正常,根據(jù)該軟件的運行規(guī)則和重要性選擇恢復策略,,重啟該進程或者進入主備切換,。
AS keepalive模塊負責兩塊主控板之間的主備協(xié)商,,確定主控板的主備地位;在路由器正常運行過程中,,定時向?qū)Ψ街骺匕灏l(fā)送keepalive報文進行心跳探測,;針對網(wǎng)絡擁塞可能導致的丟包以及CPU排隊處理多線程時可能超時處理keepalive報文造成的主用主控板“假死”現(xiàn)象,采用再協(xié)商(Re-negotiation)技術,,在超時收不到對方主控板發(fā)送的keepalive報文時不直接認為對方主控板故障,,而是進行一次退避,與對方發(fā)送協(xié)商報文進行再協(xié)商,。再協(xié)商與初始化過程中的主備協(xié)商不完全相同,。Re-negotiation技術與通常采用的單純固定不變的心跳探測技術相比,可以更好地提高系統(tǒng)心跳環(huán)境的適應能力和穩(wěn)定性,,更好地保證系統(tǒng)的高可用性,。
2.3 AS系統(tǒng)設計的特點
(1)整個AS系統(tǒng)的設計采用層次與模塊相結合的結構模型,克服了軟,、硬件分離和脫節(jié)的問題,,提高系統(tǒng)的靈活性和可移植性。模型的每一層均可以看作是一個相對獨立的系統(tǒng),。在每一層中又按照系統(tǒng)功能,,劃分不同的功能模塊。各個模塊之間獨立工作,,完成不同的功能,,降低故障的概率。
(2)硬軟件相結合實現(xiàn)主控板的熱備份容錯,。
(3)采用熱備與雙工相結合的設計,,系統(tǒng)切換時間短,平均切換時間為0.8秒,。
(4)切換過程中對用戶透明,,無需重新啟動主控板,對故障板支持熱插拔,,方便維修,。
(5)系統(tǒng)工作效率高。整個系統(tǒng)中,,各個子模塊分工合作,,數(shù)據(jù)備份及傳輸由AS通信模塊通過消息隊列和TCP傳輸完成。主控系統(tǒng)軟件的監(jiān)控和部分軟件的出錯重啟由AS監(jiān)控模塊完成,。AS keepalive模塊用UDP傳輸進行主備間的心跳監(jiān)測通信,,且在交互的心跳報文中包含了當前主用和備用主控板的狀態(tài)數(shù)據(jù)等,用于更新狀態(tài)機,避免盲目切換和無效切換,。
(6)本設計中數(shù)據(jù)庫實時更新,,且一旦備用主控板收到TCP傳輸?shù)膫浞菸募蛯氲奖镜財?shù)據(jù)庫中,而不是出現(xiàn)故障進行主備切換時再從數(shù)據(jù)備份文件中讀取數(shù)據(jù),。因此不會產(chǎn)生數(shù)據(jù)不同步的問題,,而且大大地減少了切換時的工作量,加快了切換速度,。
本文研究了T比特核心路由器的主控軟件結構,,設計了高可用性模塊。該模塊采用熱備份模式,,通過對主控板的硬件冗余設置,,配合軟件實現(xiàn)的數(shù)據(jù)熱備份及心跳探測等技術消除T比特路由器中主控單點故障。該模塊應用于T比特路由器主控軟件系統(tǒng)中,,當主用主控板發(fā)生故障時,,可以快速、準確,、平滑地進行主備切換,,從而提高了系統(tǒng)的穩(wěn)定性和可靠性,,最終實現(xiàn)路由器的高可用性,。
參考文獻
1 James Aweya.On the design of IP routers Part 1:Router architectures.Journal of Systems Architecture 46(2000):483~511
2 使用熱備份進行分時恢復.http://www.eygle.com/ha/Use.Hot.Backup.Recover.Day.by.Day.htm
3 雙機熱備指南.http://www.ha999.com/index.htm
4 申志冰,羅 宇.利用Heartbeat實現(xiàn)Linux上的雙機熱備份系統(tǒng).計算機工程與應用,,2002,;(19)