邊緣計算體驗之二:簡單高可用 ZStack Mini的巧妙設計

在上篇文章中,我們介紹了ZStack Mini產品具有的“4S”特性中的“3S”,即簡單(Simple)、可擴展(Scalable)和智能(Smart),本文的主角是另外一個“S(健壯,Strong)”。

不管是中文的“健壯”,還是英文的“Strong”,通常用於形容人或動物的體格,並隱含擁有更高的生存能力,或者說在受傷失去部分生理機能後,擁有更快恢復正常的能力。

正是因爲這一詞潛在的含義,也被借用以描述IT系統或應用程序的特點之一,比如應用程序/IT系統的健壯性,在遭遇bug或硬件故障的情況下,不會徹底“失能”,而是可以繼續工作並更快恢復常態。

IT系統的健壯性可以用“RAS”來說明,即可靠性(Reliability)、可用性(Availability)和可維護性(Serviceability)。簡單來說,可靠性意味着組成IT系統的各組件品質過關,不易故障,即使某一個或多個組件發生故障,也不影響應用程序的正常運行(可用性);並且在組件或系統故障時,其可即時啓用替換機制,使得故障組件/系統快速恢復正常(可維護性)。

可以看出,可靠性和可維護性設計在一定程度上是服從可用性設計的,其目的是爲了提高可用性,滿足業務連續運行(而儘可能不被中斷)的需求。

IT系統可用性通常用幾個“9”來衡量,如5個9、6個9,指的是系統可用時間的百分比,相對應的是以年爲單位計算(允許的)停機時間。

試舉兩例:1個9即90%的可用性,每年允許的停機時間不超過36.5天;5個9即99.999%的可用性,每年的停機時間不能超過5分半鐘。
在這裏插入圖片描述
圖注:E企研究院整理的可用性與(允許)停機時間對照表,可用性每多一個9,單位時間內允許的停機時間下降到十分之一:譬如,可用性爲4個9(99.99%)每年允許的停機時間接近53分鐘,而5個9每年允許的停機時間則下降到5分半鐘以內

我們知道,由於開機自檢等過程耗時較長,服務器重啓一次的時間可能超過5分鐘,這意味着每年服務器只要宕機一次,哪怕立刻恢復,5個9的可用性就保不住了。然而,硬件的單點失效(Single Point OfFailure,SPOF)是不可能徹底避免的,再加之有時軟件系統出的故障最終也要通過服務器重啓來解決,所以“2N”系統就成爲保障高可用性的常見思路。

譬如,兩套一樣的系統,運行一樣的應用,訪問一樣的數據,平時一主一備(Active-Passive),主系統出故障之後備份系統接管,由於後者一直在運行着,不需要經歷一遍耗時的軟硬件啓動工作,理論上服務中斷的時間只取決於主備之間的切換速度,不要說5個9,就是6個9或者7個9,也是可以實現的。

理論很簡單,實現很複雜,包括如何保證兩套系統的數據和(應用)狀態儘可能一致,以便快速切換?

傳統計算與存儲分離的架構,最少需要兩臺服務器連接到一套雙控的存儲系統上,兩臺服務器之間同步應用,數據的高可用由雙控制器的存儲系統負責,後者使用的存儲介質通常具備雙端口功能(如FC或SAS硬盤),數據訪問的控制權在必要時(如其中一個控制器故障)切換。相應的,網絡子系統通常也是雙冗餘設置,整套解決方案的構成很是複雜。雙端口硬盤減少了數據同步的工作量,但其本身又經常被劃歸專用設備的範疇,不符合標準化硬件結合“軟件定義”的潮流。

超融合架構(Hyper-Converged Infrastructure,HCI)則通過在工業標準服務器中採用軟件定義存儲的方式,實現了計算與存儲兩大角色的統一,提高了擴展的靈活性,降低了部署和運維的複雜性。不過,大多數超融合系統的分佈式軟件定義存儲都採用三副本機制來避免數據丟失,加上可維護性的考慮,這些超融合系統通常從三節點或四節點起步,無形中又提升了用戶採購的門檻。

也就是說,在不考慮網絡設備的情況下,不管是計算與存儲分離,還是計算與存儲一體,上述兩種小規模部署中常見的高可用架構,設備或者說節點的數量都不少於3臺——譬如超融合系統較爲常用的2U4節點服務器,我們按照4臺服務器計算。

從架構的層面看,ZStack Mini兼具兩種架構的部分特性:一方面,它是計算與存儲一體的超融合;另一方面,其每個節點內部的存儲子系統又基於傳統存儲系統常用的RAID技術。

有趣的是,通過這一組合,ZStack Mini最少只需要2臺服務器,即一臺2U2節點服務器——雖然都是2U多節點,2U2的成本可以比2U4低很多,從而顯著降低用戶的接受難度。

