高性能T比特路由器高可用性的研究與實(shí)現(xiàn)
對(duì)于運(yùn)行在骨干網(wǎng)中的路由器,冷備份顯然不適用。因?yàn)?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/路由器">路由器運(yùn)行過程中不可能定時(shí)關(guān)閉數(shù)據(jù)庫來備份數(shù)據(jù),更不可能在路由器出現(xiàn)故障時(shí)再備份數(shù)據(jù)。因此采用熱備份。鑒于要備份的數(shù)據(jù)量不大,不必采取雙機(jī)鏡像和共享磁盤陣列方式。在本設(shè)計(jì)中采用了一種新型的數(shù)據(jù)熱備份方式:將需要備份的數(shù)據(jù)以日志文件的形式存 儲(chǔ),通過TCP傳輸方法將文件轉(zhuǎn)化為數(shù)據(jù)流由主用主控板備份到備用主控板上,實(shí)現(xiàn)實(shí)時(shí)備份。面向連接的TCP 傳輸可靠且速度快,丟失文件的概率極小。
本文引用地址:http://butianyuan.cn/article/82810.htm(2)切換延時(shí)問題
路由器主控系統(tǒng)出現(xiàn)故障時(shí),要能夠?qū)τ脩敉该鞯剡M(jìn)行主備切換,就要實(shí)現(xiàn)系統(tǒng)間的無縫切換,減少切換過程中的時(shí)延并降低數(shù)據(jù)丟失率。無縫切換是一種完美的切換,包括快速切換和平滑切換兩方面??焖偾袚Q意味著低延遲,平滑切換就是低的數(shù)據(jù)包丟失率,無縫切換是兩者的結(jié)合,即低延遲和低丟失率。對(duì)于快速切換,要求在單板掉鏈之前完成切換過程,使備用主控板接替主用主控板的工作,保證路由器中的各個(gè)流程正常工作不受主控故障的影響,使網(wǎng)絡(luò)正常運(yùn)行。對(duì)于平滑切換,有兩點(diǎn)要求:一是切換時(shí),主備用主控板上的數(shù)據(jù)庫是一致的;二是在主備用數(shù)據(jù)庫一致的基礎(chǔ)上,備用主控板啟用后能在規(guī)定的時(shí)間內(nèi)完成備份數(shù)據(jù)的導(dǎo)入。所謂規(guī)定的時(shí)間,也包含在切換的總時(shí)間內(nèi),切換時(shí)間=發(fā)現(xiàn)故障時(shí)間+啟用切換時(shí)間+故障接管時(shí)間。
(3)故障監(jiān)測機(jī)制
系統(tǒng)中的兩塊主控板,經(jīng)過主備協(xié)商后確定主備地位,一塊為Master狀態(tài),控制整個(gè)系統(tǒng);另一塊為Slave狀態(tài),處于備份狀態(tài)。兩塊主控板之間通過UDP傳輸心跳報(bào)文交互自身的狀態(tài)數(shù)據(jù),以識(shí)別主控的軟/硬件故障。路由器正常運(yùn)行時(shí),主用和備用主控板之間定時(shí)發(fā)送keepalive報(bào)文進(jìn)行心跳探測,報(bào)文內(nèi)容中包含了自身的狀態(tài)信息。備用主控板在定時(shí)器到期前未收到來自主用主控板的keepalive報(bào)文就認(rèn)為主用主控板失效,進(jìn)入主備切換,備用主控板成為新主用,自動(dòng)接管原主用主控板的服務(wù)程序,繼續(xù)提供服務(wù)。原主用主控板從故障中恢復(fù)或被更換后,會(huì)重新發(fā)送協(xié)商報(bào)文,與新主用主控板取得聯(lián)系,成為新備用主控板,而不必再進(jìn)行一次切換,節(jié)省了系統(tǒng)資源。
2.2 高可用性模塊的設(shè)計(jì)及實(shí)現(xiàn)
在主控軟件容錯(cuò)系統(tǒng)設(shè)計(jì)中,采用了兩塊主控板掛載八塊單板。兩塊主控板之間通過面向無連接的UDP通信機(jī)制交互心跳數(shù)據(jù),通過面向連接的TCP通信機(jī)制傳輸備份文件數(shù)據(jù)流;主控板與單板之間通過高速以太網(wǎng)連接。圖1給出了該系統(tǒng)的總體結(jié)構(gòu)圖。
按照功能的不同,在設(shè)計(jì)方案中將高可用性模塊劃分為三個(gè)子模塊:AS通信模塊、AS系統(tǒng)監(jiān)控模塊和AS keepalive模塊,如圖2所示。
AS通信模塊負(fù)責(zé)主控系統(tǒng)上高可用性模塊與系統(tǒng)數(shù)據(jù)維護(hù)模塊(SYSDATA)和板間通信模塊(BDCOM)間的通信、數(shù)據(jù)備份和TCP傳輸。
AS監(jiān)控模塊負(fù)責(zé)主控軟件各個(gè)系統(tǒng)進(jìn)程的監(jiān)控、維護(hù)、管理等核心功能。當(dāng)某個(gè)軟件占CPU使用百分比過大時(shí),則認(rèn)為該主控軟件運(yùn)行不正常,根據(jù)該軟件的運(yùn)行規(guī)則和重要性選擇恢復(fù)策略,重啟該進(jìn)程或者進(jìn)入主備切換。
AS keepalive模塊負(fù)責(zé)兩塊主控板之間的主備協(xié)商,確定主控板的主備地位;在路由器正常運(yùn)行過程中,定時(shí)向?qū)Ψ街骺匕灏l(fā)送keepalive報(bào)文進(jìn)行心跳探測;針對(duì)網(wǎng)絡(luò)擁塞可能導(dǎo)致的丟包以及CPU排隊(duì)處理多線程時(shí)可能超時(shí)處理keepalive報(bào)文造成的主用主控板“假死”現(xiàn)象,采用再協(xié)商(Re- negotiation)技術(shù),在超時(shí)收不到對(duì)方主控板發(fā)送的keepalive報(bào)文時(shí)不直接認(rèn)為對(duì)方主控板故障,而是進(jìn)行一次退避,與對(duì)方發(fā)送協(xié)商報(bào)文進(jìn)行再協(xié)商。再協(xié)商與初始化過程中的主備協(xié)商不完全相同。Re-negotiation技術(shù)與通常采用的單純固定不變的心跳探測技術(shù)相比,可以更好地提高系統(tǒng)心跳環(huán)境的適應(yīng)能力和穩(wěn)定性,更好地保證系統(tǒng)的高可用性。
評(píng)論