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