集羣存儲高可用方法

轉載地址:http://blog.csdn.net/liuaigui/article/details/8882141

雲存儲和大數據背景下,數據呈現爆炸式增長趨勢。根據研究顯示,2020年數字宇宙將達到35.2 ZB,比2009年的0.8 ZB猛增44倍,這其中80%以上爲非結構化數據。高性能計算、醫學影像、石油和天然氣勘探、數字媒體和社會化WEB等大量數據密集型應用導致數據的井噴,不斷對存儲方法提出新的嚴峻挑戰。集羣存儲是一種橫向擴展(Scale-out)存儲架構,具有容量和性能線性擴展的優勢,已經得到市場的廣泛認可。除了高性能、高擴展特點外,集羣存儲還應該具備高可用的特徵,這對於企業核心業務系統尤爲關鍵,保證關鍵業務的連續性。


集羣存儲高可用性

高可用性(HA,High Availablity)是指通過儘量縮短系統停機時間(因日常的維護操作或突發的系統崩潰等),以提高系統和應用的可用性。企業中的關鍵應用,如郵件服務、文件服務、數據庫服務等,通常會要求7*24小時不間斷連續提供服務並且不能表現出故障切換,這就要求承載服務的存儲系統能夠自動判斷故障,並提供故障恢復的能力。集羣(Cluster)是由多個節點構成的一種鬆散耦合的節點集合,協同起來對外提供服務。集羣主要分爲高性能集羣HPC(High Performance Cluster)、高可用集羣HAC(HighAvailablity Cluster)和負載均衡集羣LBC(Load Balancing Cluster)。集羣存儲系統是指協同多個節點提供高性能、高可用或負載均衡的存儲服務系統,消除單點故障和性能瓶問題,並且具有Scale-Out橫向高擴展能力,實現容量和性能線性擴展。集羣存儲現有技術方案主要通過被冗餘技術解決可用性問題,包括副本技術、糾刪碼技術、主備或全活HA技術。


副本技術通過增加不同數量的副本,可以有效提高數據可用性,但是存儲利用率低(爲副本數量分之一),並增加了數據管理的複雜度。糾刪碼通過冗餘編碼提高存儲可用性,並且具備較低的空間複雜度和數據冗餘度,存儲利用率高,但編碼方式複雜,需要大量計算並降低業務性能,且適用集羣節點數量較多的情形。主備(Active/Standby)HA技術同樣採用冗餘技術獲取高可用性,但存儲資源浪費嚴重。全活(Active/Active)HA技術通過監控並將故障節點資源(IP、服務進程、業務數據等)切換至正常節點上,使整個系統連續不間斷對外提供服務。這種HA技術不僅能夠提高可用性,而且具備負載均衡功能,資源利用率高。HA技術的主要問題是資源切換期間會導致服務中斷,通常只接管IP和服務進程資源,而業務數據或物理存儲資源需要由外部系統進行管理。


副本技術

副本(Replication)就是對原始數據的完全拷貝。通過爲系統中的文件增加各種不同形式的副本,保存冗餘的文件數據,可以十分有效地提高文件的可用性,避免在地理上廣泛分佈的系統節點由網絡斷開或機器故障等動態不可測因素而引起的數據丟失或不可獲取。一般而言,副本數量越多,文件的可靠性就越高,但是如果爲所有文件都保存較多的副本數量,將消耗大量的系統存儲資源,並增加文件管理的複雜度。副本還可以起到提高系統性能的作用。通過合理的選擇存儲節點放置副本,並與適當的路由協議配合,可以實現數據的就近訪問,減少訪問延遲,提高系統性能。另外,通過增加副本數量,將集中地文件訪問合理地分佈到不同的節點和網絡路徑,利用其他節點和網絡路徑平衡節點和網絡的負載,可以有效地解決熱點問題。對於數據量較大的文件,還可以通過對多個副本的並行讀取,進一步分散和平衡節點負載,提高文件讀取的效率,提高系統的I/O性能。典型的副本案例包括RAID1、GFS/HDFS副本(默認三個)和Glusterfs複製卷(如圖1所示)。

 

