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