【摘要】本文提出一種靈活的、可動態(tài)裝載、基于組件模塊化的對稱式主/主型高可用性熱備份技術(shù)的系統(tǒng)軟件框架,大大地擴展了高可用性計算能力,使得在ATCA高級電信計算平臺上的所有組件能夠協(xié)同、高效地保證系統(tǒng)服務(wù)的高可用性。
【關(guān)鍵詞】ATCA高可用性對稱式主/主型動態(tài)選舉機制分布式
一、概述
基于ATCA的高級電信計算架構(gòu)的系統(tǒng),雖然在硬件設(shè)計上就考慮了系統(tǒng)的高可用性要求,但是要達到電信級99.999%的高可用性,除了硬件設(shè)計上采用冗余設(shè)計模型,軟件設(shè)計上同樣要采用一些提高系統(tǒng)可用性的措施來保證系統(tǒng)的高可用性。大多數(shù)的系統(tǒng)不能很好的處理由于系統(tǒng)失效所引起的運行系統(tǒng)的配置改變,而需要通過頻繁的強制性的故障點檢測機制來保障系統(tǒng)的可用性,這樣勢必影響運行任務(wù)的效率,甚至要通過完全重新啟動相關(guān)的系統(tǒng)服務(wù)或者整個機器才能使系統(tǒng)重新正常工作。共享會話信息和狀態(tài)信息的冗余硬件設(shè)備使得物理鏈路的冗余成為可能。動態(tài)選舉算法可以消除人為干預(yù)的需要,這樣就可以及時地完成失效恢復(fù)。本文中將展示一種靈活的、可動態(tài)裝載、基于組件模塊化的高可用性框架,大大地擴展了高可用性計算能力,使得在ATCA高級電信計算平臺上的所有設(shè)備能夠協(xié)同、高效地保證系統(tǒng)服務(wù)的高可用性,并且允許根據(jù)系統(tǒng)的實際屬性和應(yīng)用的需要來適配和調(diào)整設(shè)計。
二、技術(shù)方法介紹
目前在基于ATCA高級電信計算架構(gòu)的系統(tǒng)中對待這種失效問題通常采取的解決方案就是失效容忍或間隙恢復(fù)法(Gap Recovery)和反轉(zhuǎn)恢復(fù)法(Rollback Recovery)。然而,大多數(shù)系統(tǒng)并不能有效地解決由于失效問題引起的運行系統(tǒng)配置改變,而需要完全重新啟動必要的系統(tǒng)服務(wù)甚至是整個機器設(shè)備。高可用性力圖通過預(yù)防措施避免意外的失效問題發(fā)生。高可用性措施目前主要是集中解決單節(jié)點服務(wù)的連續(xù)正常工作的情況,而我們需要將這些努力進一步擴展到基于ATCA高級電信計算架構(gòu)的整個系統(tǒng)環(huán)境的所有共同協(xié)作的設(shè)備節(jié)點和服務(wù)上。
有很多種實現(xiàn)高可用性服務(wù)的技術(shù),其中主要包括主/從型熱備份技術(shù)、不對稱式主/主型熱備份技術(shù)和對稱式主/主型熱備份技術(shù)。主/從型熱備份技術(shù)遵循上述失效模型。各個服務(wù)任務(wù)的狀態(tài)都定期的保存到某些穩(wěn)定的共享存儲介質(zhì)中或通過網(wǎng)絡(luò)發(fā)送給相關(guān)的熱備份組件。當(dāng)服務(wù)失效時,熱備份的系統(tǒng)設(shè)備就可以根據(jù)所得到系統(tǒng)最近的或當(dāng)前狀態(tài)信息接管系統(tǒng)服務(wù)。這種方式會引起由于系統(tǒng)恢復(fù)或者系統(tǒng)根據(jù)獲得的舊的系統(tǒng)備份狀態(tài)信息回滾到系統(tǒng)從前的某個狀態(tài)下而導(dǎo)致的短暫服務(wù)中斷。不對稱式主/主型熱備份技術(shù)比主/從型熱備份技術(shù)更加有效的提高系統(tǒng)的可靠性、可用性和可服務(wù)性。在這個模型下,多個設(shè)備節(jié)點提供相同的服務(wù),但是缺乏協(xié)作,即當(dāng)一個主用設(shè)備在故障發(fā)生的情況下,其他主用設(shè)備接管服務(wù)來保證服務(wù)連續(xù)可用從而提高系統(tǒng)不間斷服務(wù)能力,然而由于在所有參與互備份的設(shè)備間缺乏協(xié)作能力,不能智能的同步主用設(shè)備間的狀態(tài)和控制信息,而使得其僅僅適合有限的應(yīng)用場合。對稱式主/主型熱備份技術(shù)通常由兩個或多個運行相同服務(wù)的設(shè)備協(xié)同工作來保障系統(tǒng)提供連續(xù)服務(wù)能力。這種技術(shù)可以使用分布式的控制機制或擴展虛擬同步機制來維護一套公共的全局性的系統(tǒng)狀態(tài)信息。
本文中闡述的方法可以擴展基于ATCA高級電信計算架構(gòu)的系統(tǒng)的高可用性能力,從而確保系統(tǒng)有能力在熱倒換硬件組件的時候,可以動態(tài)地感知系統(tǒng)配置。為了使基于ATCA架構(gòu)平臺下的系統(tǒng)更具有未來的挑戰(zhàn)性,本文提出了一種對稱式主/主型高可用性熱備份技術(shù)的系統(tǒng)軟件框架,從而很好的克服上文中提到的其他方法所存在的系統(tǒng)服務(wù)可用性低的弊端。
三、技術(shù)方案設(shè)計與實現(xiàn)
為了提供這種適用于基于ATCA架構(gòu)的主/主型熱備份高可用性系統(tǒng),本文提出了一種靈活的、模塊化的和可動態(tài)裝卸載的高可用性組件框架模型。主要由四個層次構(gòu)成:通訊驅(qū)動層、成員組通訊系統(tǒng)層、分布式控制接口層和應(yīng)用服務(wù)層。
其中最底層的通訊驅(qū)動層提供各種適配底層硬件所對應(yīng)的網(wǎng)絡(luò)協(xié)議模塊,可以為上層提供單播和組播消息服務(wù)能力,同時也提供相關(guān)的失效檢測機制。成員組通訊系統(tǒng)層提供組成員管理、外部故障檢測和可靠的組播機制和成員組內(nèi)的組播消息算法。分布式控制接口層建立一個成員組系統(tǒng)和應(yīng)用服務(wù)層之間的通道,為應(yīng)用服務(wù)層提供更易于調(diào)用成員組通訊系統(tǒng)層的一個標(biāo)準(zhǔn)服務(wù)接口以及分布式控制、狀態(tài)機控制、checkpoint模塊、消息模塊和動態(tài)選舉機制模塊等豐富功能。應(yīng)用服務(wù)層包括各種為用戶定制的服務(wù)應(yīng)用程序,例如系統(tǒng)監(jiān)控模塊、文件服務(wù)模塊、日志服務(wù)模塊和時間服務(wù)模塊。
這個高可用性框架本身就是基于組件化的獨立模塊組成。各個邏輯層之間以及各個模塊之間都是通過消息服務(wù)模塊提供的同步和異步消息機制來進行通訊的。每一層都可以由其他提供不同特性具有相同服務(wù)功能的模塊層所替換。這種框架允許軟件模塊使用共享庫、動態(tài)庫或插件技術(shù)來實現(xiàn)模塊的替換。下面詳細介紹各個層。
(1)通訊驅(qū)動層
目前ATCA高級電信計算架構(gòu)系統(tǒng)支持許多種網(wǎng)絡(luò)技術(shù),例如Ethernet、Infiniband、StarFabric、PCI Express、RapidIO等多種交換協(xié)議。本文的高可用性框架可以支持ATCA硬件提供商所支持的各種網(wǎng)絡(luò)技術(shù)以及現(xiàn)存的協(xié)議標(biāo)準(zhǔn)。利用通訊驅(qū)動層可以在高可用節(jié)點設(shè)備之間建立起有效的通訊機制,以便使這些設(shè)備通過分布式控制接口層來更好的為上層應(yīng)用服務(wù)提供網(wǎng)絡(luò)通訊服務(wù)。
使用通訊驅(qū)動層來適配不同的網(wǎng)絡(luò)技術(shù)并抽象出統(tǒng)一的通訊API應(yīng)用程序接口,可以提高系統(tǒng)的互換性和互操作性,這一概念并非新東西。
消息服務(wù)模塊指的是緩存的消息傳遞系統(tǒng),可以提供相同節(jié)點上不同任務(wù)或不同節(jié)點間消息隊列。一條消息隊列允許多對一的通訊。當(dāng)消息隊列關(guān)閉時,如果消息還沒有使用,消息服務(wù)模塊必須保留消息到使用完為止。即當(dāng)主用活動節(jié)點失效后,備用節(jié)點負責(zé)接收并處理相應(yīng)的消息,直到備用節(jié)點倒換生效后,消息服務(wù)模塊才徹底刪除此消息。
此外,目前通訊驅(qū)動層僅僅提供處理原始數(shù)據(jù)報文的接口,高層協(xié)議主要在成員組通訊系統(tǒng)層來進行管理的。這一層主要借鑒和參考RMIX框架模型,提供動態(tài)的、支持系統(tǒng)異構(gòu)性(諸如字節(jié)序和高級協(xié)議等)、可重新配置的通訊框架。
(2)成員組通訊系統(tǒng)層
成員組通訊系統(tǒng)層包含所有必要的協(xié)議和業(yè)務(wù),這些協(xié)議和業(yè)務(wù)都是服務(wù)于主/主型熱備份高可用性框架,并且通過分布式控制接口層為上層應(yīng)用服務(wù)提供組成員間通訊服務(wù)的,同時也適合于主/從型熱備份高可用性系統(tǒng)等其他高可用性系統(tǒng)模型中為多個熱備份的從設(shè)備提供狀態(tài)信息一致性復(fù)制服務(wù)。成員組通訊系統(tǒng)層也提供組成員管理、外部故障監(jiān)測、可靠的組播機制和成員組內(nèi)的組播消息算法。本層有許多第三方中間件和開源中間件項目可供參考,例如SA論壇中AIS應(yīng)用接口文中AMF高可用性管理框架就可以作為參考模型。由于不是本文的重點,故不作詳細討論。
(3)分布式控制接口層
分布式控制接口層所支持的應(yīng)用程序接口API要基于應(yīng)用特性實現(xiàn)。確定性對稱式應(yīng)用可以使用內(nèi)存、文件、狀態(tài)機和數(shù)據(jù)庫的接口實現(xiàn),不確定性非對稱式應(yīng)用可以使用分布式控制接口和遠程過程調(diào)用(RPC)接口實現(xiàn)。這些應(yīng)用屬性完全基于成員組通訊系統(tǒng)層的要求,例如任務(wù)調(diào)度的批處理程序在一個集群系統(tǒng)中的所有主用的活動節(jié)點上運行,并且維護著一個全局性的狀態(tài)信息。每個活動節(jié)點都會以相同的順序接收這些狀態(tài)的改變并維護一致的狀態(tài)信息。任務(wù)調(diào)度請求信息送達到這些活動節(jié)點中的任意一個,導(dǎo)致了狀態(tài)信息改變,其他的活動節(jié)點也將以相同的順序接收到這些請求。利用控制狀態(tài)機機制,保證任務(wù)調(diào)度程序的流程對于成員組通訊系統(tǒng)中的每個節(jié)點都是確定的。當(dāng)流程結(jié)束時,檢查在系統(tǒng)中的狀態(tài)信息是否符合仲裁規(guī)則,若符合,則更新信息到分布式虛擬同步數(shù)據(jù)庫,否則認為狀態(tài)更新信息無效。
本系統(tǒng)實現(xiàn)高可用性的關(guān)鍵在于通過本文中提到的動態(tài)選舉機制來實現(xiàn)主用節(jié)點間的狀態(tài)同步功能或主用節(jié)點間的倒換功能,從而保證了系統(tǒng)的持續(xù)不間斷的工作。下面詳細介紹一下動態(tài)選舉算法。為了確保系統(tǒng)的高可用性順利執(zhí)行,每個節(jié)點必須維護相當(dāng)數(shù)量的本地狀態(tài)信息。這些狀態(tài)信息通常稱為會話信息。會話信息只不過是一組數(shù)據(jù),通過對這些信息的學(xué)習(xí)、解析和基于指定選舉規(guī)則的計算,從而選舉出系統(tǒng)主用活動節(jié)點,保證系統(tǒng)服務(wù)的連續(xù)高可用性。先介紹一下算法中會用到的一些基本概念和關(guān)鍵字。
①節(jié)點的初始化狀態(tài)視圖,表明算法開始時的所有節(jié)點狀態(tài)信息。所有節(jié)點看到的初始化視圖信息都是一致的。用W表示。②歷史主用活動節(jié)點,系統(tǒng)在沒有新的會話信息更新前根據(jù)動態(tài)選舉機制選出的主用活動節(jié)點。③根據(jù)給定節(jié)點q產(chǎn)生的會話更新信息選舉出的主用活動節(jié)點。初始時,所有的節(jié)點項會話信息等于上述中初始化視圖信息W。④節(jié)點的不明確會話信息集合。這些是所有節(jié)點的不明確會話信息集合列表。⑤會話序列號,初始為0,用于對新會話的計數(shù)。⑥布爾型標(biāo)志狀態(tài)位表示本節(jié)點當(dāng)前狀態(tài)是否是主用活動節(jié)點狀態(tài)。
無論何時系統(tǒng)的拓撲連接發(fā)生改變,新視圖中的節(jié)點就會開始兩輪消息確認流程。節(jié)點在第一輪消息時,交換所有節(jié)點的內(nèi)部狀態(tài)信息,主要發(fā)送各自節(jié)點的不明確會話集合信息和歷史主用活動節(jié)點信息等。如果當(dāng)前節(jié)點根據(jù)動態(tài)選舉算法的仲裁規(guī)則準(zhǔn)備試圖成為當(dāng)前視圖會話的主用活動節(jié)點,就要發(fā)送第二輪消息。如果第二輪消息被所有節(jié)點成功接收到,那么當(dāng)前節(jié)點就成功成為主用活動節(jié)點。如果第二輪消息沒有成功接收到,可能是由于其他連接的變化,那么試圖成為主用活動節(jié)點的節(jié)點就再次形成不明確狀態(tài),重新開始新的一輪選舉。節(jié)點的解析規(guī)則允許節(jié)點在拓撲連接變化而被隔離后,再次和其他節(jié)點取得連接時,其依然能夠根據(jù)解析規(guī)則來更新內(nèi)部狀態(tài)信息,并且節(jié)點能夠?qū)W習(xí)到連接中斷期間的會話信息。
一旦算法完成了同其他節(jié)點的狀態(tài)信息同步之后,算法開始決定當(dāng)前節(jié)點是否成為當(dāng)前視圖狀態(tài)信息下的新主用活動節(jié)點。主要是通過節(jié)點從所有接收到的不明確會話信息中學(xué)習(xí)各節(jié)點的狀態(tài)更新信息,然后根據(jù)會話狀態(tài)更新信息的解析規(guī)則,就可以最終判斷出當(dāng)前節(jié)點是否能夠成為當(dāng)前視圖狀態(tài)下的主用活動節(jié)點。主用活動節(jié)點的確定機制主要是依賴于動態(tài)選舉原理來完成。即選舉結(jié)果主要是根據(jù)歷史主用活動節(jié)點和所有的不明確會話信息集合依據(jù)選舉策略算法規(guī)則來決定當(dāng)前節(jié)點是否可以成為新的視圖信息下的新主用活動節(jié)點。如果多個主用節(jié)點同時聲明自己要成為主用活動節(jié)點,那么就要根據(jù)其他信息來決定誰將成為新主用活動節(jié)點。習(xí)慣上,業(yè)內(nèi)是根據(jù)節(jié)點的IP地址或節(jié)點名稱來選擇,通常選擇節(jié)點IP地址小的或節(jié)點名稱的字典排序靠前的節(jié)點成為最終的主用活動節(jié)點。
(4)應(yīng)用服務(wù)層
本文中涉及的高可用性框架由于底層設(shè)計方面的靈活和強大功能,故可以提供很多不同類型的應(yīng)用,支持各種不同的計算場合的需要。這些應(yīng)用包括:系統(tǒng)監(jiān)控服務(wù)、文件系統(tǒng)服務(wù)、日志服務(wù)、名字服務(wù)、時間服務(wù)等用戶定制的各種服務(wù)。
四、總結(jié)
本文提出的靈活性、動態(tài)化、基于組件式的高可用性系統(tǒng)模型可以極大地提高系統(tǒng)的無故障持續(xù)工作能力,充分滿足基于ATCA架構(gòu)系統(tǒng)的電信級99.999%的高可靠性和高可用性要求,大大優(yōu)于傳統(tǒng)集中式單點控制型的高可用系統(tǒng)可持續(xù)服務(wù)能力。其中可動態(tài)裝卸載的通訊驅(qū)動層模塊設(shè)計技術(shù)允許系統(tǒng)無縫地實現(xiàn)對不同硬件設(shè)備提供商所提供的網(wǎng)絡(luò)技術(shù)和相關(guān)的底層網(wǎng)絡(luò)協(xié)議的支持,大大提高了系統(tǒng)的互通性和互操作性,降低系統(tǒng)集成成本。特別是上文中介紹的動態(tài)選舉機制和checkpoint模塊、分布式控制模塊以及狀態(tài)機控制模塊共同完成主用節(jié)點間的狀態(tài)同步功能和主用節(jié)點間的協(xié)作,從而確保了系統(tǒng)的持續(xù)不間斷的工作能力的極大提高。采用本方法可以在不升級硬件的條件下,僅僅通過軟件設(shè)計滿足基于ATCA架構(gòu)的電信級系統(tǒng)設(shè)備在不會對系統(tǒng)效率和系統(tǒng)性能產(chǎn)生較大影響的前提下,大大地降低產(chǎn)品成本,縮短系統(tǒng)研發(fā)周期,極大地提高了系統(tǒng)的高可用性要求,產(chǎn)生重大的經(jīng)濟效益。
參考文獻
[1] PICMG 3.0,“AdvancedTCA (Base Specification)”Rev3.0 24-Mar-2008 http://www.picmg.org/v2internal/specifications2.cfm?thetype=Onethebusid=2.
[2] PICMG 3.1,“AdvancedTCA Ethernet”Rev2.0 3-Aug-2012 http://www.picmg.org/v2internal/specifications2.cfm?thetype=Onethebusid=2.
[3] PICMG 3.2,“AdvancedTCA InfiniBand”Rev1.0 22-Jan-2003 http://www.picmg.org/v2internal/specifications2.cfm?thetype=Onethebusid=2.
[4] Service Availability Forum Hardware Platform Interface Specification SAI-HPI-B.03.02, 4-Aug-2009, http://www.saforum.org/link/linkshow. asp?link_id=222259
[5]馬克思(美)等著,“高可用性系統(tǒng)設(shè)計”,汪青青,盧祖英譯.北京:清華大學(xué)出版社. 2005-07-01.
[6] Sean Dague,Kevin gao,David Judkovic,Rusty Lynch,Louis Zhuang,Tariq Shureih,Thomas Kanngieser,Renier Morales,“OpenHPI Manual”,http://openhpi.sourceforge.net/manual/book1.html
[7] Jeong-Hyon Hwang,Magdalena Balazinska,Alexander Rasin,Ugur C etintemel,Michael Stonebraker,and Stan Zdonik,“High-Availability Algorithms for Distributed Stream Processing”,Data Engineering,2005. ICDE 2005 Proceedings 21st International Conference on,8-Apr-2005