圖1:分佈式文件系統Glusterfs複製卷 來源:Glusterfs文檔


糾刪碼技術

糾刪碼(Erasure Code)作爲一種前向錯誤糾正技術主要應用在網絡傳輸中避免包的丟失,存儲系統利用它來提高存儲可靠性。將要存儲在系統中的文件分割成k塊,然後對其編碼得到的n個文件分片並進行分佈存儲,則只需存在k’個可用的文件分片,就可以重構出原始文件,如圖2所示。糾刪碼的空間複雜度和數據冗餘度較低,若文件分爲k塊,編碼得到後得到的n個分塊,需要存放在n個系統節點上,消耗n/k倍的存儲資源。糾刪碼能提供很高的容錯性和很低的空間複雜度,但編碼方式較複雜,需要大量計算。目前,糾刪碼技術在分佈式存儲系統中得到研究的主要有三類,即陣列糾刪碼、RS(Reed-Solomon)類糾刪碼和LDPC(LowDensity Parity Check Code)糾刪碼。一些量化比較的工作研究表明,當數據存放的節點可靠性要求比較高時,如集羣存儲系統中,採用糾刪碼可以提供比副本機制更高的可靠性,並且所需的存儲空間開銷更小。傳統的糾刪碼如RS碼的計算量相當大,其解碼即從任意n個數據塊或編碼塊中重構原始數據的計算量隨着n和m的增加成指數上升關係,嚴重影響存儲性能。低密度校驗LDPC碼也可以提供很好的保障可靠性的冗餘機制。與RS編碼相比,LDPC編碼效率要略低,但編碼和解碼性能要優於RS碼以及其他的糾刪碼,主要得益於編解碼採用的相對較少並且簡單的異或操作。當前實際應用中,大部分集羣存儲系統主要使用副本技術來保證可用性,採用糾刪碼技術來提高可用性的系統包括HDFS-RAID、AZURE、QFS、ISILON等。


圖2:糾刪碼技術原理 來源:IDF2012


HA技術

高可用(HA,High Availability)集羣通過一組計算機系統提供透明的冗餘處理能力,從而實現不間斷應用的目標。高可用集羣是共同爲客戶機提供網絡資源的一組計算機系統,其中每一臺提供服務的計算機稱爲節點(Node)。當一個節點不可用或者不能處理客戶的請求時,該請求會及時轉到另外的可用節點來處理,而這一過程對於客戶端是透明的,客戶不必關心要使用資源的具體位置,集羣系統會自動完成。HA集羣是爲了提高系統的可用性,以便在單個節點出現故障的時候,持續滿足用戶的需求的集羣系統。


HA集羣系統構成主要包括主服務器(Master節點)、從服務器(Slave節點)、共享數據系統(SAN存儲或數據同步系統)和心跳網絡,HA集羣的容錯備援過程主要包括故障偵測、自動切換和自動恢復,其工作方式主要分爲主備方式、全活方式和N+M方式。主備(Active/Standby)方式HA集羣提供了最大的可用性,以及對性能的最小影響。該模型需要一個節點在正常工作時處於備用狀態,主節點處理客戶機的請求,而備用節點處於空閒狀態。當主節點出現故障時,備用節點會接管主節點的工作,繼續爲客戶機提供服務,並且不會有任何性能上的影響。全活(Active/Active)HA集羣是最常用的集羣模型,它提供了高可用性,並且在只有一個節點在線時提供可以接受的性能。該模型允許最大程度利用硬件資源,每個節點都通過網絡對客戶機提供資源,每個節點的容量被定義好,使得性能達到最優,並且每個節點都可以在故障轉移時臨時接管另一個節點的工作。所有的服務在故障轉移後仍保持可用,但是性能通常都會下降。N+M模式HA集羣系統由多個主節點、若干個從節點以及一些輔助設備(存儲陣列、交換機)等組成,如圖3所示。在實際應用中,一些用戶並不滿足上述兩種模式,認爲“冗餘設備”太多,需要多個主節點(N個)可以災備到任意多個(M個)節點上。根據應用的級別,調整從節點的數量,可以爲一個,也可以爲多個。主節點的數量可以爲一個或者多個,根據應用需要隨時調整搭配,但主節點爲多個並不是同一個應用的“並行處理”,而是不同的應用。


