顧昕波
摘要:隨著日益興起的新媒體、全媒體在廣電領(lǐng)域展開(kāi),業(yè)務(wù)的連續(xù)性與安全成為越來(lái)越值得重視的一個(gè)話題。文章將對(duì)如何降低業(yè)務(wù)中斷的幾率,及時(shí)發(fā)現(xiàn)隱患所在,和災(zāi)備的一些常見(jiàn)核心技術(shù)展開(kāi)討論。
關(guān)鍵詞:高可用性 失效切換 與切回 內(nèi)存回寫(xiě) 鏈路綁定 復(fù)制 腦裂 元數(shù)據(jù)
對(duì)于廣電行業(yè)的播出與制作,最重要的是音視頻數(shù)據(jù)的安全可用與數(shù)據(jù)庫(kù)的安全可用。通常的做法是將音視頻數(shù)據(jù)放置在存儲(chǔ)上,數(shù)據(jù)庫(kù)置于群集中。采用冗余的設(shè)備與切換機(jī)制,當(dāng)服務(wù)器存儲(chǔ)出現(xiàn)故障時(shí)應(yīng)用不中斷,或減少中斷時(shí)間。理論上,這種標(biāo)準(zhǔn)的容災(zāi)操作是安全有效的。
磁盤(pán)陣列
對(duì)于存儲(chǔ),磁盤(pán)陣列選型時(shí)采用全冗余的結(jié)構(gòu),即硬盤(pán)做raid,控制器、電源等都是雙份互備。在未上線前通常會(huì)嘗試拔一兩塊硬盤(pán),觀察存儲(chǔ)是否能正常重建;拔插控制器,測(cè)試其切換時(shí)間;關(guān)閉其中一個(gè)電源看整個(gè)設(shè)備是否會(huì)斷電。另外,如果存儲(chǔ)通過(guò)光纖與網(wǎng)線提供連接,還需要測(cè)試多路徑是否有效,iqn與wwn能否自動(dòng)重連,ip可否正常漂移。整體的failover與failback必須有效。
一、寫(xiě)緩存。正式上線后,隨著時(shí)間的推移,問(wèn)題逐漸暴露出來(lái)。比如寫(xiě)緩存(writeback cache)損壞,廠商給出結(jié)論是不會(huì)中斷應(yīng)用,但會(huì)降低讀寫(xiě)速度,倘若業(yè)務(wù)本身對(duì)讀寫(xiě)速度要求不高(如音頻制作),則相安無(wú)事。然而用戶所不知道的是,當(dāng)寫(xiě)緩存(writeback cache)在損壞的一瞬間會(huì)丟失存在cache中的數(shù)據(jù),假如此時(shí)陣列正好在做重建(rebuild)操作,那么在未來(lái)再次出現(xiàn)硬盤(pán)故障時(shí),很有可能會(huì)卡在某個(gè)百分比進(jìn)度上,再也無(wú)法完成重建。
當(dāng)使用writeback時(shí),系統(tǒng)認(rèn)為數(shù)據(jù)寫(xiě)入內(nèi)存即完成了寫(xiě)操作;而使用write through時(shí),數(shù)據(jù)通過(guò)內(nèi)存同步到硬盤(pán)后,系統(tǒng)才認(rèn)為完成了寫(xiě)操作。這也是導(dǎo)致兩者性能差異的主要原因。
二、鏈路切換。當(dāng)系統(tǒng)原有的規(guī)則發(fā)生調(diào)整時(shí),也會(huì)發(fā)生相似的情況。尤其是業(yè)務(wù)原因?qū)е孪到y(tǒng)調(diào)整后無(wú)法測(cè)試,以及不能人為模擬出故障環(huán)境的情況下,諸如多根網(wǎng)線做聚合(bonding),當(dāng)其中某根網(wǎng)線中斷后又恢復(fù),則發(fā)生ip漂移后又復(fù)原,發(fā)現(xiàn)跨網(wǎng)段不能訪問(wèn),但同網(wǎng)段可以訪問(wèn)。此時(shí)可以判斷發(fā)包與收包走的不是同一條路由,交換機(jī)的路由表里還遺留著先前網(wǎng)絡(luò)failover時(shí)的路由信息。這是非常危險(xiǎn)的狀況,所以對(duì)存儲(chǔ)或網(wǎng)絡(luò)設(shè)備的任何操作要安排合適的停機(jī)時(shí)段。即使有十成的把握,也不可大意。
存儲(chǔ)廠商盡管宣稱產(chǎn)品具有諸多可靠的功能,包括支持各種RAID類型,雙控允許雙active負(fù)載及任意切換,網(wǎng)絡(luò)能夠做聚合,形成性能與安全上的雙重優(yōu)勢(shì),但仍不乏隱患。實(shí)測(cè)時(shí)往往不可見(jiàn),而絕大多數(shù)在滿足多個(gè)條件后才會(huì)觸發(fā)。
三、鏡像與復(fù)制。對(duì)于DAS,常規(guī)容災(zāi)手段是用兩個(gè)及多個(gè)存儲(chǔ)柜做互備,形式上分同步鏡像與異步復(fù)制兩種模式,機(jī)制上則分為文件級(jí)與塊級(jí)。對(duì)于誤刪除的文件,只在異步情況下才有可能被找回。但廣電行業(yè)追求備份的時(shí)效性,很少會(huì)使用異步,畢竟考慮到數(shù)據(jù)庫(kù)與對(duì)應(yīng)的音頻文件必須分秒不差。假如原存儲(chǔ)宕機(jī)啟用備份存儲(chǔ),出現(xiàn)小時(shí)級(jí)別的數(shù)據(jù)差量,是不能容忍的。對(duì)于損壞的原始文件(可能文件頭錯(cuò)誤無(wú)法讀取),塊級(jí)別的同步會(huì)將錯(cuò)誤信息一起復(fù)制到備份存儲(chǔ)中。而文件級(jí)的同步則會(huì)跳過(guò)該文件。這也是兩種機(jī)制的細(xì)微差別。
分布式文件系統(tǒng)
一、元數(shù)據(jù)管理。當(dāng)存儲(chǔ)的規(guī)模達(dá)到一定量,對(duì)性能有所要求時(shí),DAS就無(wú)法滿足了。對(duì)于視頻業(yè)務(wù)的一種解決方案是使用SAN配合分布式文件系統(tǒng),比如stornext,lustre等。此時(shí)元數(shù)據(jù)服務(wù)器便成為重點(diǎn)保護(hù)對(duì)象,所有文件的位置索引存放于元數(shù)據(jù)中。常規(guī)上會(huì)設(shè)置兩臺(tái)元數(shù)據(jù)服務(wù)器,它們處于active-passive模式,采用心跳的方式互相監(jiān)測(cè)。而所有的節(jié)點(diǎn)服務(wù)器均連接同一套存儲(chǔ)陣列,可以是ip或者FC的形式。每一個(gè)節(jié)點(diǎn)服務(wù)器各出一個(gè)用戶ip,它們用一個(gè)虛擬ip來(lái)輪詢。這樣用戶工作站只要連接虛擬ip便可以訪問(wèn)文件系統(tǒng)了。另一個(gè)傳統(tǒng)的做法是在用戶工作站上安裝廠商提供的客戶端,由客戶端發(fā)起輪詢,在某個(gè)節(jié)點(diǎn)發(fā)生故障時(shí)可以及時(shí)切換訪問(wèn)路徑。SAN環(huán)境最怕文件系統(tǒng)出現(xiàn)故障,比如元數(shù)據(jù)突然不可用,元數(shù)據(jù)服務(wù)器切換失敗產(chǎn)生腦裂(split brain)等。一些產(chǎn)品聲稱這方面有應(yīng)急手段,像stornext這樣的文件系統(tǒng)在節(jié)點(diǎn)服務(wù)器產(chǎn)生故障時(shí),元數(shù)據(jù)服務(wù)器也會(huì)同時(shí)承擔(dān)節(jié)點(diǎn)服務(wù)器的功能。而另一種方式就是取消元數(shù)據(jù)服務(wù)器由節(jié)點(diǎn)兼任,將長(zhǎng)途電話交換原理引入。每個(gè)節(jié)點(diǎn)即為一個(gè)城市,所有的城市包含完整的元數(shù)據(jù)結(jié)構(gòu),比如區(qū)號(hào)管理,沒(méi)有特定的統(tǒng)管城市(即metadata server)。
沒(méi)有元數(shù)據(jù)服務(wù)器(MDS)的存儲(chǔ)架構(gòu)會(huì)更加安全一些。它們可以設(shè)定壞1到2個(gè)節(jié)點(diǎn)或者個(gè)別磁盤(pán)陣列整體宕機(jī)后仍能正常對(duì)外展開(kāi)業(yè)務(wù)。更有甚者,比如美國(guó)在線(AOL),陣列是不做raid的,而將每塊盤(pán)單獨(dú)拿來(lái)作為一個(gè)LUN使用,文件系統(tǒng)通過(guò)一定的機(jī)制來(lái)識(shí)別,將每個(gè)硬盤(pán)的數(shù)據(jù)同步到相鄰陣列柜中,這樣無(wú)論是單個(gè)硬盤(pán)故障或者整個(gè)陣列柜宕機(jī),都不會(huì)影響業(yè)務(wù)。單個(gè)硬盤(pán)不做raid的好處是,總體IOPS可以比處于相同狀況下做raid5或6的性能提高幾十倍。所有硬盤(pán)各自為政,不必考慮寫(xiě)入隊(duì)列與條帶化(stripe),亦不用等待相鄰的硬盤(pán)與同步延時(shí)。這種模式可應(yīng)付大量的小文件并發(fā)業(yè)務(wù),比如動(dòng)畫(huà)渲染,海量郵件交換,皮克斯(pixer)與雅虎(yahoo)便是一個(gè)典型的例子。
二、橫向擴(kuò)展。分布式文件系統(tǒng)是可以橫向擴(kuò)展的,即當(dāng)容量與性能需求增長(zhǎng)時(shí),可以擴(kuò)充節(jié)點(diǎn)服務(wù)器與存儲(chǔ)柜。而且,許多廠商都宣稱在這方面可以無(wú)縫擴(kuò)容,不必安排停機(jī)時(shí)間,這樣保證了業(yè)務(wù)的連續(xù)性。這個(gè)特性還表現(xiàn)在一些主流的NAS上,諸如netapp與isilon。然而看似節(jié)省了服務(wù)器資源,但實(shí)質(zhì)上NAS仍是自帶文件服務(wù)器的(Filer),俗稱“機(jī)頭”。其內(nèi)部仍是SAN或者DAS結(jié)構(gòu),用戶不可見(jiàn)罷了。因此,它的容災(zāi)功能也近似于SAN或者DAS,災(zāi)備手段也無(wú)非是鏡像(mirror)、復(fù)制(replication)、HA切換以及網(wǎng)絡(luò)或光纖鏈路聚合等。比如isilon的內(nèi)部機(jī)制可以允許一個(gè)陣列柜宕機(jī),而netapp的metrocluster也有類似的效果。它們的容災(zāi)功能差異不大,做對(duì)比測(cè)評(píng)選型時(shí)無(wú)非就是看哪家產(chǎn)品的bug少且應(yīng)用廣泛,價(jià)格便宜。
VMWARE虛擬機(jī)
近幾年,虛擬機(jī)興起已普遍運(yùn)用于廣電領(lǐng)域。VMware作為這方面的領(lǐng)頭羊,有著與大多數(shù)存儲(chǔ)相似的容災(zāi)和高可用性特征。網(wǎng)絡(luò)方面有多路徑(multipath)冗余;服務(wù)器方面有cluster群集,內(nèi)又劃分資源池,可以靈活地做資源規(guī)劃;在存儲(chǔ)方面支持cifs和samba,也能通過(guò)iqn或wwn的形式直連存儲(chǔ)。在資源調(diào)配方面,將cluster與資源池和vmotion三者結(jié)合,動(dòng)態(tài)分配CPU與內(nèi)存資源,避開(kāi)了CPU沖100%或out of memory等導(dǎo)致死機(jī)的情況。這里要提一下vmotion,在規(guī)劃guest os時(shí),可以設(shè)置CPU與內(nèi)存的上下閾值,假如此guest os的應(yīng)用由于某些原因達(dá)到閾值上限,它會(huì)自動(dòng)遷移到資源相對(duì)空閑的宿主服務(wù)器上,且是無(wú)縫的,最終用戶完全無(wú)法察覺(jué)。它的原理在于只遷移操作系統(tǒng)在內(nèi)存中的駐存,不移動(dòng)硬盤(pán)數(shù)據(jù),所以才會(huì)如此迅速有效,因此虛擬機(jī)的引入增強(qiáng)了運(yùn)維人員的效率。以往物理工作站出現(xiàn)故障需要重裝,現(xiàn)在只需要運(yùn)用虛擬機(jī)的克隆功能便可以迅速?gòu)?fù)制出一批現(xiàn)成的客戶機(jī)。而快照功能又能應(yīng)付客戶機(jī)上的誤操作和誤刪除,這極大地節(jié)約了時(shí)間,對(duì)于運(yùn)維工作是革命性的進(jìn)步。
微軟ALWAYS ON
關(guān)于高可用性的幾種方式與機(jī)制,近幾年并沒(méi)有顯著的進(jìn)步,但是效率上卻有大大的改善。十年前微軟群集(MSCS)的切換往往需要30秒的業(yè)務(wù)停頓,而存儲(chǔ)控制器的failover與failback也大多會(huì)造成掛載卷不可用,windows上出現(xiàn)寫(xiě)入緩存失敗。然而現(xiàn)在的產(chǎn)品大多已經(jīng)沒(méi)有這種現(xiàn)象了,微軟always on群集的切換幾乎是無(wú)縫的,結(jié)合sql2012的群集功能,非常適合播出系統(tǒng)。主流存儲(chǔ)器如EMC和NETAPP等品牌,其高端產(chǎn)品允許壞多個(gè)硬盤(pán)甚至一個(gè)存儲(chǔ)柜宕機(jī)業(yè)務(wù)不會(huì)受影響。網(wǎng)絡(luò)方面的切換,幾乎最多只丟失一個(gè)包,終端用戶完全不會(huì)察覺(jué)。
結(jié)語(yǔ)
最后,我們可以把上述提及的幾個(gè)重要術(shù)語(yǔ)與核心功能進(jìn)行簡(jiǎn)短歸納,大致如下:鏡像(mirror)用于保證原始數(shù)據(jù)與備份數(shù)據(jù)的一致。HA主要在于故障切換時(shí)保持業(yè)務(wù)的連續(xù)性。鏈路聚合在于其中一條發(fā)生中斷時(shí)自動(dòng)跳轉(zhuǎn)到另一條。IP漂移是在當(dāng)前網(wǎng)絡(luò)流所在的網(wǎng)線發(fā)生中斷時(shí)通過(guò)輪詢的方式將ip自動(dòng)轉(zhuǎn)移到另一個(gè)具有相同業(yè)務(wù)提供能力的網(wǎng)口上。Active-passive,顧名思義,active的控制器提供業(yè)務(wù),passive的處于待機(jī)準(zhǔn)備隨時(shí)切換的狀態(tài)下。另一種模式active-active,兩個(gè)控制器同時(shí)提供業(yè)務(wù),我們又可以稱之為均衡負(fù)載(load balance)。而raiddp、metrocluster、vmotion、always on則是isilon、netapp、vmware、microsoft廠商各自特有的容災(zāi)技術(shù)手段。
(作者單位:上海廣播電視臺(tái))
參考文獻(xiàn):1.陳少春:《計(jì)算機(jī)存儲(chǔ)技術(shù)與應(yīng)用》,北京,電子科技大學(xué)出版社,2017年版。
2.張 冬:《大話存儲(chǔ)》,北京,清華大學(xué)出版社,2008年版。