周麗平,張亞君
(杭州電子科技大學(xué)電子信息學(xué)院,浙江杭州310018)
隨著計算機(jī)網(wǎng)絡(luò)技術(shù)的快速發(fā)展,各種增值業(yè)務(wù)在互聯(lián)網(wǎng)上開始得到了廣泛的應(yīng)用,網(wǎng)絡(luò)設(shè)備的軟件版本更新越來越頻繁,使得業(yè)務(wù)因軟件版本升級而被迫中斷,極大地影響了網(wǎng)絡(luò)設(shè)備的高可用性要求。所以一種提高設(shè)備高可用性的方案顯得越發(fā)重要[1-3]。高可用性是指一個產(chǎn)品或系統(tǒng)對客戶持續(xù)服務(wù)的能力,所以如果能尋求到一種高可性的方法,就可以很好的解決網(wǎng)絡(luò)設(shè)備在升級過程中帶來的業(yè)務(wù)中斷的問題。本文提出的業(yè)務(wù)不中斷升級(In-Service Software Upgrade)ISSU[4]系統(tǒng)的進(jìn)程升級可以很好的做到在對舊版本軟件的升級過程中,提高調(diào)備的無故障運行時間,而降低設(shè)備的恢復(fù)正常運行時間,最終提高了網(wǎng)絡(luò)設(shè)備的可用性。
本文提出的ISSU系統(tǒng)的軟件升級是通過基于Linux系統(tǒng)的命令行執(zhí)行順序進(jìn)行的。它結(jié)合主備倒換熱備份技術(shù)、IPC以及NSF/SSO等外部模塊來完成加載、安裝、確認(rèn)、卸載4個升級軟件的過程[5、6]。同時在升級過程中還有異?;貪L過程,這個回滾包括升級過程中出現(xiàn)異常自動進(jìn)行回滾以及手動執(zhí)行回滾,回滾都能使設(shè)備的版本回退到原來正常的狀態(tài),這樣就增強(qiáng)了升級系統(tǒng)的靈活性和容錯能力。
ISSU系統(tǒng)的軟件升級流程如圖1所示:
當(dāng)分布式交換機(jī)進(jìn)行升級時,對傳入的到主控板上的升級軟件(一般以包的形式發(fā)放)通過加載命令對傳入的軟件包文件解壓到對應(yīng)的要升級的板上,然后通過安裝命令進(jìn)行升級,升級完成后可以用確認(rèn)命令將原主控板以新版本替換舊版本完成本次升級。在升級過程中,如果想取消本次升級操作可以執(zhí)行取消命令完成;在升級完成后,如果想回退到舊版本,則可能通過卸載或回滾命令回退到以前的版本。
業(yè)務(wù)不中斷升級系統(tǒng),是一種可持續(xù)運行網(wǎng)絡(luò),以分布式網(wǎng)絡(luò)設(shè)備交換機(jī)為例,在硬件上擁有兩塊或兩塊以上的主控板(一般以兩塊為主),主用主控板和備用主控板,也常叫做主控冗余,其很大一個特點就是主控板和備用板之間實現(xiàn)熱備份機(jī)制,只有擁有熱備份技術(shù)的支持,才能保證當(dāng)主用主控板升級出現(xiàn)了異?;蚴前宄霈F(xiàn)掛死的故障時,ISSU系統(tǒng)立即會啟動主備倒換過程,由備用板接管主控板的工作,系統(tǒng)依然能夠正常運行。而在備用板倒換為主用板之前,備用主控板會去同步主用主控板的數(shù)據(jù),即進(jìn)行熱備份。通過熱備份,備用主控板可以保證與主用主控板具有相同的配置信息。這樣備用主控板就可以保證和主用主控板一樣的配置,從而數(shù)據(jù)轉(zhuǎn)發(fā)能夠不間斷地正常進(jìn)行,進(jìn)而保護(hù)網(wǎng)絡(luò)中各種流量和報文轉(zhuǎn)發(fā)幾乎不受影響。
對于存在熱備份的進(jìn)程(主控板進(jìn)程),進(jìn)程升級是通過進(jìn)程級備份以及高可用性機(jī)制達(dá)到ISSU的。如圖2所示:基于熱備的進(jìn)程升級流程。(圖2中的主進(jìn)程是指主用主控板所起進(jìn)程,備進(jìn)程是指備用主控板所起的進(jìn)程)。
圖2 進(jìn)程級ISSU(基于熱備)
在進(jìn)程升級過程中,應(yīng)按照ISSU升級原則進(jìn)行升級:先升級備用主控板,再升級主用主控板。先升級備進(jìn)程到新版本(對業(yè)務(wù)運行無影響),再通過高可用性機(jī)制進(jìn)行進(jìn)程倒換,控制權(quán)交給新版本進(jìn)程,從而完成新版本更新。業(yè)務(wù)中斷的時間僅為主備倒換的時間,時間極短。
對于不同的交換機(jī)設(shè)備,可能在設(shè)備升級前的版本與要升級的版本存在兼容性的問題,這就導(dǎo)致交換機(jī)在選擇升級策略時會有不同。ISSU系統(tǒng)為不同版本的設(shè)備升級提供了如下兩種升級策略:
(1)進(jìn)程升級,該升級是通過分析前后版本間的差異,僅對差異部分的進(jìn)程實施升級,該升級方式對系統(tǒng)影響最小、升級速度最快,是ISSU升級的最佳方式;
(2)重啟升級,該方式通過重啟本成員設(shè)備加載新軟件的方式完成升級。
兩種升級策略都可以保證設(shè)備的在線升級不中斷的業(yè)務(wù),兩種升級的配置相同,但軟件實現(xiàn)有差異。進(jìn)行ISSU升級時,設(shè)備會根據(jù)新、舊軟件版本差異自動選擇一種升級策略。本文重點介紹進(jìn)程升級。
在ISSU系統(tǒng)中,一般版本的發(fā)布都是以一個軟件包的形式發(fā)布的,而一個軟件包可以包含多個特性,一個特性有獨立的版本號,在本文提出的進(jìn)程升級中對于升級的包采用了一種二次升級版本號ma-jor.maintenace,既:
Major,一級版本號,一但該版本號變化則ISSU系統(tǒng)會進(jìn)行重啟升級。
Maintenace,二級版本號,一但該版本號變化則ISSU系統(tǒng)會進(jìn)行進(jìn)程升級。
這種軟件包一般ISSU系統(tǒng)會有專門的打包工具,將其各種要升級的進(jìn)程打包進(jìn)入到軟件包中。下面以一個ssh特性包為例來說明進(jìn)程升級的實現(xiàn),如表1所示:
表1 ssh新舊特征包的版本比較
在進(jìn)程升級時,系統(tǒng)會對新傳入的版本軟件包,與原來的版本軟件包進(jìn)行版本的比較,而比較的方式就是對新舊軟件包中的各個版本號進(jìn)行比較,如表1中舉出的ssh這個特性包,對應(yīng)用版本號、lib庫版本號兩個版本號進(jìn)行比較,發(fā)現(xiàn)的只有應(yīng)用版本號ssh的二級版本號有所變化,所以ISSU系統(tǒng)執(zhí)行進(jìn)程升級。而在升級過程中只對ssh包中變化的ssh進(jìn)程執(zhí)行升級,既是重啟這個ssh進(jìn)程,這樣整個系統(tǒng)升級的影響變化只是對一個ssh進(jìn)程實施了重啟,不會影響整個系統(tǒng)其它的業(yè)務(wù)。
在先對備用主控板進(jìn)行了升級完成后,然后對主用主控板進(jìn)行升級,同時接口板同主控板一起升級,如圖3所示:
圖3 ISSU 系統(tǒng)命令行進(jìn)程升級操作
由圖3可以看出接口板slot 5隨主控板slot 3一并升級,主控板進(jìn)程升級過程中會重啟對應(yīng)的進(jìn)程,重啟的進(jìn)程就是要升級的軟件版本。如圖3中的CFA進(jìn)程,在升級過程中,系統(tǒng)先比較新舊版本間的差異,發(fā)現(xiàn)新的軟件版本與舊的版本中CFA進(jìn)程有變化,所以系統(tǒng)就對舊的CFA進(jìn)程實施重啟,即先讓舊CFA進(jìn)程停止,然后再次對CFA進(jìn)程啟動,而這次啟動的就是新版本的CFA新進(jìn)程,最后讓CFA新進(jìn)程運行起來。這樣就完成了新版本的升級替換。整個升級時間就是重啟一個進(jìn)程的時間,一般是1 5s。
通過用H3C公司的核心交換機(jī)網(wǎng)絡(luò)設(shè)備的測試,按照測試用例(分別對兩種升級方式執(zhí)行多次)對進(jìn)程升級、重啟升級兩種升級測試其升級時間,例出8次結(jié)果如表2所示:
表2 ISSU系統(tǒng)的兩種升級方式的升級時間
由表2可以看出,兩種升級方式中,進(jìn)程升級的平均時間是2.9s,而重啟升級要184.2s,近3min,所以在升級的效率來看,進(jìn)程升級是對系統(tǒng)影響最小、升級速度最快的升級方式,很好符合在線業(yè)務(wù)不中斷的需求。
本文基于Linux系統(tǒng),介紹了ISSU系統(tǒng)的原理,并提出了一種在線業(yè)務(wù)不中斷升級方法,即進(jìn)程升級,這種升級可以保證交換機(jī)在版本升級過程中業(yè)務(wù)不中斷或中斷的時間極短,很好的提高了網(wǎng)絡(luò)設(shè)備的可用性。本文提出的進(jìn)程升級方法適用于分布式網(wǎng)絡(luò)設(shè)備。
[1] Garbin D A,Knepley J E.Design and analysis of high availability networks[C].Falls Church:Design of Reliable Communication Networks,2009:1 -6.
[2] 周曉云,覃雄派.高可用性數(shù)據(jù)庫Hot Standby系統(tǒng)及其性能研究[J].中國礦業(yè)大學(xué)學(xué)報,2011,40(2):1-5.
[3] 曹進(jìn)明,房鑫炎,吳蓉.基于IEC61850標(biāo)準(zhǔn)的變電站高可靠性通信研究[J].電力自動化設(shè)備,2008,28(9):1-6.
[4] AnttiKennebunk.Non-Service Affecting Software Upgrades for Multi-Service Routers[C].Naperville:Design of Reliable Communication Networks,2005:16 -19.
[5] 博韋,西斯特.深入理解 linux內(nèi)核[M].北京:中國電力出版社,2007:766-796.
[6] 張敏狄,郭裕順.分布式網(wǎng)絡(luò)設(shè)備的軟件在線升級系統(tǒng)設(shè)計[J].計算機(jī)系統(tǒng)應(yīng)用,2010,19(6):1-4.