張仲敏,宋 憑
(1 第二炮兵工程大學(xué) 陜西 西安 710025)
(2 西安通信學(xué)院 陜西 西安 710106)
集群系統(tǒng)在信息處理方面的應(yīng)用越來越廣泛。然而集群系統(tǒng)存在單點失效的問題,即隨著系統(tǒng)規(guī)模的擴大,系統(tǒng)節(jié)點可能出現(xiàn)故障而停止服務(wù)。在很多應(yīng)用場合,單點失效會引發(fā)不可彌補的損失。針對此類問題,高可用(HA)通過失效檢測、系統(tǒng)重構(gòu)等方法將任務(wù)由失效節(jié)點轉(zhuǎn)至其他節(jié)點,實現(xiàn)系統(tǒng)級容錯,保障集群系統(tǒng)服務(wù)的高可靠性[1,2]。
HA 系統(tǒng)級的應(yīng)用會帶來下列問題:為每個服務(wù)部署HA系統(tǒng)導(dǎo)致部署的復(fù)雜性和工作量成倍增加;管理員需要對每個HA 服務(wù)系統(tǒng)進行單獨管理,造成系統(tǒng)管理復(fù)雜度和成本的幾何級增長;不同的HA 系統(tǒng)間無法實現(xiàn)資源共享導(dǎo)致資源利用率低下。提出一種基于Agent 的集群系統(tǒng)服務(wù)高可用改進方案?;舅枷胧墙柚渴鹩诩合到y(tǒng)各節(jié)點上的HA-agent,使得系統(tǒng)在正常條件下運行本地服務(wù),同時后臺以同步方式與HA 設(shè)備冗余服務(wù);單點失效時則切換到HA 設(shè)備繼續(xù)提供服務(wù)。
數(shù)據(jù)一致性,即可恢復(fù)性,是衡量HA 系統(tǒng)的指標性因素。只有當同步前后的服務(wù)數(shù)據(jù)保持一致的條件下,失效節(jié)點的服務(wù)才能夠被恢復(fù)。這里給出一種形式化定義。
為了保證數(shù)據(jù)的完整性和可恢復(fù)性,HA 系統(tǒng)中必須保持數(shù)據(jù)一致性。若PC 發(fā)生某種故障導(dǎo)致服務(wù)不可用,需要利用BC 數(shù)據(jù)進行恢復(fù)或直接讓BC 接管服務(wù),主從相位差對在此期間的數(shù)據(jù)損失予以評估。宏觀上,數(shù)據(jù)只有滿足一致性要求,其系統(tǒng)服務(wù)或應(yīng)用程序才可以由備份數(shù)據(jù)啟動;微觀上,數(shù)據(jù)必須含有截止某時刻的所有更新,且此后不存在新的更新,數(shù)據(jù)一致性才能得到保障[3]。
系統(tǒng)緩存機制在提升系統(tǒng)性能的同時也帶來不利影響,即可能存在I/O 操作中的部分寫操作并沒有實時寫回,只是將結(jié)果暫存于緩存內(nèi)。因此,當且僅當系統(tǒng)暫停提交寫請求且緩存為空時,PC 與BC 應(yīng)用級數(shù)據(jù)一致性才能得以保障。
高可用通?;诠?jié)點冗余,方法為給每個節(jié)點配備HA 節(jié)點以構(gòu)成服務(wù)冗余,原節(jié)點為主節(jié)點,負責(zé)對外提供服務(wù),增加的節(jié)點為從節(jié)點,負責(zé)提供服務(wù)冗余,主從節(jié)點共同構(gòu)成該節(jié)點的HA 系統(tǒng);正常流程模式下由主節(jié)點進行服務(wù),如發(fā)生故障,將任務(wù)切換至從節(jié)點,由其接管服務(wù)[4]?;诠?jié)點的HA模式條件下必須配備雙服務(wù)節(jié)點;導(dǎo)致大規(guī)模的集群系統(tǒng)必然會產(chǎn)生額外增配大量資源的需求,且管理和維護開銷也大幅增加;此外,大部分時間里只有主節(jié)點提供服務(wù),系統(tǒng)資源利用率不高,造成資源的浪費。為此本文提出基于存儲設(shè)備冗余來設(shè)計高可用方案,其基本架構(gòu)如圖1 所示。
圖1 存儲設(shè)備冗余HA
方案為每個節(jié)點成對配備存儲器,本地物理磁盤Disk 與ND(冗余磁盤,這里考慮實現(xiàn)采用網(wǎng)絡(luò)存儲機制,為網(wǎng)絡(luò)磁盤),通過HA-agent 將二者綁定協(xié)作。其HA 機制設(shè)定為:正常工作時,Disk 與ND 分別為主、從設(shè)備的角色,節(jié)點運行于Disk 端,同時以既定策略同步數(shù)據(jù)到遠端ND,Disk 失效時將節(jié)點與遠端ND 進行綁定,由其接管工作并繼續(xù)提供服務(wù)環(huán)境。
與基于節(jié)點冗余的HA 相比,方案設(shè)計的HA 冗余的是節(jié)點上的存儲設(shè)備,在原型系統(tǒng)實現(xiàn)時采用經(jīng)過虛擬化處理后的網(wǎng)絡(luò)存儲設(shè)備池,對原系統(tǒng)而言只需配備一個集中式的網(wǎng)絡(luò)存儲設(shè)備,系統(tǒng)投資較小。此外,增加的存儲設(shè)備可實現(xiàn)后臺統(tǒng)一管理,具備較高的數(shù)據(jù)安全性和便捷的操作性等特點,同時不會大幅度地增加系統(tǒng)復(fù)雜度和維管開銷。
數(shù)據(jù)的備份有文件級(file)和數(shù)據(jù)塊級(block)2 種基本類型。文件級備份時,一個I/O 操作對文件造成的任何變化,都必須將文件進行整體備份,備件開銷相對較大,不適用于有頻繁I/O 操作的大文件的情況;在數(shù)據(jù)塊級模式下,僅需備份被I/O 操作改變的那些數(shù)據(jù)塊,而不需備份文件的所有數(shù)據(jù)區(qū)域[5]。文章擬在基于存儲設(shè)備冗余的HA 架構(gòu)基礎(chǔ)上,研究基于數(shù)據(jù)塊粒度的HA-agent 實現(xiàn)機制以達成服務(wù)高可用,相比文件級備份可以極大降低系統(tǒng)的開銷。根據(jù)I/O 請求的完成時機,基于IRP 數(shù)據(jù)復(fù)制可以劃分為同步與異步2 種??紤]數(shù)據(jù)一致性要求,文章采用同步I/O 高可用(Sync I/O HA)模式。
同步I/O 復(fù)制是指將服務(wù)數(shù)據(jù)同步到后臺服務(wù)器時采用原子性成對處理的方式,每個本地I/O 請求完成后必須等待遠端ND 亦完成該請求并返回確認信息后,才最終向上層返回該請求的完成信息,同時釋放其占用的系統(tǒng)資源。Sync I/O HA 系統(tǒng)工作流程如圖2 所示。該模式下設(shè)備層包括本地Disk與遠端ND,通過HA-agent 共同向上層呈現(xiàn)一個統(tǒng)一的邏輯設(shè)備Virtual Disk(VD),上層用戶不能直接訪問底層設(shè)備,而只能通過VD 進行交互。其交互機制設(shè)計為:上層用戶發(fā)往本地Disk 的I/O 寫請求由邏輯層Virtual Disk 同時發(fā)送到遠端ND,只有當兩端都處理完該I/O 請求并都返回完成信息后,邏輯層VD 才向上層用戶返回完成確認信息。這樣的設(shè)計保證了所有I/O 寫請求都是原子性成對處理的,確保了設(shè)備兩端的數(shù)據(jù)一致性。該機制核心思想為:對于任意I/O 寫請求,只有當兩端設(shè)備都成功完成時才向上層返回完成確認信息;否則如果有任一端處理失敗,直接向上層返回失敗信息,而無視另一端的處理結(jié)果。
圖2 Sync I/O HA 工作流程
圖2 中Sync 與Recover 為2 個底層設(shè)備間的同步過程,具體呈現(xiàn)為2 個內(nèi)核態(tài)的同步線程,分別負責(zé)HA 系統(tǒng)的初始構(gòu)建和災(zāi)后恢復(fù)。
HA 初始構(gòu)建是形成高可用的基礎(chǔ),由內(nèi)核態(tài)同步線程Sync 進行控制。在沒有建立HA 系統(tǒng)前,節(jié)點只能運行本地服務(wù),增加網(wǎng)絡(luò)設(shè)備ND 后系統(tǒng)進入HA 初始構(gòu)建階段,即將本地服務(wù)數(shù)據(jù)同步到遠端ND 的過程。因為此時節(jié)點必須停止對外提供的一切服務(wù),故構(gòu)建過程應(yīng)盡量短以盡快恢復(fù)正常服務(wù)功能。
HA 構(gòu)建完成后,節(jié)點繼續(xù)提供正常服務(wù)功能,其Disk 與ND 形成基于設(shè)備的高可用。上層用戶產(chǎn)生I/O 請求時,由HA-agent 進行復(fù)制并分別發(fā)送給底層設(shè)備Disk 與ND 處理,只有當HA-agent 接收到兩端都返回的完成信息之后,才向上層返回該IRP 已處理完成的確認信息。如果任一端返回失敗信息,HA-agent 就向上層返回該IRP 已處理失敗的信息。I/O請求處理策略的原子性設(shè)計保證了兩端設(shè)備上服務(wù)數(shù)據(jù)的一致性。
出現(xiàn)單點失效時,將失效節(jié)點與其高可用設(shè)備遠端ND相綁定,由ND 啟動系統(tǒng)服務(wù)備份以恢復(fù)其正常功能。服務(wù)空閑時啟動內(nèi)核態(tài)線程Recover 進行ND 端向Disk 端的數(shù)據(jù)遷移。與高可用構(gòu)建階段相同,在此期間應(yīng)暫停正常服務(wù)功能,遷移速度應(yīng)保證系統(tǒng)能盡快完成遷移以繼續(xù)提供正常的服務(wù)。結(jié)束后由本地設(shè)備啟動服務(wù)即可進入HA 系統(tǒng)的正常運行流程。
以上高可用方案實現(xiàn)相對簡單,其特點在于由IRP 處理策略的原子設(shè)計所決定的數(shù)據(jù)一致性保護,保證了服務(wù)數(shù)據(jù)的無損恢復(fù)。與此同時,其劣勢也相對明顯,如果網(wǎng)絡(luò)傳輸速率不高,遠端ND 通過網(wǎng)絡(luò)收發(fā)數(shù)據(jù)(這里主要指IRP)的通信開銷相對較高,因此本地設(shè)備的時間開銷中只有少部分用于處理I/O 請求,而大部分都用于等待遠端設(shè)備返回信息,導(dǎo)致系統(tǒng)性能降低,甚至極端情況下系統(tǒng)假死。故本方案在網(wǎng)絡(luò)傳輸速率較高且?guī)捀哂趯懰俾史逯档沫h(huán)境中應(yīng)用情況較好。Sync I/O HA 以犧牲系統(tǒng)性能為代價換取HA 的高可用性。
提出并分析的基于內(nèi)核態(tài)同步I/O 請求處理的設(shè)備冗余高可用方案,實現(xiàn)了同步高可用原型系統(tǒng),獲取了較高的HA可用性。下一步研究針對Sync I/O HA 導(dǎo)致系統(tǒng)性能下降的不足,將考慮基于異步I/O 的HA 模式,在保證數(shù)據(jù)一致性的前提下盡量提高系統(tǒng)整體性能。
[1]Jim Gray,Daniel P.Siewiorek.High Availability Computer Systems[J].IEEE Computer,1991,24(9):39-48.
[2]J S Glider,C F Fuente,W J Scales.The software architecture of a SAN storage control system[J].IBM System Journal,2003,42(2):232-249.
[3]張仲敏,宋憑,許魯.服務(wù)在線遷移系統(tǒng)研究與實現(xiàn)[J].計算機科學(xué),2007(12):111-114.
[4]Hertong Song,Chikchai“box”Learngsuksun,Raja Nassar,etc.Availability Proceedings of the First International Conference on Availability[C].Reliability and Security,2006:251-254.
[5]Dina Bitton,Jim Gray,Disk Shadowing.InVery Large Database Conference XIV[C].1988:331-338.
[6]Richard Hou,Steve Feibus,Patty Young.Data Replication and Recovery with Dell/EMC SnapView 2.0 and MirrorView[R].Dell,2003.