柳鵬 何瀟銳 山西省電力公司長治供電分公司,山西長治 046011
備份技術(shù)研究
柳鵬 何瀟銳 山西省電力公司長治供電分公司,山西長治 046011
在電力系統(tǒng)中,很多關(guān)鍵應(yīng)用和服務(wù)都需要采用備份技術(shù)保證系統(tǒng)的高可靠運(yùn)行。本文總結(jié)了常用的備份技術(shù),分析其優(yōu)缺點(diǎn),并設(shè)計(jì)和實(shí)現(xiàn)了基于組播的溫備份技術(shù),其支持多個(gè)副本同時(shí)運(yùn)行,自動(dòng)選舉主副本。提出了副本狀態(tài)轉(zhuǎn)換算法,溫備份算法,為實(shí)現(xiàn)關(guān)鍵應(yīng)用的備份進(jìn)行了有效探討和實(shí)現(xiàn)。
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,信息系統(tǒng)廣泛應(yīng)用于各種關(guān)鍵企業(yè)業(yè)務(wù)中。由于計(jì)算機(jī)軟硬件都會(huì)不可避免地發(fā)生故障,這些故障可能給企業(yè)帶來極大損失,因此,對(duì)信息處理系統(tǒng)的高可用性需求,極大地刺激了備份技術(shù)的應(yīng)用和發(fā)展[1,2]。備份是指利用技術(shù)、管理手段以及相關(guān)資源確保關(guān)鍵數(shù)據(jù)和關(guān)鍵信息系統(tǒng)在發(fā)生災(zāi)難后,在確定的時(shí)間內(nèi)可恢復(fù)和繼續(xù)運(yùn)營。電力行業(yè)是關(guān)系到國計(jì)民生的基礎(chǔ)性行業(yè),隨著電力市場(chǎng)化以及電網(wǎng)建設(shè)的進(jìn)一步發(fā)展,傳統(tǒng)的電力系統(tǒng)業(yè)務(wù)正在發(fā)生變化。各級(jí)電力公司普遍建立了自己的內(nèi)部網(wǎng)絡(luò),實(shí)現(xiàn)了辦公自動(dòng)化,各種管理信息如財(cái)務(wù)、收費(fèi)、電力營銷、生產(chǎn)管理等應(yīng)用系統(tǒng)在電力行業(yè)日常業(yè)務(wù)中扮演了越來越重要的角色。隨著電力信息化的日益增強(qiáng),對(duì)各種信息服務(wù)的可用性、穩(wěn)定性有了更高的要求。
采用RAID和數(shù)據(jù)備份可以提高關(guān)鍵數(shù)據(jù)的可靠性[3],但是,RAID技術(shù)只能解決硬盤的問題,數(shù)據(jù)備份只能部分解決系統(tǒng)故障后數(shù)據(jù)的恢復(fù)。而服務(wù)器本身軟硬件出現(xiàn)的問題,都將造成服務(wù)的中斷。因此,對(duì)于需要持續(xù)可靠地提供信息服務(wù)的系統(tǒng),必須實(shí)現(xiàn)服務(wù)級(jí)別的備份和快速的服務(wù)切換,對(duì)用戶表現(xiàn)為透明持久的可靠服務(wù)。雙機(jī)熱備的方式得到了廣泛應(yīng)用[4,5,6],其能保證企業(yè)關(guān)鍵業(yè)務(wù)應(yīng)用的穩(wěn)定性和可用性,提供7×24不間斷服務(wù),其缺點(diǎn)是大都僅提供兩個(gè)節(jié)點(diǎn)的備份,而且,備份服務(wù)需要一直運(yùn)行,這樣使系統(tǒng)資源的有效利用率降低。
本文在總結(jié)和分析各種備份技術(shù)的基礎(chǔ)上,提出基于組播技術(shù)的溫備實(shí)施方案。其支持多個(gè)后備副本的同時(shí)運(yùn)行,支持主副本的自動(dòng)選舉;采用狀態(tài)轉(zhuǎn)換的機(jī)制,實(shí)現(xiàn)主、后備副本狀態(tài)一致性維護(hù)和功能切換,后備副本只有在切換為主節(jié)點(diǎn)時(shí)才啟動(dòng)應(yīng)用服務(wù),有效減少了后備副本的資源占用。
在備份技術(shù)中,副本之間的地位不同。有一副本為主副本,負(fù)責(zé)與外部交互;其他副本為后備副本,其只與主副本進(jìn)行交互,備份技術(shù)主要包含冷備份、溫備份和熱備份。
冷備份指后備副本在主副本正常操作時(shí)不活動(dòng),僅在主副本故障時(shí)切換、啟動(dòng),并代替主副本。主副本在處理過程中將各種關(guān)鍵數(shù)據(jù)保存在一個(gè)中間存儲(chǔ)系統(tǒng)中,當(dāng)主副本發(fā)生故障時(shí),后備副本從存儲(chǔ)系統(tǒng)中讀取最新的系統(tǒng)數(shù)據(jù),繼續(xù)提供系統(tǒng)服務(wù)。其優(yōu)點(diǎn)在于避免了出現(xiàn)掉電等故障時(shí),數(shù)據(jù)丟失的可能性,提供了以數(shù)據(jù)為中心的信息系統(tǒng)的可靠性。缺點(diǎn)是發(fā)生故障時(shí),后備副本才從數(shù)據(jù)庫讀取數(shù)據(jù),造成切換時(shí)間較長。冷備份方式適用于數(shù)據(jù)庫類型的備份,或業(yè)務(wù)系統(tǒng)產(chǎn)生大量中間數(shù)據(jù)的場(chǎng)景。
溫備份中,后備副本在主副本正常操作時(shí)也不活動(dòng),當(dāng)主副本完成處理時(shí),必須向其它副本發(fā)送更新消息,后備副本更新其狀態(tài)并且返回應(yīng)答消息,主副本收集到所有的應(yīng)答后才向客戶端返回結(jié)果。正常情況下,后備副本不處理和輸出任何數(shù)據(jù),后備副本的動(dòng)態(tài)數(shù)據(jù)由主副本及時(shí)更新。發(fā)生故障時(shí),后備副本接管系統(tǒng)的輸入和輸出,并且使用最新的動(dòng)態(tài)數(shù)據(jù)來進(jìn)行業(yè)務(wù)處理。其優(yōu)點(diǎn)是可避免由于軟件故障而造成的多個(gè)備份同時(shí)失效的情況,缺點(diǎn)是很難有一個(gè)有效的機(jī)制完全備份動(dòng)態(tài)數(shù)據(jù),導(dǎo)致系統(tǒng)切換后,不可避免地丟失部分?jǐn)?shù)據(jù)。
熱備份技術(shù)中,后備副本和主副本同時(shí)接收信息輸入,并進(jìn)行業(yè)務(wù)處理,但只有主副本的輸出信息被輸出。當(dāng)主備切換時(shí),只需選擇后備副本的信息輸出即可。熱備份的優(yōu)點(diǎn)是可完全保證系統(tǒng)的多個(gè)副本動(dòng)態(tài)數(shù)據(jù)的一致性,從而減少信息備份不完全造成的不一致性。其缺點(diǎn)是多個(gè)副本同時(shí)運(yùn)行,占用大量的系統(tǒng)開銷。
多副本冗余的工作方式存在兩種不同應(yīng)用模式,一是應(yīng)用服務(wù)無狀態(tài)信息,比如時(shí)間服務(wù),任何一個(gè)后備副本都可以隨時(shí)充當(dāng)主副本。二是應(yīng)用服務(wù)具有運(yùn)行所需的動(dòng)態(tài)信息,如資源管理服務(wù),后備副本必須能周期獲取主副本的當(dāng)前信息。主副本以組播方式周期性向后備副本發(fā)送更新信息,更新的內(nèi)容與具體的應(yīng)用有關(guān),后備副本以文件或數(shù)據(jù)庫的形式存儲(chǔ)最新信息,當(dāng)副本切換時(shí),以本地保存的狀態(tài)初始化應(yīng)用服務(wù)。
在設(shè)計(jì)過程中,采用一種被動(dòng)發(fā)現(xiàn)的方式,主副本周期性組播hello消息,它包含自身的信息(如優(yōu)先級(jí)、域名、周期T0、ID等信息),其他副本通過該組播端口接收hello消息來識(shí)別當(dāng)前的主副本信息,如果發(fā)現(xiàn)自身更優(yōu),或一段時(shí)間都接收不到hello消息,則觸發(fā)進(jìn)行主副本選舉。選舉出的副本提供業(yè)務(wù)服務(wù),主/后備副本的切換對(duì)客戶端透明。
3.1.1 所用數(shù)據(jù)結(jié)構(gòu)
各副本通過交互Hello消息,實(shí)現(xiàn)主副本的選舉,消息格式為服務(wù)協(xié)議單元SPU,:
struct SPU{
int priority;//主副本的優(yōu)先級(jí)別int id;//主副本的id,可通過ip或mac得到一個(gè)唯一的值
char[20] domain;//域名信息,一個(gè)域僅保留一個(gè)主副本
int T;//主副本的hello消息周期,作為系統(tǒng)同步周期。
}
采用priority和id字段共同作為優(yōu)先級(jí)參考字段,由于id字段每臺(tái)機(jī)器唯一,兩個(gè)優(yōu)先級(jí)比較必能選出某一個(gè)。比較的時(shí)候采用以下規(guī)則:
優(yōu)先級(jí)priority字段越小,優(yōu)先級(jí)越高。
優(yōu)先級(jí)字段如果相同,id字段值越小優(yōu)先級(jí)越高。
整個(gè)系統(tǒng)中優(yōu)先級(jí)最高的副本作為主副本,其他為后備副本。采用224.1.1.1:10096組播接口作為副本的管理接口。
3.1.2 狀態(tài)描述
如果主副本異常中斷或退出,系統(tǒng)將有Tcontest的切換時(shí)間該時(shí)間為后備副本競(jìng)爭(zhēng)選舉的時(shí)間,切換時(shí)間將導(dǎo)致[n, n+1]T0的服務(wù)延遲。對(duì)于實(shí)時(shí)業(yè)務(wù)系統(tǒng),可配置為雙副本機(jī)制,避免選舉過程,唯一的后備副本發(fā)現(xiàn)主副本退出時(shí),可立刻替代主副本。在客戶方對(duì)連接異常采用重傳機(jī)制,合理配置重傳次數(shù)和周期,能確??蛻舳苏?qǐng)求得到處理。
圖1 狀態(tài)轉(zhuǎn)化圖
圖1中活躍狀態(tài)、傾聽狀態(tài)以及退出狀態(tài)為三個(gè)穩(wěn)定狀態(tài),其他狀態(tài)的保持時(shí)間預(yù)設(shè)為3T0。
啟動(dòng)狀態(tài):不啟動(dòng)應(yīng)用服務(wù),該狀態(tài)接收hello消息,用于判斷是否存在更優(yōu)先的副本;以自身的同步周期作為T,持續(xù)時(shí)間為Tinit。若接收到其它hello包,則以該包中的周期T作為系統(tǒng)同步周期;如果hello消息中優(yōu)先級(jí)低于自身優(yōu)先級(jí),則直接進(jìn)入競(jìng)爭(zhēng)狀態(tài);若存在優(yōu)先級(jí)與自身相等或者更高的,或者在Tinit中沒有hello消息,則進(jìn)入傾聽狀態(tài)。
傾聽狀態(tài):不啟動(dòng)應(yīng)用服務(wù),該狀態(tài)接收hello包。如果接收的hello包中的主副本優(yōu)先級(jí)等于或大于自身時(shí),一直處于該狀態(tài);如果hello消息中的優(yōu)先級(jí)低于自身,則進(jìn)入競(jìng)爭(zhēng)狀態(tài);如果Taging時(shí)間內(nèi)收不到hello消息,認(rèn)為主副本異常,進(jìn)入競(jìng)爭(zhēng)狀態(tài)。
競(jìng)爭(zhēng)狀態(tài):仍然不啟動(dòng)應(yīng)用服務(wù),以自身屬性構(gòu)造hello消息,參與競(jìng)爭(zhēng)主副本,周期為Tcontest。如果接收到優(yōu)先級(jí)高于自身的hello包時(shí),說明有更好的副本正在運(yùn)行,則直接進(jìn)入傾聽狀態(tài);如果在3T的時(shí)間內(nèi)收不到hello消息,或者收到hello消息的優(yōu)先級(jí)都低于自身時(shí),進(jìn)入活躍狀態(tài)。
活躍狀態(tài):該狀態(tài)下的副本為主副本,啟動(dòng)應(yīng)用服務(wù),周期性的組播hello消息,通告自身優(yōu)先級(jí)和T參數(shù),并監(jiān)聽管理接口,如果存在更高優(yōu)先級(jí)的hello消息,則進(jìn)入退避狀態(tài);若收到退出指令,則直接進(jìn)入退出狀態(tài)。
退避狀態(tài):該狀態(tài)由活躍狀態(tài)轉(zhuǎn)換而來,仍然充當(dāng)主副本的功能,提供應(yīng)用服務(wù),目的是確認(rèn)網(wǎng)絡(luò)上是否存在優(yōu)先級(jí)更高的副本,以避免系統(tǒng)不穩(wěn)定造成的頻繁切換。若Tretreat時(shí)間內(nèi)收到優(yōu)先級(jí)更高的hello包,則直接進(jìn)入傾聽狀態(tài),延遲2T0后關(guān)閉應(yīng)用服務(wù),確保新的主副本已經(jīng)啟動(dòng)應(yīng)用服務(wù);若Tretreat之內(nèi)不能收到更好的副本信息,則重新回到活躍狀態(tài),而應(yīng)用服務(wù)功能不變。
退出狀態(tài):該狀態(tài)關(guān)閉應(yīng)用服務(wù),并退出管理線程。當(dāng)系統(tǒng)出現(xiàn)異常,或收到退出指令時(shí)觸發(fā)該狀態(tài)。
溫備份算法實(shí)現(xiàn)主、后備副本的狀態(tài)一致性維護(hù),其流程如圖2所示。
圖2 溫備份流程
算法描述如下:
本文從多個(gè)副本選舉實(shí)現(xiàn)和溫備份算法兩個(gè)方面,闡述了多副本備份技術(shù)的原理和相關(guān)實(shí)現(xiàn)。為提高業(yè)務(wù)系統(tǒng)的可靠性提供了一種可行的備份實(shí)施方案,目前已初步應(yīng)用于長治市供電局用電稽查系統(tǒng),改造后的系統(tǒng)能實(shí)現(xiàn)系統(tǒng)不間斷的功能服務(wù),證實(shí)了該技術(shù)的可行性。
[1] 葉國駿, 李莉麗, 雷航. 基于EDF的分布式系統(tǒng)實(shí)時(shí)容錯(cuò)調(diào)度算法. 計(jì)算機(jī)工程. 2006.32(4), pp 76-78
[2] 楊軍. 容災(zāi)備份技術(shù)在電信企業(yè)中的應(yīng)用. 江蘇通信技術(shù). 2002.18(6), pp 41-45
[3] 王玲. 企業(yè)數(shù)據(jù)備份和災(zāi)難恢復(fù). 信息技術(shù)與信息化. 2006(3), pp 64-66
[4] 畢全起. 數(shù)據(jù)的可靠性和軟件容錯(cuò)系統(tǒng)的實(shí)現(xiàn). 河北師范大學(xué)學(xué)報(bào)(木然科學(xué)版). 2002. 26(1).pp 29-31, 64
[5] 武建鋒, 荊文芳. 雙機(jī)容錯(cuò)方案設(shè)計(jì).計(jì)算機(jī)科學(xué)與技術(shù). 2006.24(1), pp 19-22
[6] 鄭軍, 付強(qiáng), 李權(quán). 一種純軟件的雙機(jī)熱備份算法. 計(jì)算機(jī)應(yīng)用. 2002.22(12), pp 98-100
10.3969/j.issn.1001-8972.2011.08.075
柳 鵬,男,1976年3月出生,1999年7月畢業(yè)于華北電力大學(xué)計(jì)算機(jī)專業(yè),工程師,在長治供電分公司科技信息中心工作,任副主任。
何瀟銳,男,1981年12月出生,2003年7月畢業(yè)于河南理工大學(xué)計(jì)算機(jī)專業(yè),助理工程師,在長治供電分公司科技信息中心工作,任信息安全專責(zé)。