圖3:N+M HA集羣工作模式 來源:浪潮BCP


SAN架構集羣存儲HA方法

基於SAN架構的集羣存儲系統,後端存儲採用中高端磁盤陣列子系統,支持RAID0、1、5、6、10等不同級別RAID等級,並通過光纖FC接口連接到各個集羣節點。SAN磁盤陣列通過不同RAID等級對數據進行保護,通過冗餘機制提供高可用性,同時降低了一定程度的存儲利用率。在這種架構下,如果再採用副本或者糾刪碼來提供集羣服務高可性,就會進一步降低存儲利用率或者大幅降低集羣系統性能。當集羣節點服務器發生故障時,後端SAN存儲通常仍然處於正常工作狀態,存儲在其上面的數據也是完整一致的。因此,完全可以從正常工作的其他集羣節點中選擇一個節點來接管故障節點的資源和服務,繼續對外提供數據服務,保證業務的連續性。面向基於SAN架構的集羣存儲系統,可以採用全活HA架構技術,不僅接管故障節點的IP和服務進程資源,而且接管故障節點的存儲軟件服務進程和物理存儲資源,支持NFS/CIFS/HTTP/FTP/ISCSI等協議協議。利用TCP/IP協議的連接重連技術,還可以實現類似CTDB對故障節點的透明接管,不會產生接管期間的業務中斷。這些方法保證集羣存儲系統的存儲利用率以及系統性能不會受到影響,並且可以透明接管完整的系統資源,提供更高的系統可用性。基本設計原則如下:

(1) 當某個節點由於停機,或者系統出現異常,不能再向上層的應用提供數據存儲服務時,則需要由備份節點接管連接到該節點上的SAN存儲設備,並啓動相應的服務,以保證前端應用仍然可以正常地進行數據存儲操作。

(2) 爲平衡系統中各節點的負載,避免備份節點的負載過重,當出現故障的節點修復後,需要將被接管的SAN存儲重新恢復。

(3) 在上述的接管與恢復過程中,需要保證對前端的數據存儲沒有明顯影響,CIFS、NFS等服務不中斷,做到透明接管和恢復。

(4) 備份節點的選擇,採用Round-Robin輪詢法,在當前正常工作的節點中選擇其中之一作爲備份節點。


SAN架構的集羣存儲系統,數據可用性主要由後端的中高端磁盤陣列進行保障,集羣可用性重點是集羣節點上的資源,包括IP、服務進程、存儲管理進程以及SAN物理存儲資源。副本技術和糾刪碼技術當然也可以實現集羣的高可用性,但會進一步降低存儲利用率或者大幅降低集羣系統性能。主備(Active/Passive)HA集羣和N+M模式HA集羣,不僅冗餘較多造成資源消耗,而且提供的高可用性也受到限制。採用SAN架構全活高性能HA集羣方法,提供了最大的高可用性,在集羣只有一個節點在線時仍然可以對外提供服務。該模型允許最大程度利用硬件資源,每個節點都通過網絡對客戶機提供資源,每個節點的容量被定義好,使得性能達到最優,並且每個節點都可以在故障轉移時臨時接管另一個節點的工作。該方法實現的高可用性,實現資源利用的最大化,可用性最高,不會降低存儲利用率,也不會大幅降低系統性能,僅僅導致故障節點引起的前端訪問性能下降。採用這種HA方法的系統包括VCS、RedhatCluster、Rose HA、Oracle RAC等。

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