那麼,在(最小)只有2個節點的情況下,ZStack Mini是如何保證數據和應用的高可用的呢?其存儲空間利用率又如何呢?請看我們下面的解析。

極簡架構有助於提升可靠性

可靠性是可用性的組成部分之一。能夠長期穩定運行的可靠組件有助於系統的整體可用性,但“可靠”又受成本約束,“高成本的高可用”系統並非沒有實際意義,但門檻太高。

鑑於ZStack Mini傳承自ZStack雲引擎,同時其產品形態(2U2節點)與2U4節點形態的超融合產品有一定的相似,比如2U機箱、雙冗餘電源、幾乎相同的佔地空間,而且兩者都可以2U爲最小部署單元(超融合的3節點或4節點都用2U4),但是隻有2個節點的ZStack Mini在架構上無疑更爲簡單。
在這裏插入圖片描述
圖上爲ZStack Mini,2U機箱內置兩個服務器節點;圖下爲較爲主流的2U4節點設計的超融合一體機。從硬件數量來看,顯然2U4節點的超融合比2U2節點的ZStack Mini組件數量多得多,而且空間設計也更緊湊,每個節點面臨的擴展性和散熱等挑戰更大

不管是ZStack Mini還是2U4節點的超融合一體機產品,內部都有多種IT硬件,每種乃至每個硬件都有故障率。以ZStack Mini中大量使用的西部數據Ultrastar DC HC310(4TB)硬盤爲例,其年故障率爲0.44%,系統內所使用的硬件越多,其故障的風險自然越大。
在這裏插入圖片描述
西部數據官網公佈的Ultrastar DC HC310系列硬盤的可用性,上圖中Annual failurerate(AFR)即爲硬盤的年故障率(0.44%);上圖中的MTBF則表示平均故障間隔時間,爲2百萬小時

與硬盤緊密相連的組件是SATA/SAS RAID卡,ZStack Mini使用了Broadcom公司推出的帶鋰電池備份單元(Battery Backup Unit,BBU)的RAID卡,在遭遇突發停機的情況下,可以將RIAD卡Cache中的數據存儲到硬盤。
在這裏插入圖片描述
ZStack Mini內置的2節點內部,毗鄰CPU散熱片,貼有白底標籤紙的組件即爲鋰電池,其與緊貼機箱壁的RAID卡相連,在突發掉電情況下爲RAID卡供電,有助於降低數據丟失風險

從上圖也可以看出,ZStack Mini中所採用的半寬2U節點,其內部空間還是比較寬裕的,相比於2U4中的半寬1U節點,散熱條件更好,有利於升級到更高規格的CPU,而且工作溫度也是影響系統可靠性的一大重要因素,尤其是部署在邊緣站點或小微企業內部的產品,其運行環境通常比專業數據中心複雜得多

每一個組件都有故障率,每一個組件的故障都會影響系統的可靠性,進而影響可用性。故障並不可怕,重要的是組件故障後,如何保障用戶的數據不丟失,甚至能夠讓應用持續運行,繼續可用,這是在系統或解決方案設計時最重要的目標之一。

除了應用的可用性,還要考慮數據的可用性,並且避免存儲子系統的故障導致數據丟失。據ZStack介紹,ZStack Mini通過兩副本加兩糾刪碼的雙重保險保障數據安全,只有在至少兩個節點各兩塊硬盤同時損壞的場景下才有數據丟失的風險,整體數據可用率高達99.999995%,比通常超融合雙副本安全係數高4個9,比三副本安全係數高2個9,這又是怎麼做到的呢?

節點內:N+1應對磁盤故障

硬盤是ZStack Mini中的數據存儲擔當,其前面板上插滿了12塊3.5英寸硬盤,平均分給2個節點使用。其中4塊(每節點各2)用於安裝操作系統,其餘8塊(每節點各4)留給用戶存儲數據。

當下,大多數超融合一體機中採用了三副本數據保護機制,將同一份數據分別存放在三臺不同的服務器內,從而在遭遇單個硬盤或節點故障後,數據仍然可正常讀寫。

ZStack Mini則頗爲“非主流”的採用了基於硬件(RAID卡)的RAID技術,其中操作系統盤用RAID 1(鏡像)保護,每節點的4個數據盤用RAID 5(奇偶校驗)保護。

RAID技術與RISC技術誕生於同一時代,而且還師出同人,然而,RISC-V目下正是計算領域的當紅炸子雞,RAID卻已不大有人提起。其中一個很重要的原因在於,傳統基於硬件的RAID技術不適合大規模部署環境,在使用大容量硬盤的時候恢復時間也面臨很大的挑戰。

