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