柳鵬 何瀟銳 山西省電力公司長治供電分公司,山西長治 046011
備份技術研究
柳鵬 何瀟銳 山西省電力公司長治供電分公司,山西長治 046011
在電力系統中,很多關鍵應用和服務都需要采用備份技術保證系統的高可靠運行。本文總結了常用的備份技術,分析其優缺點,并設計和實現了基于組播的溫備份技術,其支持多個副本同時運行,自動選舉主副本。提出了副本狀態轉換算法,溫備份算法,為實現關鍵應用的備份進行了有效探討和實現。
隨著計算機技術的飛速發展,信息系統廣泛應用于各種關鍵企業業務中。由于計算機軟硬件都會不可避免地發生故障,這些故障可能給企業帶來極大損失,因此,對信息處理系統的高可用性需求,極大地刺激了備份技術的應用和發展[1,2]。備份是指利用技術、管理手段以及相關資源確保關鍵數據和關鍵信息系統在發生災難后,在確定的時間內可恢復和繼續運營。電力行業是關系到國計民生的基礎性行業,隨著電力市場化以及電網建設的進一步發展,傳統的電力系統業務正在發生變化。各級電力公司普遍建立了自己的內部網絡,實現了辦公自動化,各種管理信息如財務、收費、電力營銷、生產管理等應用系統在電力行業日常業務中扮演了越來越重要的角色。隨著電力信息化的日益增強,對各種信息服務的可用性、穩定性有了更高的要求。
采用RAID和數據備份可以提高關鍵數據的可靠性[3],但是,RAID技術只能解決硬盤的問題,數據備份只能部分解決系統故障后數據的恢復。而服務器本身軟硬件出現的問題,都將造成服務的中斷。因此,對于需要持續可靠地提供信息服務的系統,必須實現服務級別的備份和快速的服務切換,對用戶表現為透明持久的可靠服務。雙機熱備的方式得到了廣泛應用[4,5,6],其能保證企業關鍵業務應用的穩定性和可用性,提供7×24不間斷服務,其缺點是大都僅提供兩個節點的備份,而且,備份服務需要一直運行,這樣使系統資源的有效利用率降低。
本文在總結和分析各種備份技術的基礎上,提出基于組播技術的溫備實施方案。其支持多個后備副本的同時運行,支持主副本的自動選舉;采用狀態轉換的機制,實現主、后備副本狀態一致性維護和功能切換,后備副本只有在切換為主節點時才啟動應用服務,有效減少了后備副本的資源占用。
在備份技術中,副本之間的地位不同。有一副本為主副本,負責與外部交互;其他副本為后備副本,其只與主副本進行交互,備份技術主要包含冷備份、溫備份和熱備份。
冷備份指后備副本在主副本正常操作時不活動,僅在主副本故障時切換、啟動,并代替主副本。主副本在處理過程中將各種關鍵數據保存在一個中間存儲系統中,當主副本發生故障時,后備副本從存儲系統中讀取最新的系統數據,繼續提供系統服務。其優點在于避免了出現掉電等故障時,數據丟失的可能性,提供了以數據為中心的信息系統的可靠性。缺點是發生故障時,后備副本才從數據庫讀取數據,造成切換時間較長。冷備份方式適用于數據庫類型的備份,或業務系統產生大量中間數據的場景。
溫備份中,后備副本在主副本正常操作時也不活動,當主副本完成處理時,必須向其它副本發送更新消息,后備副本更新其狀態并且返回應答消息,主副本收集到所有的應答后才向客戶端返回結果。正常情況下,后備副本不處理和輸出任何數據,后備副本的動態數據由主副本及時更新。發生故障時,后備副本接管系統的輸入和輸出,并且使用最新的動態數據來進行業務處理。其優點是可避免由于軟件故障而造成的多個備份同時失效的情況,缺點是很難有一個有效的機制完全備份動態數據,導致系統切換后,不可避免地丟失部分數據。
熱備份技術中,后備副本和主副本同時接收信息輸入,并進行業務處理,但只有主副本的輸出信息被輸出。當主備切換時,只需選擇后備副本的信息輸出即可。熱備份的優點是可完全保證系統的多個副本動態數據的一致性,從而減少信息備份不完全造成的不一致性。其缺點是多個副本同時運行,占用大量的系統開銷。
多副本冗余的工作方式存在兩種不同應用模式,一是應用服務無狀態信息,比如時間服務,任何一個后備副本都可以隨時充當主副本。二是應用服務具有運行所需的動態信息,如資源管理服務,后備副本必須能周期獲取主副本的當前信息。主副本以組播方式周期性向后備副本發送更新信息,更新的內容與具體的應用有關,后備副本以文件或數據庫的形式存儲最新信息,當副本切換時,以本地保存的狀態初始化應用服務。
在設計過程中,采用一種被動發現的方式,主副本周期性組播hello消息,它包含自身的信息(如優先級、域名、周期T0、ID等信息),其他副本通過該組播端口接收hello消息來識別當前的主副本信息,如果發現自身更優,或一段時間都接收不到hello消息,則觸發進行主副本選舉。選舉出的副本提供業務服務,主/后備副本的切換對客戶端透明。
3.1.1 所用數據結構
各副本通過交互Hello消息,實現主副本的選舉,消息格式為服務協議單元SPU,:
struct SPU{
int priority;//主副本的優先級別int id;//主副本的id,可通過ip或mac得到一個唯一的值
char[20] domain;//域名信息,一個域僅保留一個主副本
int T;//主副本的hello消息周期,作為系統同步周期。
}
采用priority和id字段共同作為優先級參考字段,由于id字段每臺機器唯一,兩個優先級比較必能選出某一個。比較的時候采用以下規則:
優先級priority字段越小,優先級越高。
優先級字段如果相同,id字段值越小優先級越高。
整個系統中優先級最高的副本作為主副本,其他為后備副本。采用224.1.1.1:10096組播接口作為副本的管理接口。
3.1.2 狀態描述
如果主副本異常中斷或退出,系統將有Tcontest的切換時間該時間為后備副本競爭選舉的時間,切換時間將導致[n, n+1]T0的服務延遲。對于實時業務系統,可配置為雙副本機制,避免選舉過程,唯一的后備副本發現主副本退出時,可立刻替代主副本。在客戶方對連接異常采用重傳機制,合理配置重傳次數和周期,能確保客戶端請求得到處理。