不過,RAID的核心理論和算法並沒有過時,譬如在大規模部署環境中爲解決副本技術存儲容量利用率偏低而採用的糾刪碼(Erasure Code)技術,其核心算法原理與RAID 5/6是相通的,我們可以將RAID 5視爲N+1的糾刪碼。

而在小規模部署環境中,譬如ZStack Mini這種每個節點只有個位數硬盤的情況下,RAID技術仍然能夠發揮很好的作用,RAID卡還可以把CPU從底層存儲任務處理中解放出來,貢獻更多的虛擬機。

理論基礎有了,接下來我們就通過在實際應用運行場景下直接拔盤的手段來驗證ZStack Mini節點是否還能正常工作,以下視頻爲驗證過程:

視頻解讀:在初始化好的ZStack Mini中,E企研究院創建了一個Windows 10(試用版)操作系統的虛機,然後安裝Adobe PremierePro CS6(試用版)軟件,這是Windows平臺下主流的視頻剪輯軟件。

我們將幾個視頻片段導入到Premiere中,剪輯拼合成一個視頻,利用Premiere對這個剪輯後的視頻進行渲染。在渲染過程中(大約渲染了三分之一進度之後),我們直接拔掉了此虛機所在物理節點上的一塊用於數據存儲的硬盤(4TB)。但Premiere的渲染任務並沒有停頓,正常完成。但在ZStack Mini的管理後臺,監控中顯示Windows 10虛機所在物理節點出現硬盤故障,性能和可用性“降級”。這意味着數據沒有丟失,應用仍可正常運行,但存在潛在風險:如果此時節點內再有一塊硬盤發生故障,將導致數據丟失——當然,在下一節我們會看到,另一個節點不會允許這種事情發生。
當我們將被拔出的硬盤重新插入硬盤倉(相當於用新盤替換故障盤),ZStack Mini識別到健康盤已插入,並開始自動重建。
在這裏插入圖片描述
圖注:拔出後的硬盤重新插入,ZStack Mini自動進行數據重建,在管理後臺對應的監控界面中,可以看到“重建中”狀態標誌,性能監視界面也顯示目前有持續的IO讀寫活動;直到數據“重建”完成前,RAID健康狀態都將處於“降級”狀態

通過上述模擬場景的測試驗證,ZStack Mini任意節點確實能夠有效地抵禦單塊數據存儲盤故障,不會導致數據丟失或應用停頓,應用虛機仍舊無感知地繼續當前任務,直至完成或人工干預。

節點間:2N保障應用高可用

節點內的RAID技術保證了任一磁盤故障都不會對應用造成影響,但是傳統基於硬件的RAID技術(更換硬盤後)重建數據的時間比較長——根據硬盤容量的不同,幾個小時不等——在此期間,如果再有一個硬盤壞掉,數據就會丟失,應用也會中斷。此外,CPU、內存、網卡等部件沒有冗餘,出現故障也可能導致停機……凡此種種,都是ZStack Mini的另一個節點發揮作用的時候,我們不妨稱之爲節點級副本。
在這裏插入圖片描述
圖上爲ZStack Mini正面,佈滿了3.5英寸硬盤,支持熱插拔。圖下爲背部,幾乎所有組件都位於節點內部,這意味着更換除硬盤外的任一組件都需要停機

正所謂“養兵千日,用兵一時”,當一個節點不能正常工作的時候,另一個節點就要揣着一直在同步的數據和狀態“挺身而出”了,這就是我們通常所說的(節點級)高可用。爲了驗證這一特性,我們將應用虛機設置爲“高可用”之後,通過將其所在節點突然斷電的手段,驗證應用是否能夠繼續運行。

視頻解讀:ZStack Mini中的節點1因爲上一個測試中拔掉其中一塊硬盤,正處於“重建”狀態,在這測試中,E企研究院模擬這一“故障”節點突發斷電,以驗證ZStack Mini的高可用功能。

在節點1上有4個虛機,其中“渲染服務器”、“轉碼服務器”和“網管平臺”設置爲高可用,作爲對比,另一個名爲“CentOS7.2”的虛機則不使用高可用功能。在轉碼服務器中,E企研究院將上一測試渲染好的視頻導出,並使用XCoder軟件進行轉碼。

在轉碼過程中(大約已完成三分之一的轉碼進度時),不經過任何操作,直接關閉節點1電源,以模擬突發掉電。在節點1斷電後,ZStack Mini提示節點1失聯,並報告“網管平臺”失聯。隨後,ZStack Mini啓動“高可用”進程,開始遷移開啓了“高可用”功能的應用虛機,大約1分鐘後,原來位於節點1上,並開啓了“高可用”功能的虛機在節點2上重啓。

