吳寶祥
(杭州師范大學(xué)錢江學(xué)院計算機科學(xué)與技術(shù)系,浙江 杭州 310012)
容災(zāi)是一個范疇比較廣泛的概念,廣義上,我們可以把所有與業(yè)務(wù)連續(xù)性相關(guān)的內(nèi)容都納入容災(zāi)。容災(zāi)是一個系統(tǒng)工程,它應(yīng)包括支持用戶業(yè)務(wù)的方方面面。本文主要從技術(shù)的方面來闡述容災(zāi)概念,而不考慮業(yè)務(wù)恢復(fù)中人力資源管理等方面的因素。容災(zāi)系統(tǒng)的研究具有重要的意義,其內(nèi)容如下:容災(zāi)系統(tǒng)的建立提高了災(zāi)難恢復(fù)的效率。建造高效率的容災(zāi)系統(tǒng)可以在面對災(zāi)難的時候快速恢復(fù),緩解災(zāi)難帶來的壓力。保證了大型企業(yè)和國家重點部門的業(yè)務(wù)持續(xù)能力,從而促進了社會的穩(wěn)定。信息數(shù)據(jù)在金融、醫(yī)院、政府等部門有著相當(dāng)重要的作用,通過開展容災(zāi)系統(tǒng)的研究,可以為重點部門災(zāi)后的平穩(wěn)恢復(fù)打下一定的基礎(chǔ)。
在同步系統(tǒng)模型中,節(jié)點間消息的傳輸延遲和進程相對執(zhí)行速度具有已知的上界。分布式系統(tǒng)中所有節(jié)點具有同步的時鐘,并不會發(fā)生時鐘漂移問題。節(jié)點間的鏈路是可靠的,不會發(fā)生消息的丟失。同步系統(tǒng)模型是一種理想化的分布式系統(tǒng)模型,類似于系統(tǒng)負(fù)載正常時的局域網(wǎng)模型。在這樣的系統(tǒng)中,簡單的超時機制可以實現(xiàn)可靠的失效檢測,一致性問題、原子多播問題和選舉問題等都可以得到較好的解決。
與同步模型相對應(yīng)的是異步模型。與同步模型中嚴(yán)格的參數(shù)限制相比,異步模型對分布式系統(tǒng)各種屬性參數(shù)的約束較弱。節(jié)點間消息的傳輸延遲和進程相對執(zhí)行速度是沒有上界的,節(jié)點進程之間的時鐘是不同步的,通訊鏈路也是不可靠的。異步系統(tǒng)模型對參數(shù)的松散限制使得該模型可以將各種網(wǎng)絡(luò)分布式系統(tǒng)都包含在內(nèi),在該模型中實現(xiàn)的失效檢測算法可以應(yīng)用在任何分布式系統(tǒng)當(dāng)中。
同步系統(tǒng)具有參數(shù)限制嚴(yán)格的特點,滿足該特性的分布式系統(tǒng)在實際環(huán)境中難以找到;異步系統(tǒng)對參數(shù)的約束過于簡單,各種問題難以得到有效的解決。我們通過對系統(tǒng)中的參數(shù)進行調(diào)整,可以得到半同步的模型,這種模型可以看作是兩種模型的折中方案,但比同步系統(tǒng)的假設(shè)更加接近于實際的網(wǎng)絡(luò)環(huán)境應(yīng)用,比起異步系統(tǒng)來更加有利于問題的解決,半同步模型同時具有同步模型和異步模型的某些特點。
在容災(zāi)系統(tǒng)的每一次運行中,信息的傳輸延遲和進程執(zhí)行速度可以看作是有上界的,但該上界是未定的,系統(tǒng)中各節(jié)點之間的通信線路是不可靠的,線路中的信息可以延遲,也可以丟失,但信息的丟失事件是小概率事件。
容災(zāi)系統(tǒng)需要解決的首要問題是節(jié)點級別的失效及切換問題,所以故障模型主要基于Fail-Stop 類失效;由于本文所討論的容災(zāi)系統(tǒng)模型所使用的通信線路是不可靠的,存在信息的延遲和信息丟失問題,而信息的延遲和丟失問題容易引起失效的判定,容災(zāi)系統(tǒng)中一旦主節(jié)點失效,需要對其資源的歸屬做出相應(yīng)的調(diào)整,這就需要花費較大的代價,所以故障模型還需要考慮Timing Failure 類失效,以避免信息延遲和信息丟失帶來的切換問題。
3.2.1 HB-DR 失效檢測算法解決的問題
3.2.1.1 及時的失效檢測。失效檢測算法的首要任務(wù)是當(dāng)被檢測方失效時,檢測方應(yīng)根據(jù)當(dāng)前的網(wǎng)絡(luò)狀況盡快地檢測到對方的失效。及時的失效檢測可以用檢測時間(Tp)作為衡量的標(biāo)準(zhǔn)。解決失效檢測的及時性問題可以縮短系統(tǒng)的失效檢測時間,降低容災(zāi)系統(tǒng)的RTO值。
3.2.1.2 廣域網(wǎng)環(huán)境中的信息延遲問題。在廣域網(wǎng)環(huán)境中信息的響應(yīng)時間往往會隨著網(wǎng)絡(luò)負(fù)擔(dān)的加劇而變大,并且該變化幅度會達到幾倍甚至幾十倍。所以廣域網(wǎng)中的失效檢測算法應(yīng)能夠正確的分析當(dāng)前的網(wǎng)絡(luò)情況,當(dāng)網(wǎng)絡(luò)環(huán)境變化時能夠自動調(diào)整參數(shù)以適應(yīng)當(dāng)前網(wǎng)絡(luò)環(huán)境的變化,避免出現(xiàn)被檢測對象運行狀況良好,卻因網(wǎng)絡(luò)延遲有變化而判斷失效的誤判現(xiàn)象。
3.2.1.3 廣域網(wǎng)環(huán)境中的信息丟失問題。在廣域網(wǎng)環(huán)境下信息會出現(xiàn)丟失的現(xiàn)象。算法應(yīng)解決小概率的信息丟失問題,避免出現(xiàn)被檢測方運行狀況良好,卻因為偶爾的信息丟失而判斷被檢測方失效的誤判現(xiàn)象。在應(yīng)用背景中假設(shè)信息的丟失是一個小概率現(xiàn)象,但是當(dāng)網(wǎng)絡(luò)中出現(xiàn)擁塞現(xiàn)象時,丟包會大量出現(xiàn),這時的網(wǎng)絡(luò)環(huán)境已不能夠滿足用戶的需要,檢測結(jié)果應(yīng)為失效。故檢測算法應(yīng)根據(jù)用戶的要求來處理網(wǎng)絡(luò)中的信息丟失問題。
3.2.2 HB-DR 失效檢測算法的運行過程
算法的運行過程如下:
3.2.2.1 檢測進程q每經(jīng)過時間△t、周期性地發(fā)送心跳信息包m;給p(i 為序號),用來表示m,的消息發(fā)送時刻。
3.2.2.2 p在接收到該信息后對q發(fā)送一個確認(rèn)信息包,假設(shè)進程9經(jīng)過時間段p,收到了確認(rèn)信息,參數(shù):i表示q收到p確認(rèn)信息的時刻,其中參數(shù)p'是一個估計值,該值的實際值可以通過統(tǒng)計得出。
3.2.2.3 當(dāng)q收到來自p的反饋信息m;時,就記錄下該信息的到達時間ArriveTime,由該信息的發(fā)送時間可以計算出該信息的響應(yīng)時間D(信息的到達時間減去信息的發(fā)出時間。
容災(zāi)系統(tǒng)依據(jù)其容災(zāi)恢復(fù)目標(biāo),可以有不同的體系結(jié)構(gòu)。目前民用系統(tǒng)采用的大多數(shù)為1+1 和N+1 的容災(zāi)備份結(jié)構(gòu),這主要是從需求、成本和技術(shù)三方面綜合考慮的結(jié)果,近年隨著軍事信息系統(tǒng)和國家關(guān)鍵信息系統(tǒng)建設(shè)的發(fā)展需要,N+N 的多結(jié)點互備結(jié)構(gòu)研究逐漸受到了人們的重視。在多節(jié)點互備的容災(zāi)系統(tǒng)結(jié)構(gòu)下,基于此的容災(zāi)系統(tǒng)失效檢測除了要具有及時性和準(zhǔn)確性的特點外,還應(yīng)具有易管理、易擴展和低負(fù)載等特點。
Linux-HA 的第二個版本擁有大量的組件以實現(xiàn)其高可用集群管理功能。其中主要組件的介紹如下所述:
.heartbeat--節(jié)點間通信校驗?zāi)K
.CRM--集群資源管理模塊
.Ccm--維護集群成員的一致性
.LRM--本地資源管理模塊
.Stonith Daemon--提供節(jié)點重啟服務(wù)
.logd--非阻塞的日志記錄
.apphbd--提供應(yīng)用程序級的看門狗計時器
.Recovery Manager--應(yīng)用故障恢復(fù)
.底層結(jié)構(gòu)--包括插件接口、進程間通信等
Linux-HA 軟件主要用于實現(xiàn)一個高可用集群系統(tǒng),其面對的網(wǎng)絡(luò)環(huán)境較為簡單,通過信息重傳機制和簡單的超時機制即可滿足可靠消息通信的要求,并能夠及時檢測到失效。
通過對Linux-HA 軟件的結(jié)構(gòu)和Heartbeat結(jié)構(gòu)進行分析,可以看出Heartbeat 模塊與其它模塊的相關(guān)性較小,可以對其進行獨立的修改而不影響其它模塊的正常運行。Heartbeat 模塊中失效檢測算法與HB-DR 算法有類似的地方,可以利用其資源,在不影響原算法的基礎(chǔ)上修改少量代碼實現(xiàn)HB-DR 算法。
Heartbeat 中的失效檢測過程完全可以滿足高可用集群環(huán)境中的失效檢測,所以應(yīng)保留其原有的機制??梢詫⑿碌乃惴ㄗ鳛橐粋€可選項,用戶通過修改配置文件來選擇具體使用哪種算法。Heartbeat 中的失效檢測過程使用了信息重傳機制,在HB-DR 算法中則不包含信息重傳的過程,所以需要對信息的重傳過程做出修改??梢詫⑿畔⒌闹貍鬟^程改為信息的到達判定過程,其中信息重傳隊列可以用來存儲以往信息的發(fā)送情況,并定義新的數(shù)據(jù)結(jié)構(gòu)以計算信息的超時時間。Heartbeat 中節(jié)點在Td時間內(nèi)沒有收到另一個節(jié)點發(fā)送來的狀態(tài)信息,就判定另一個節(jié)點失效,該算法簡單易于實現(xiàn),但不能夠適應(yīng)復(fù)雜的網(wǎng)絡(luò)環(huán)境,需要根據(jù)HB-DR算法做出相應(yīng)的改動。
[1]董唯元.從911 事件看企業(yè)容災(zāi),微電腦世界.
[2]徐志發(fā),汪海鵬,電信級容災(zāi)系統(tǒng)關(guān)鍵技術(shù)分析,數(shù)據(jù)通信,2003年.