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