摘要:高可用性的實(shí)現需要在硬件、系統軟件、中間件、應用軟件上的整體考慮,以保證系統在任意環(huán)節失效的情況下,都能進(jìn)行及時(shí)恢復,要求系統恢復時(shí)間極短,并且在系統恢復后保證數據的一致性。本文針對高可用性提出了一個(gè)完整的解決方案,該方案以訊泰信息技術(shù)有限公司的ezConnect (呼叫中心軟件)為例,提出了一個(gè)能成功解決隨機發(fā)生的單點(diǎn)失效情況下系統的高可用性方案。
關(guān)鍵詞:高可用性、卷管理、冗余、High Availability、ezConnect
1.前言
隨著(zhù)軟件業(yè)的高速發(fā)展,高可用性越來(lái)越受到人們的重視。軟件的高可用性是指軟件的不間斷運行能力,高可用性可能意味著(zhù)每周7天、每天24小時(shí)的持續操作。這一方面要求軟件所依賴(lài)的設備本身具有高可靠性,另一方面可以從軟件的設計入手,實(shí)現一個(gè)高可用性的軟件產(chǎn)品。本文將簡(jiǎn)要介紹高可用性技術(shù),以及提供一個(gè)實(shí)現高可用性的解決方案。
2.高可用性技術(shù)
高可用性是指可持續的、具有一致性和完整性的數據訪(fǎng)問(wèn)。下面簡(jiǎn)單列舉高可用性的幾個(gè)方面。
- 卷管理
卷管理對數據完整性起很重要的作用,它是操作系統的一部分。為了容錯和性能的需要,卷管理系統把物理的磁盤(pán)系統劃分為邏輯上的卷。從某種角度上說(shuō),它等同于物理上的磁盤(pán)。卷管理系統利用磁盤(pán)陣列來(lái)提供冗余或者增加帶寬。卷管理能夠在磁盤(pán)失效的時(shí)候保證數據的可用性。
- 文件系統
當運行中的系統突然崩潰時(shí),磁盤(pán)數據的狀態(tài)是不確定的,文件有可能被改變或被刪除。一些商家采用“寫(xiě)前記錄”的方式來(lái)保持數據的一致性。這是一種元記錄,元記錄采用的數據結構是環(huán)形隊列,這樣可以自動(dòng)清除,免去占用空間過(guò)大的危險。在每次數據改變前,該操作會(huì )被系統作為元操作記錄到一個(gè)單獨的卷中。恢復記錄時(shí),文件系統只需要檢查所有被記錄的元操作的一致性即可。這樣比檢查完整的文件系統的一致性要快很多。
- 備份
在系統崩潰時(shí),備份的數據就顯得十分重要了。在線(xiàn)的數據備份成為備份技術(shù)的一項基本要求,通常會(huì )采用第一次全備份后定期做增量備份的方法。[1]
高可用性系統通過(guò)提高服務(wù)器可靠性、磁盤(pán)可靠性、網(wǎng)絡(luò )可靠性、應用程序可靠性來(lái)達到高可用性的要求。具體實(shí)現可使用共享磁盤(pán)陣列來(lái)提高磁盤(pán)可靠性,使用冗余的網(wǎng)絡(luò )來(lái)提高網(wǎng)絡(luò )可靠性,使用合作的服務(wù)器來(lái)提高服務(wù)器的可靠性,通過(guò)應用程序的探測與有效恢復來(lái)提高應用程序的可靠性。[2]
以上提高高可用性的方法,實(shí)施起來(lái)都比較復雜,因此我們提出了一個(gè)比較簡(jiǎn)單的方案。采用一個(gè)監控程序(HA Service)來(lái)實(shí)現高可用性。
3.高可用性(High Availability, 以下簡(jiǎn)稱(chēng)HA)在ezConnect中的實(shí)現
ezConnect 產(chǎn)品中的各個(gè)部件,采用分布式設計,即各個(gè)服務(wù)(Service)都是單獨啟動(dòng)單獨運行的,但是它們之間都有很密切的相互依賴(lài)關(guān)系,而且它們也在不斷的通信。這樣很有可能因為某個(gè)部件出現了一個(gè)很小的錯誤,至使整個(gè)系統癱瘓,而那個(gè)錯誤很有可能在系統重新啟動(dòng)后又恢復正常。
所以我們引入了HA Service,它是一個(gè)Daemon(守護)進(jìn)程。在HA Service的啟動(dòng)過(guò)程中會(huì )順序將系統中的各個(gè)部件啟動(dòng)起來(lái)。它會(huì )實(shí)時(shí)監控各部件的運行情況,定時(shí)向對方發(fā)送狀態(tài)信息,并采用心搏(Heart Beat)方式監測狀態(tài)。通過(guò)指定的時(shí)間間隙向對方發(fā)送信號,對方收到每個(gè)信號后都會(huì )發(fā)送確定信息。當HA Server收不到周期性的確認信息時(shí),將進(jìn)行一系列的探測措施以確定對方是否失效。
如果在運行的過(guò)程中有一個(gè)部件出現了錯誤,HA Service會(huì )及時(shí)報告錯誤原因和解決辦法。如果這個(gè)部件的運行狀態(tài)影響著(zhù)其他部件的運行,那么整個(gè)系統會(huì )重新啟動(dòng),若重啟若干次還沒(méi)有成功,HA Service將使系統不再運行,等待系統管理員退出整個(gè)系統。HA Service在運行的過(guò)程中,會(huì )隨時(shí)記錄系統的運行信息,這樣如果系統突然癱瘓,系統管理員就可以根據日志文件查看系統癱瘓的原因。可配性也是HA Service的一大優(yōu)點(diǎn),大部分數據都可以在HA Service的配置文件中配置,這樣大大提高了HA Service的可重用性。也就是說(shuō)HA Service這個(gè)部件在應用于其他的相似軟件中時(shí),只需要改動(dòng)相應的配置文件就可以了。
可以看得出HA Service在系統中占有重要的地位,所以要想保證整個(gè)系統的高可用性,就首先要保證HA Service的穩定性,在HA Service的實(shí)現過(guò)程中,做到盡可能的簡(jiǎn)單,而且使其不依賴(lài)其他任何部件。作為一個(gè)獨立的部件運行,穩定性會(huì )提高很多。
4.結論
本文介紹了一個(gè)提高系統高可用性的解決方案,即HA監控軟件。它監控系統主要組件的工作狀況,并對各種失效進(jìn)行探測和有效的恢復。提供了對應用程序、資源和整個(gè)節點(diǎn)的持續監控和故障監測能力。
參考文獻
[1] 秦鋼, 為數據“投保”—談數據高可用性技術(shù), 微電腦世界, 2001 01
[2] 劉心松, 高可用性系統結構的研究, 計算機應用, 1997 07
訊泰信息技術(shù)提供 CTI論壇編輯