“轉碼服務器”重啓之後,XCoder之前的任務進度清零,並自動重新開始任務。我們經過測試證明,當ZStack Mini上任一節點掉電後,其上開啓了“高可用”功能的虛機將自動遷移到另一正常運行節點。

通過上述的兩階段驗證,可以看出,不管是在硬盤組件故障,還是節點級故障,ZStack Mini都具有良好的可用性,應用能夠無間斷或經歷短暫停頓後繼續運行,不會造成數據丟失。

計算存儲:效率和數據持久性

在使用這套ZStack Mini的過程中,我們與一些對此產品有興趣的潛在用戶進行了溝通,發現有一個很有代表性的問題:兩個節點一主一備,可用性是保證了,但是硬件的利用率豈不是隻有一半?會不會很浪費?

這個問題可以從計算和存儲資源兩個層面來看。

從應用的層面來說,如前面的測試環節中所提到的,應用所在的虛機,“高可用”功能是可選的,也就是說只有開啓這一功能,虛機纔會同時佔用兩個節點的計算資源,這也是爲了保證應用持續運行所必須付出的代價。

如果某個應用對可用性的要求沒有那麼高,就可不開啓“高可用”,也就省去了不必要的浪費。

從存儲的層面來說,ZStack Mini所有的用戶數據都在兩個節點上鏡像存儲,這樣即使一個節點完全損壞,數據也不至於丟失。從數據盤的存儲利用率來看,節點間是1+1(鏡像),節點內是3+1(4個盤的RAID 5),所以總體效率是0.5×0.75=0.375,即不到一半的水平。

看起來不高是麼?作爲對比,三副本的超融合系統,存儲利用率爲三分之一,即0.333——如此看來,ZStack Mini還略佔優勢呢。

ZStack方面也對Mini在數據持久性上的優勢進行了解釋:

雙副本數據持久性失效的概率等於分佈在不同計算節點的任意兩個盤同時損壞的概率,按照 Google的磁盤年損壞率數據1.7%(高於硬盤廠商公佈的指標)算的話,那就是1.7%×1.7%×(1/2)=0.01445%,數據持久性爲98.56%,接近2個9;

雙副本+RAID5數據持久性失效的概率等於分佈在不同計算節點上任意四個盤同時損壞的概率,並且必須是一邊2個,而不能是一邊4個或者一邊3個,那就是1- 1.7%×1.7%×1.7%×1.7%×(18/31) =99.999995%,即高於7個9(18/31是8塊硬盤同時壞4塊而且在兩個節點各2個的概率);

而三副本只要任意3塊盤損壞就丟數據,3副本的可用性概率是1-1.7%×1.7%×1.7% =99.99951%,即高於5個9。

展望3.0:提升可維護性,助力整體可用性

可維護性是一個籠統的說法,但其又體現在產品設計的每一個細節。
比如說,現代x86服務器大多具有(驅動器)熱插拔、免工具拆裝的特點,這實際上是在硬件層面體現了可維護性。不借助工具,徒手即可對故障組件進行更換,縮短維護時間,自然有助於可用性(畢竟可用性也是可以用停機時間來衡量的)。

同時在軟件方面,具體到ZStack Mini來說,在初始化環節就節省了大量的時間,同時很多功能都是通過鼠標點擊,然後多個關聯流程在後臺靜默完成,這也是可維護性的體現:儘量減少人工操作,避免人爲誤操作。

當然這些還遠遠不夠。在談到ZStack Mini的未來發展時,ZStack介紹了即將推出的ZStack Mini 3.0產品,其將新增多個重大功能:

1 備份功能

目前的2.0版本經過設置也可實現備份,但3.0版本將正式推出外接磁盤備份功能,可對系統進行定期備份,並可使用這些備份在新機器上恢復。未來,其還將支持備份到雲端功能,讓數據徹底高枕無憂。

2 改進則與應用高可用相關。

在我們驗證“節點故障”的時候,儘管應用虛機設置了高可用,但當節點故障後,應用虛機仍需經過短暫停頓才恢復服務。而在新的3.0版本中,在遭遇節點故障的情況下,將實現無間斷切換,用戶感覺不到應用虛機的停頓。

3 在ZStack Mini中集成應用中心

目前ZStack Mini 2.0平臺部署好以後,用戶需要手動創建虛機,並安裝應用程序。這對於大多數小型企業或邊緣站點而言,一是比較複雜,二是耗時。但在3.0中,ZStack將與各個ISV合作,根據不同行業的應用特點,直接將應用模板集成到應用中心,用戶只需下載即可進行部署,省卻了應用安裝過程中的複雜配置,同時在升級、維護方面也更有保障,極大地提高了可維護性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章