圖1 狀態轉化圖
圖1中活躍狀態、傾聽狀態以及退出狀態為三個穩定狀態,其他狀態的保持時間預設為3T0。
啟動狀態:不啟動應用服務,該狀態接收hello消息,用于判斷是否存在更優先的副本;以自身的同步周期作為T,持續時間為Tinit。若接收到其它hello包,則以該包中的周期T作為系統同步周期;如果hello消息中優先級低于自身優先級,則直接進入競爭狀態;若存在優先級與自身相等或者更高的,或者在Tinit中沒有hello消息,則進入傾聽狀態。
傾聽狀態:不啟動應用服務,該狀態接收hello包。如果接收的hello包中的主副本優先級等于或大于自身時,一直處于該狀態;如果hello消息中的優先級低于自身,則進入競爭狀態;如果Taging時間內收不到hello消息,認為主副本異常,進入競爭狀態。
競爭狀態:仍然不啟動應用服務,以自身屬性構造hello消息,參與競爭主副本,周期為Tcontest。如果接收到優先級高于自身的hello包時,說明有更好的副本正在運行,則直接進入傾聽狀態;如果在3T的時間內收不到hello消息,或者收到hello消息的優先級都低于自身時,進入活躍狀態。
活躍狀態:該狀態下的副本為主副本,啟動應用服務,周期性的組播hello消息,通告自身優先級和T參數,并監聽管理接口,如果存在更高優先級的hello消息,則進入退避狀態;若收到退出指令,則直接進入退出狀態。
退避狀態:該狀態由活躍狀態轉換而來,仍然充當主副本的功能,提供應用服務,目的是確認網絡上是否存在優先級更高的副本,以避免系統不穩定造成的頻繁切換。若Tretreat時間內收到優先級更高的hello包,則直接進入傾聽狀態,延遲2T0后關閉應用服務,確保新的主副本已經啟動應用服務;若Tretreat之內不能收到更好的副本信息,則重新回到活躍狀態,而應用服務功能不變。
退出狀態:該狀態關閉應用服務,并退出管理線程。當系統出現異常,或收到退出指令時觸發該狀態。
溫備份算法實現主、后備副本的狀態一致性維護,其流程如圖2所示。

圖2 溫備份流程
算法描述如下:


本文從多個副本選舉實現和溫備份算法兩個方面,闡述了多副本備份技術的原理和相關實現。為提高業務系統的可靠性提供了一種可行的備份實施方案,目前已初步應用于長治市供電局用電稽查系統,改造后的系統能實現系統不間斷的功能服務,證實了該技術的可行性。
[1] 葉國駿, 李莉麗, 雷航. 基于EDF的分布式系統實時容錯調度算法. 計算機工程. 2006.32(4), pp 76-78
[2] 楊軍. 容災備份技術在電信企業中的應用. 江蘇通信技術. 2002.18(6), pp 41-45
[3] 王玲. 企業數據備份和災難恢復. 信息技術與信息化. 2006(3), pp 64-66
[4] 畢全起. 數據的可靠性和軟件容錯系統的實現. 河北師范大學學報(木然科學版). 2002. 26(1).pp 29-31, 64
[5] 武建鋒, 荊文芳. 雙機容錯方案設計.計算機科學與技術. 2006.24(1), pp 19-22
[6] 鄭軍, 付強, 李權. 一種純軟件的雙機熱備份算法. 計算機應用. 2002.22(12), pp 98-100
10.3969/j.issn.1001-8972.2011.08.075
柳 鵬,男,1976年3月出生,1999年7月畢業于華北電力大學計算機專業,工程師,在長治供電分公司科技信息中心工作,任副主任。
何瀟銳,男,1981年12月出生,2003年7月畢業于河南理工大學計算機專業,助理工程師,在長治供電分公司科技信息中心工作,任信息安全專責。