(1.四川大學 計算機學院, 成都 610065; 2.西安通信學院, 西安 710106)
摘 要:
介紹了一種基于B/S模式的異地容災系統,并結合系統的通信需求,設計了一種安全有效的通信協議來滿足系統要求,給出了協議的具體制定和最終實現。該系統采用Web方式進行遠程管理,結構合理、操作便捷。測試實驗表明系統運行穩定、性能優越,具有較高的應用和推廣價值。
關鍵詞:容災系統;瀏覽器/服務器;通信協議;控件
中圖分類號:TP309.3文獻標志碼:A
文章編號:1001-3695(2009)04-1389-02
Web-based remote disaster tolerant system
JIA Zhao1,2, ZHAO Kui1, LU Zheng-tian1, LI Guo-feng1, LI Yuan-bin1
( 1.School of Computer, Sichuan University, Chengdu 610065, China; 2. Xi’an Communication Institute, Xi’an 710106, China)
Abstract:The paper introduced a disaster tolerant system based on B/S mode and proposed a safe and effective communication protocol that combined with communicational needs. This system had adopted remote management based on Webso that its construction was reasonable and operation was convenient. Through test, the system is excellent in performance and stable in working, and is valuable for application and promotion.
Key words:disaster tolerant system; B/S; communication protocol; ActiveX
隨著信息技術在各個領域的廣泛應用,計算機數據的完整性和安全性變得日趨重要,數據的丟失或損壞帶來的損失難以估量[1]。這就要求企業采取完備有效的容災方案和災難恢復策略來應對突發的數據災難事件。傳統的容災方法存在著架構單一[2]、只有數據庫實時備份而沒有提供數據庫的全面備份[3]等缺點,無法很好地滿足企業的需求。相比而言,一種基于Internet的異地容災系統[4,5]則考慮得較為完善,它是一個構建在Internet之上的大容量數據備份中心,主要用于存儲客戶服務器上的有用數據以及為客戶提供數據備份和實時鏡像服務。當本地發生災難后,存儲在遠程災備中心的數據可以恢復到用戶的客戶服務器,將用戶的數據損失降到最小,對企業而言是一種更為全面的解決方案。
本文結合該異地容災系統中客戶與災備中心之間的通信需求,提出了一種自定義通信協議,并用控件技術給予實現。管理員可以通過Web瀏覽器,使用SSL連接登錄管理平臺,在ActiveX控件的協助下完成服務器間消息的收發和解析。通過Web頁面,操作人員就可以方便地根據容災計劃完成系統各災備功能的管理和使用[6]。
1 系統結構
由于B/S模式管理平臺具有使用簡單、維護方便、廣泛的通用性和跨平臺性及安全性好等優點,系統采用基于Web的方式來進行管理。系統分為本地系統和遠程災備中心兩大部分。本地系統由客戶服務器和訪問主機構成,位于同一內網,災備中心的管理服務器和存儲服務器也位于同一內網,兩者之間通過Internet或者專用網相連,系統拓撲圖如圖1所示。
1)客戶服務器 它是用戶需要備份數據所在服務器,服務器上運行有客戶端消息監聽模塊和消息處理模塊[7]。該處的消息是指容災系統內部用于通信的、有著自己協議格式的數據。消息監聽模塊在系統加載并初始化之后開始工作,進行客戶端與ActiveX通信控件的消息通信。通信控件是一個嵌入到Web頁面中的Internet控件,主要負責訪問主機的Web頁面與客戶服務器的消息通信。客戶服務器對控件發來的消息進行接收并解析,然后調用消息處理模塊執行該條消息所對應的操作請求,執行相應操作;操作執行完畢之后,將結果再以消息的形式發送回通信控件,控件將執行結果通過Web頁面告知管理服務器。
2)遠程災備中心 容災系統的管理服務器和存儲服務器位于遠程災備中心。管理服務器上部署有Web服務器,后臺數據庫部署在系統的存儲服務器上。管理服務器用于整個系統的配置管理,存儲服務器用于接收處理實時備份數據,它們位于同一局域網內并且相互之間擁有較大的通信帶寬,可快速訪問服務器的數據庫讀寫存儲數據。管理服務器的Web模塊是災難恢復系統的重要組成部分,用戶通過Web模塊提供的頁面來使用容災系統。Web模塊的主要功能是配置容災任務、監控容災任務的實時狀態并控制容災任務的運行,提供的界面主要包括建立任務、任務初始化、啟動任務災難恢復等。出于安全方面的考慮,有時需要徹底清除存儲服務器中的一些敏感數據。存儲服務器提供了數據銷毀模塊來完成對這些數據的徹底清除,銷毀有自動銷毀和命令銷毀兩種方式可供選擇。
2 通信協議制定
本文設計的消息通信協議是一個基于TCP的應用層協議,主要為了完成異地容災系統中客戶服務器端與管理服務器端的交互任務。為了確保消息傳遞的保密性、完整性,所有的數據交互都是建立在SSL之上的,通過采用不對稱加密技術不但可以實現會話雙方之間消息的安全傳遞,還可以鑒別會話雙方的身份,防止消息竄改[8]。
2.1 消息結構定義
消息是容災系統內部用于通信和自定義協議格式的數據結構。考慮到極端情況下消息的長度及其可擴展性,將消息的長度定義為1 024 Byte,消息格式定義如圖2所示。
消息各部分含義如下:
a)MsgID,消息類型。不同消息有對應的結構和解析方式。
b)Flag,標志位。Web服務器可根據返回消息的flag值判斷客戶服務器端任務是否存在,或者任務執行成功與否。
c)Local_IP,客戶服務器在內網中的IP。這個必須由客戶機通過Web頁面來告知管理服務器。
d)Local_Port,是客戶服務器用于監聽的端口號。,是由客戶機通過Web頁面來告知管理服務器。
e)Data,管理服務器發送給客戶服務器的具體任務命令,以結構的方式存放于消息之中。對應于不同的msgID,data中的結構也有所不同。
2.2 協議描述
定義1Msg表示發送給客戶服務器的消息,msgssl′表示返回給管理服務器的消息,data′表示管理服務器最終所需的任務處理返回結果。
定義2Msgssl為經過SSL加密后的消息。
定義3‘|’表示字符串連接,如A|B表示字符串AB。
定義4ClientProcess為客戶服務器端消息解析和處理函數,serverProcess為Web服務器消息解析函數。
定義5Ti表示類型為i的消息從發送到收回消息所允許的最長消息通信時間,Ti值根據消息類型而定;t表示自消息發送開始計時器的計時數值。
下面給出協議應用的具體描述:
a)訪問主機通過Web方式將local_IP和local_port提交給Web服務器,Web服務器根據這些信息以及要執行的任務來生成要發送給客戶服務器的消息msg。
msg=msgID|flag|local_IP|local_port|data
(1)
b)通過CA模塊建立SSL連接,將消息發送給客戶服務器,同時啟動定時器timer開始計時。
msgssl=CA(msg)
(2)
c)客戶服務器接收到消息后對消息進行解析和處理,根據返回結果生成返回消息msgssl′。
msgssl′=clientProcess(msgssl)
(3)
d)Web服務器將返回的消息進行解析,得到所需的數據data′。
data′=serverProcess(msgssl′)
(4)
e)斷開SSL連接,在頁面上顯示執行結果。如果為超時操作,則提示用戶并給出是否重新連接的提示。
值得注意的是,在步驟b)后,隔一段時間要將t和Ti進行比較,當發現 t > Ti時,說明有異常情況造成連接超時,這時要轉到步驟e)。
3 ActiveX控件實現
在系統中,使用ActiveX控件來實現消息通信。ActiveX是Microsoft提供的一組符合COM規范的工具[9],開發人員能夠通過它把計算機桌面環境與構成Internet及其大量資源的環境集成起來。ActiveX技術中,最基本和最重要的成員就是ActiveX控件,通常形式為動態鏈接庫DLL或者OCX控件,它可用于所有支持COM規范的容器中,也可作為Internet控件嵌入到Web頁面中。ActiveX控件是一種標準的客戶機/服務器結構,將消息收發和解析封裝到一個ActiveX控件中,不僅方便了代碼重用,而且可以實現跨進程間的消息傳遞。
3.1 ActiveX控件工作流程
通信控件是一個嵌入到Web頁面中的Internet控件,主要負責訪問主機的Web頁面與客戶服務器的消息通信。根據協議結構把自定義的消息協議按照組件的結構進行封裝,然后按照流程圖添加處理消息的代碼即可。控件對于災備中心與客戶服務器的消息處理流程圖如圖3所示。
Web頁面通過ActiveX控件的一個公用接口action()把符合內部通信協議格式的消息傳送給控件;控件根據msgID調用相應的任務模塊來解析消息,再將消息通過SSL方式發送給客戶服務器;客戶服務器進行處理后,將處理結果以消息的形式返回給控件,控件再將該消息作為公用接口的返回值傳遞給Web,從而通過該ActiveX控件完成一次“訪問主機—客戶服務器”的消息交互。對于在網絡中傳輸的數據,要充分考慮其安全性,所以對訪問主機與客戶服務器之間的消息通信全部采用SSL方式進行傳輸處理,保證了傳輸數據的安全。
3.2 Web應用實現
用戶通過Web方式來進行災難備份任務的管理。當用戶登錄系統進入Web頁面時,頁面首先會對客戶機是否安裝控件進行判斷。如果檢測到控件已被用戶安裝過,控件在頁面中注明的classID就能夠在訪問機的注冊表內查找得到,用戶可以通過Web頁面正常進行各項災備任務的操作;如果頁面經檢測發現控件沒有安裝,則會給用戶發出提示,然后網頁會自動跳轉到控件下載頁面,用戶可以按照頁面說明實現控件的下載和控件在本地的安裝注冊。當控件在訪問主機上安裝后,就成為訪問機的本地資源,用戶就可以成功地進行災備任務的操作。
若控件進行了版本升級,瀏覽器也會通過版本信息判斷出有高版本的控件存在,同樣會進行頁面跳轉,提示用戶下載新版本進行升級。新版本的控件在安裝時自動覆蓋舊版本控件。
4 系統性能分析與測試
在100 Mbps網速的網絡環境中,對采用控件通信的該異地容災系統進行測試,實驗環境如表1所示。
選取的測試指標為系統對數據的恢復性能。選取100~500 MB不同大小的數據來進行災備中心到客戶服務器的遠程數據恢復以測試數據所花費的時間。
表1 實驗環境
CPU內存存儲系統OS
訪問主機Intel P41.6 GHz256 MB一塊80 GB磁盤Win XP SP2
客戶服務器Intel Celeron(R) 2.4GHz512 MB一塊160 GB磁盤Linux2.4.31
存儲服務器Intel Celeron(R) 2.4 GHz1.5 GB四塊320 GB磁盤組建RAID0Linux2.6.18
測試結果如圖4所示。
由圖4可知,對于一般應用而言,該異地容災系統能夠在2 min內完成災備中心到客戶服務器的數據恢復。隨著數據量的增加,所耗時間呈線性增加,可以在較短時間內完成對系統數據的恢復。
5 結束語
本文介紹了一種基于Web管理平臺的異地容災系統,該系統采用B/S架構的管理方式,通過自行設計的通信協議進行消息傳遞和任務管理。對于用戶而言界面友好、使用方便,有著很好的易用性;該系統無須專用的硬件支持,為企業提供了一種性價比較高的異地容災解決方案。
參考文獻:
[1]李濤.網絡安全概論[M].北京:電子工業出版社,2004.
[2]SUZUKI J, SUDA T. Middleware support for disaster response infrastructure[C]//Proc of the 1st IEEE Workshop on Disaster Recovery Networks. 2002.
[3]LLOYD S J, PEKHAM J, LI Jian, et al. RORIB: an economic and efficien solution for real-time online remote information backup[J]. Journal of Database Management, 2003,14(3): 56-73.
[4]孫潔,劉曉潔,李濤.一種基于Internet的異地容災系統的設計和實現[J].計算機應用研究, 2007,24(7):171-172.
[5]沙金川,劉曉潔,李濤,等.一種基于安全控制的異地災備系統的設計與實現[J].計算機應用研究, 2007,24(8):152-154.
[6]WANG Kun, ZHOU Li-hua, CAI Zhen, et al. A disaster recovery system model in an e-government system[C]//Proc of the 6th International Conference on Parallel and Distributed Computing Applications and Technologies. 2005:247-250.
[7]SOURCE A. SANs sharing storage to infinity and beyond[J]. Electronic Design, 2004,52(9):50-59.
[8]LIULan-juan. SCM security solution based on SSL protocol[C]//Proc ofIEEE International Conference on Service Operations and Logistics, and Informatics. 2006:814-817.
[9]MICHENER J.R, ACAR T. Managing system and active-content integrity[J]. Computer, 2000,33(7):108-110.