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