王 宇,孫慕華
(北京交通大學(xué),北京 100093)
科技水平的不斷提升,以云計(jì)算為核心的應(yīng)用已變成網(wǎng)絡(luò)信息化發(fā)展的必然走向。通過(guò)把計(jì)算機(jī)桌面實(shí)施虛擬化,用戶能夠采用不同終端設(shè)施,例如筆記本電腦、智能手機(jī)等訪問(wèn)自身桌面環(huán)境,操作安全靈活性好。因其成本少、低功耗等優(yōu)勢(shì),在電力、辦公領(lǐng)域得到大量運(yùn)用[1]。
服務(wù)器在計(jì)算機(jī)網(wǎng)絡(luò)內(nèi)具備重要地位,是保障網(wǎng)絡(luò)正常運(yùn)轉(zhuǎn)的實(shí)時(shí)設(shè)備。確保服務(wù)器高效可靠運(yùn)轉(zhuǎn)是桌面虛擬化軟件使用的前提條件。服務(wù)器冗余設(shè)計(jì)要借助多個(gè)相同部件實(shí)現(xiàn)單個(gè)部件功能,提升全局系統(tǒng)完整性,使用冗余設(shè)計(jì)的系統(tǒng)要比傳統(tǒng)方法下的系統(tǒng)結(jié)構(gòu)至少高出一個(gè)數(shù)量級(jí),安全性能也得到質(zhì)的飛躍。
為了更好地維護(hù)冗余系統(tǒng)安全性,文獻(xiàn)[2]采用粗粒度三模冗余結(jié)構(gòu)和細(xì)粒度三模冗余結(jié)構(gòu)對(duì)系統(tǒng)功能模塊采取容錯(cuò)設(shè)計(jì),將細(xì)粒度故障檢測(cè)單元嵌入各冗余模塊中,故障檢測(cè)冗余模塊,綜合動(dòng)態(tài)部分重構(gòu)技術(shù)在不妨礙系統(tǒng)正常工作基礎(chǔ)上完成故障實(shí)時(shí)修復(fù)。但面對(duì)較為龐大的系統(tǒng)時(shí),此方案的容錯(cuò)設(shè)計(jì)模式精度不高。文獻(xiàn)[3]通過(guò)人工整理方式總結(jié)錯(cuò)誤模式及其對(duì)應(yīng)的修復(fù)方法,使用重寫規(guī)則表達(dá)錯(cuò)誤模式,獲得程序中可能的缺陷位置;使用修復(fù)選項(xiàng)生成方法得到缺陷的修復(fù)選項(xiàng),運(yùn)用深度學(xué)習(xí)預(yù)測(cè)錯(cuò)誤程序錯(cuò)誤點(diǎn)語(yǔ)句結(jié)構(gòu),提高程序修復(fù)率。但該方法人工整理模式速率較慢,即時(shí)性很差。
針對(duì)上述方法欠缺之處,本文提出一種基于連續(xù)時(shí)間馬爾可夫鏈(Continuous Time Markov Chain,CTMC)的服務(wù)器冗余故障自修復(fù)方法。通過(guò)剖析桌面虛擬化軟件及服務(wù)器冗余內(nèi)部結(jié)構(gòu),明確各部分核心任務(wù),診斷服務(wù)器冗余系統(tǒng)是否發(fā)生故障,利用CTMC方法計(jì)算系統(tǒng)可用性,算出瞬態(tài)故障節(jié)點(diǎn)分配情況,達(dá)到故障節(jié)點(diǎn)自修復(fù)目的。
桌面虛擬化軟件采用集中式數(shù)據(jù)管理策略,增強(qiáng)網(wǎng)絡(luò)信息的連續(xù)性與平穩(wěn)性。軟件從全局結(jié)構(gòu)入手,對(duì)物理服務(wù)器、網(wǎng)絡(luò)鏈路和有關(guān)軟硬件資源都使用冗余設(shè)計(jì)理念[4],為了方便控制,把資源池邏輯分成資源管理池和資源負(fù)載池。
虛擬化軟件資源管理池與資源負(fù)載池設(shè)計(jì)參變量如表1所示。
表1 虛擬化軟件設(shè)計(jì)參數(shù)
針對(duì)各子部PC機(jī),為統(tǒng)一操控,要在服務(wù)器最底端安設(shè)VMware vSphere,利用平臺(tái)物理層模式將數(shù)據(jù)信息匯集到數(shù)據(jù)中心,便于集中管理。高可用和動(dòng)態(tài)資源分配功能,可達(dá)到集群中主機(jī)的自主資源分配,把虛擬機(jī)從負(fù)載高的主機(jī)上自動(dòng)遷移至負(fù)載低的主機(jī)上,確保每個(gè)主機(jī)資源的適當(dāng)使用。
從總體層面而言,桌面虛擬化軟件會(huì)根據(jù)Block將全部虛擬桌面劃分到8個(gè)C類網(wǎng)絡(luò)的VLAN內(nèi)。虛擬化服務(wù)器通過(guò)匯聚層與中心交換機(jī)維持信息聯(lián)系,從服務(wù)器IP設(shè)計(jì)角度來(lái)看,依照詳細(xì)用途劃分為虛擬桌面、虛擬服務(wù)器和物理終端等,并把全部服務(wù)器IP地址根據(jù)C類地址段進(jìn)行描述。融合軟件PC機(jī)數(shù)量巨大特征,將桌面資源池內(nèi)每4臺(tái)物理服務(wù)器分割為一個(gè)集合,用集合模式讓軟件界面管理更加清楚明了。
把view采用的8組浪潮服務(wù)器分成9個(gè)邏輯單元。各個(gè)邏輯單元涵蓋完整的view環(huán)境[5],通過(guò)管理服務(wù)器、虛擬桌面和物理服務(wù)器共同構(gòu)成。安排9套view環(huán)境的核心要素是運(yùn)用該方法緩和過(guò)程故障,有效分解故障,不會(huì)產(chǎn)生全局失控。
服務(wù)器冗余技術(shù)為一種軟硬件相互融合、具備極強(qiáng)容錯(cuò)能力的使用方案,若某臺(tái)服務(wù)器產(chǎn)生故障,其余服務(wù)器無(wú)需人工干預(yù)就能執(zhí)行服務(wù)任務(wù),確保軟件可以連續(xù)提供服務(wù)。服務(wù)器冗余方案通常要使用共享的儲(chǔ)存設(shè)施與專業(yè)冗余軟件,此種方案已廣泛應(yīng)用在金融、電信等領(lǐng)域,但建設(shè)成本昂貴。針對(duì)設(shè)備運(yùn)維平臺(tái),使用低成本并符合全部時(shí)段服務(wù)的策略更加適宜,也就是在沒(méi)有共享儲(chǔ)存設(shè)施基礎(chǔ)上完成多個(gè)服務(wù)器錯(cuò)誤視觀察與數(shù)據(jù)同步。
桌面虛擬化軟件服務(wù)器冗余策略中,數(shù)據(jù)庫(kù)使用高等保護(hù)模式,將4臺(tái)計(jì)算機(jī)當(dāng)作數(shù)據(jù)庫(kù)服務(wù)器,其中一臺(tái)是主用數(shù)據(jù)庫(kù)服務(wù)器,一臺(tái)是備用數(shù)據(jù)庫(kù)服務(wù)器,兩臺(tái)是數(shù)據(jù)庫(kù)見(jiàn)證服務(wù)器。主、備兩臺(tái)數(shù)據(jù)庫(kù)服務(wù)器內(nèi),無(wú)論哪個(gè)數(shù)據(jù)路產(chǎn)生故障,可在短時(shí)間內(nèi)實(shí)現(xiàn)故障遷移[6],僅需保障主備中一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器正常運(yùn)轉(zhuǎn),就能提供用戶所需的數(shù)據(jù)操作。
將見(jiàn)證服務(wù)器和應(yīng)用代理服務(wù)器安排在相同主機(jī)內(nèi),測(cè)驗(yàn)主備數(shù)據(jù)服務(wù)器能否正常運(yùn)轉(zhuǎn),同時(shí)具備故障自主遷移功能。考慮虛擬化軟件遭受惡意攻擊情況,服務(wù)器保障策略還要包含一臺(tái)應(yīng)急服務(wù)器。桌面虛擬化軟件服務(wù)器冗余結(jié)構(gòu)如圖1所示。
圖1 服務(wù)器冗余結(jié)構(gòu)示意圖
冗余服務(wù)器關(guān)鍵裝設(shè)WINDOWS SERVER 2008 R2、IIS7等軟件,其硬件配置如表2所示。
表2 軟件服務(wù)器冗余配置
服務(wù)器冗余技術(shù)是增強(qiáng)桌面虛擬化軟件系統(tǒng)可靠性的方法之一,但也給故障勘測(cè)工作帶來(lái)很大難度。系統(tǒng)具備冗余技術(shù)后,故障單元與測(cè)試之間變成了多對(duì)一模式,讓冗余系統(tǒng)單元故障在數(shù)據(jù)流可達(dá)測(cè)試點(diǎn)上的測(cè)量精度變得極不穩(wěn)定[7]。利用服務(wù)器冗余故障與測(cè)試之間的特殊性,通過(guò)以下過(guò)程完成故障策略優(yōu)化。
把服務(wù)器冗余系統(tǒng)診斷規(guī)劃為六元組(S,P,T,Q,C,D),P為系統(tǒng)形態(tài)的先驗(yàn)概率向量,T為可用測(cè)驗(yàn)有限集,Q為系統(tǒng)內(nèi)節(jié)點(diǎn)有限集,C為將時(shí)間、人力需求或經(jīng)濟(jì)指標(biāo)衡量的測(cè)試成本向量,D為故障測(cè)試有關(guān)性矩陣,描述了系統(tǒng)故障形態(tài)和測(cè)試之間的耦合性。其中S代表和服務(wù)器冗余系統(tǒng)狀況有關(guān)的有限集,將其記作
S={s1,s2,…,sm,sm+1,…,sm+mmin}
(1)
式中,si(1≤i≤m)是單故障情況,si(m+1≤i≤m+mmin)是系統(tǒng)內(nèi)的最小故障情況。
服務(wù)器冗余最佳診斷模式,即搜尋讓系統(tǒng)狀態(tài)隔絕到單個(gè)故障形態(tài)或故障組合的最佳測(cè)試序列,此序列符合測(cè)試成本均值最小條件。測(cè)試成本均值最小的優(yōu)化目標(biāo)函數(shù)是
(2)
式中,H(i)為診斷樹(shù)H內(nèi)隔絕出的故障si的測(cè)試序列,|H(i)|是序列長(zhǎng)度,cH(i)[j]是序列H(i)內(nèi)第j個(gè)測(cè)試所耗費(fèi)的金額。
依照上述內(nèi)容分析,服務(wù)器冗余系統(tǒng)的有關(guān)性矩陣共有m+mmin行,m是單故障形態(tài)數(shù)量,mmin是最小故障數(shù)量。使用符號(hào)X=Θ(L;F1,…,F(xiàn)L;G)定義在各個(gè)OR節(jié)點(diǎn)內(nèi)的多故障模糊集合,G為S有限集內(nèi)的子集,是一個(gè)無(wú)故障形態(tài)集合[8],F(xiàn)i(i=1,2,…,L)是故障形態(tài)集合,其中包含正常、單故障與多重故障,將其描述成
Θ(L;F1,…,F(xiàn)L;G)=
{X?S,X∩Fi≠φ,i=1,…,L,X∩G=φ}
(3)
實(shí)施服務(wù)器冗余診斷過(guò)程中,在多故障診斷前提下,考慮系統(tǒng)與方法復(fù)雜性之間的指數(shù)增長(zhǎng)關(guān)聯(lián),使用最優(yōu)AO*方法作為基本決策樹(shù),利用以下過(guò)程完成診斷決策樹(shù):
設(shè)定原始狀態(tài)為
S0={s0}∪S={s0,s1,…,sm,sm+1,…,sm+mc}
(4)
X=Θ(L;F1=S0;G=φ)
(5)
將式(6)作為原始狀態(tài)構(gòu)成的最佳單故障診斷決策樹(shù),并把最小故障當(dāng)作一個(gè)整體。
F1=S0={s0,s1,…,sm,sm+1,…,sm+mc}
(6)
針對(duì)決策樹(shù)內(nèi)各個(gè)沒(méi)有處理的葉節(jié)點(diǎn),假如具備|Fi|=1,那么替換|Fi|=1的單元si,把si引入到G內(nèi)。若擁有一個(gè)最小故障sj∈G,且m+1≤j≤m+mc,得到|sj-si|=1且sk=|sj-si|,則sk沒(méi)有產(chǎn)生故障,引入到G中。
針對(duì)決策樹(shù)上全部沒(méi)有處理的葉節(jié)點(diǎn),倘若不具備|Fi|=1,計(jì)算此葉節(jié)點(diǎn)內(nèi)Fi的最小碰集,產(chǎn)生全新的最優(yōu)單故障策略。
觀察新決策樹(shù)內(nèi)所有未處理的葉節(jié)點(diǎn)[9],如果系統(tǒng)無(wú)故障,替換F內(nèi)全部單元,標(biāo)記此節(jié)點(diǎn)已經(jīng)處理,完成服務(wù)器冗余故障診斷。
明確服務(wù)器冗余產(chǎn)生故障后,采用CTMC方法完成器故障自修復(fù),提升桌面虛擬化軟件實(shí)用性,讓用戶得到滿意的操作體驗(yàn)。
可用性是實(shí)際服務(wù)時(shí)長(zhǎng)與需求服務(wù)時(shí)長(zhǎng)的比值[10],設(shè)定平均無(wú)故障時(shí)間(mean time to failure,MTTF)和平均故障修復(fù)時(shí)間(mean time to recovery,MTTR),將可用性計(jì)算公式記作
(7)
要提升服務(wù)器冗余系統(tǒng)可靠性,就要讓MTTF盡可能地長(zhǎng),MTTR為最短。MTTR是故障產(chǎn)生到故障修復(fù)的時(shí)間間隔,涵蓋如下解決時(shí)間:故障檢測(cè)、告警分析、保護(hù)與恢復(fù)等。
桌面虛擬化軟件服務(wù)器冗余系統(tǒng)狀態(tài)空間有限,類屬于連續(xù)時(shí)間狀態(tài)離散隨機(jī)過(guò)程,是一種連續(xù)時(shí)間的馬爾可夫鏈,所以使用CTMC方法完成故障自修復(fù)分析,具體如圖2所示。
圖2 桌面虛擬化軟件服務(wù)器冗余系統(tǒng)的CTMC模型
圖2(a)是虛擬化軟件的服務(wù)器冗余系統(tǒng)可用性的馬爾可夫模型,圖內(nèi)虛線代表可選,覆蓋元素與故障自修復(fù)是互相獨(dú)立的[11]。設(shè)定系統(tǒng)覆蓋元素是1。如圖2(b)所示,在使用協(xié)議拓展方案過(guò)程中,備用系統(tǒng)切換至主系統(tǒng),不用造成服務(wù)中斷;圖2(c)使用完全同步時(shí),主系統(tǒng)故障,備用系統(tǒng)故障率從λ上升至λs。狀態(tài)0是正常狀態(tài),主備系統(tǒng)都能有效運(yùn)轉(zhuǎn);狀態(tài)1是單點(diǎn)故障狀態(tài);狀態(tài)2是主備系統(tǒng)都出現(xiàn)故障;狀態(tài)3是切換形態(tài),備用系統(tǒng)代替主系統(tǒng);A(t)是可用性時(shí)間函數(shù);F(t)是虛擬化軟件故障時(shí)間函數(shù),順從λ指數(shù)分布,λ代表故障率;R(t)是故障修復(fù)時(shí)間函數(shù),順從μ指數(shù)分布,μ為修復(fù)率;Pi(t)是虛擬化軟件在i狀態(tài)下的概率時(shí)間函數(shù);e是覆蓋元素;λf是主軟件產(chǎn)生故障后,備用系統(tǒng)的故障率;λs是軟件從狀態(tài)3變成狀態(tài)1的切入時(shí)間分布率。
穩(wěn)態(tài)服務(wù)器冗余系統(tǒng)可用性為:
(8)
以瞬時(shí)故障為核心,將服務(wù)器冗余系統(tǒng)節(jié)點(diǎn)因能量衰退,對(duì)瞬態(tài)故障實(shí)施診斷的函數(shù)解析式描述為
(9)
其中,xj′表示瞬態(tài)故障節(jié)點(diǎn),ET是節(jié)點(diǎn)能量衰退臨界閾值,E(xj′)是節(jié)點(diǎn)xj的鄰近節(jié)點(diǎn),ζ是節(jié)點(diǎn)能量半衰退系數(shù)。若運(yùn)算得到的f(xj)值低于0,證明此節(jié)點(diǎn)已經(jīng)產(chǎn)生瞬態(tài)故障。
按照式(16)可明確系統(tǒng)瞬態(tài)故障緣由,在系統(tǒng)能量總值有限狀況下,恰當(dāng)分配給系統(tǒng)瞬態(tài)故障節(jié)點(diǎn)部分能量,讓其恢復(fù)正常運(yùn)作[12]。設(shè)定可分配能量總值是E(X),瞬態(tài)故障節(jié)點(diǎn)個(gè)數(shù)是k,則E(xj)剩余能量就是瞬態(tài)故障節(jié)點(diǎn)所需能量,計(jì)算過(guò)程為
(10)
算出瞬態(tài)故障節(jié)點(diǎn)分配情況,即可完成故障節(jié)點(diǎn)自修復(fù)目標(biāo),將瞬態(tài)故障節(jié)點(diǎn)分配的能量公式表示成
(11)
使用NS2仿真系統(tǒng)評(píng)價(jià)本文方法實(shí)用性。服務(wù)器冗余系統(tǒng)網(wǎng)絡(luò)內(nèi)隨機(jī)分布60個(gè)節(jié)點(diǎn),分布范圍是1600m×400m,使用Random Waypoint移動(dòng)模型,節(jié)點(diǎn)在分布范圍中任意挑選一個(gè)目標(biāo)地點(diǎn),使用最高12m/s速率轉(zhuǎn)移到該地,駐留一段時(shí)間后,再隨機(jī)選擇下個(gè)目標(biāo)點(diǎn)。
為模擬真實(shí)服務(wù)器冗余系統(tǒng)內(nèi)節(jié)點(diǎn)狀態(tài)的改變情況,節(jié)點(diǎn)在一定幾率下隨機(jī)產(chǎn)生狀態(tài)變化,包含節(jié)點(diǎn)開(kāi)啟、閉合與異常故障。對(duì)本文方法與文獻(xiàn)[2]、[3]方法依次進(jìn)行仿真,驗(yàn)證故障修復(fù)時(shí)間、故障控制開(kāi)銷和故障修復(fù)數(shù)據(jù)丟包率三個(gè)指標(biāo)。
(12)
(13)
假設(shè)異常故障節(jié)點(diǎn)占30%,正常閉合節(jié)點(diǎn)占70%,通過(guò)調(diào)整節(jié)點(diǎn)最高停留時(shí)長(zhǎng)呈現(xiàn)系統(tǒng)拓?fù)渥兓?,如圖3和圖4所示。
圖3 故障修復(fù)時(shí)間對(duì)比示意圖
圖4 故障控制分組開(kāi)銷對(duì)比示意圖
由圖3、圖4中可知,本文方法在不同網(wǎng)絡(luò)拓?fù)涓淖儬顩r下的故障修復(fù)性能良好,故障修復(fù)時(shí)間平均降低約8%,控制開(kāi)銷也顯著低于文獻(xiàn)方法。出現(xiàn)這種現(xiàn)象的原因?yàn)?,所提方法?chuàng)建了六元組下的多故障模糊集合,很好地囊括了極易產(chǎn)生的故障類型,從本質(zhì)上提升故障診斷效率,減少了故障修復(fù)時(shí)間與控制開(kāi)銷。
表3 對(duì)比了三種方法故障修復(fù)數(shù)據(jù)丟包率,即修復(fù)質(zhì)量。
表3 故障修復(fù)數(shù)據(jù)丟包率對(duì)比
由表3可知,本文方法可以動(dòng)態(tài)調(diào)整節(jié)點(diǎn)權(quán)值,完成修復(fù)過(guò)程的負(fù)載均衡,并且對(duì)系統(tǒng)可用性采取全方面評(píng)估,確保用戶使用桌面虛擬化軟件時(shí),產(chǎn)生操作故障時(shí)的修復(fù)質(zhì)量。
服務(wù)器冗余系統(tǒng)可保證桌面虛擬化軟件處于故障狀態(tài)下的正常運(yùn)行,為妥善處理服務(wù)器冗余故障問(wèn)題,設(shè)計(jì)一種基于連續(xù)時(shí)間馬爾可夫鏈的服務(wù)器冗余故障自修復(fù)方法。該方法故障修復(fù)精度高、速率快,魯棒性強(qiáng),為桌面虛擬化今后的持續(xù)發(fā)展注入新的發(fā)展動(dòng)力。