專利名稱::一種實現集群存儲高可用性的方法、節點裝置和系統的制作方法
技術領域:
:本發明涉及網絡存儲系統
技術領域:
,尤其涉及一種實現集群存儲高可用性的方法、節點裝置和系統。
背景技術:
:云存儲和大數據背景下,數據呈現爆炸式增長趨勢。根據研究顯示,2020年數字宇宙將達到35.2ZB,比2009年的O.8ZB猛增44倍,這其中80%以上為非結構化數據。高性能計算、醫學影像、石油和天然氣勘探、數字媒體和社會化WEB等大量數據密集型應用導致數據的井噴,不斷對存儲方法提出新的嚴峻挑戰。集群存儲是一種橫向擴展(Scale-out)存儲架構,具有容量和性能線性擴展的優勢,已經得到全球市場的廣泛認可。除了高性能、高擴展特點外,集群存儲還應該具備高可用的特征,這對于企業核心業務系統尤為關鍵,保證關鍵業務的連續性。集群存儲現有技術方案主要通過冗余技術解決可用性問題,包括副本技術、糾刪碼技術、主備或全活高可用性(HighAvailability,HA)技術。副本技術通過增加不同數量的副本,可以有效提高數據可用性,但是存儲利用率低(為副本數量分之一),并增加了數據管理的復雜度。糾刪碼通過冗余編碼提高存儲可用性,并且具備較低的空間復雜度和數據冗余度,存儲利用率高,但編碼方式復雜,需要大量計算并降低業務性能,且適用集群節點數量較多的情形。主備(Active/Standby)HA技術同樣采用冗余技術獲取高可用性,但存儲資源浪費嚴重。全活(Active/Active)HA技術通過監控并將故障節點資源(IP、服務進程、業務數據等)切換至正常節點上,使整個系統連續不間斷對外提供服務。這種HA技術不僅能夠提高可用性,而且具備負載均衡功能,資源利用率高。HA技術的主要問題是資源切換期間會導致服務中斷,通常只接管IP和服務進程資源,而業務數據或物理存儲資源需要由外部系統進行管理。
發明內容本發明的目的在于提出一種實現集群存儲高可用性的方法、節點裝置和系統,能夠使得節點之間的資源切換期間,不僅接管故障節點的IP和服務進程資源,而且接管故障節點的存儲軟件服務進程和物理存儲資源。為達此目的,本發明采用以下技術方案一種實現集群存儲高可用性的方法,該方法包括根據接收到的節點狀態信息觸發接管事件;獲取故障節點的卷信息、存儲設備信息和存儲區域網絡(StorageAreaNetwork,SAN)存儲信息并生成本地配置信息;掛載所述SAN集群中的存儲設備并啟動分布式文件系統服務例程,所述存儲設備上的卷恢復使用。所述根據接收到的節點狀態信息觸發接管事件之前,進一步包括響應故障節點的備份請求,接收所述故障節點的狀態信息。所述故障節點發出所述備份請求之前,進一步包括通過定期觸發的監控事件接收監控信息,判斷本地服務的狀態;服務狀態異常時,根據輪叫調度(RoundRobinScheduling)算法在所述SAN集群中確定一個備份節點;將本地的狀態信息發送至其他節點并向所述備份節點發出備份請求。該方法還包括向所述SAN集群中的其他節點發送消息,更新所述卷信息和存儲設備信息。如果所述故障節點已修復,則該方法還包括將備份節點的接管的資源重新接管至本地;向所述SAN集群中的其他節點發送消息,更新所述卷信息和存儲設備信息;向備份節點發送釋放資源消息。節點接管資源時進一步包括獲取接管之前的連接信息,構造自動增加數字序列為零(Sequence=O)的確認字符(ACKnowledgeCharacter,ACK)請求報文,發送至之前連接的客戶端;接收所述客戶端的ACK應答報文,所述ACK應答報文中Sequence=N;向所述客戶端發送復位連接(Resettheconnection,RST)請求,通知所述客戶端重新建立TCP連接;與已重新建立傳輸端口的所述客戶端建立TCP連接。—種實現集群存儲高可用性的節點裝置,包括定時器模塊、事件處理模塊、監控模塊和通信模塊;其中,定時器模塊,用于向事件處理模塊觸發監控事件,定時對本節點的資源和服務等進行監控;監控模塊,用于監控指定服務的狀態,向事件處理模塊返回服務的狀態信息;通信模塊,用于各個節點裝置之間的信息傳遞和數據同步;事件處理模塊,用于負責接收所述裝置內各個模塊的返回信息,并依此進行下一步的操作調度。還包括接管模塊和釋放模塊;其中,接管模塊,用于所述節點裝置作為備份節點時,接收出現故障節點的各項資源,包括SAN存儲設備和卷以及對應的分布式文件系統服務;釋放模塊,用于所述故障節點回復后,將所述接管模塊接管的各項資源釋放。所述節點裝置作為備份節點接管故障節點的資源后,與所述故障節點連接的客戶端重新建立TCP連接。一種實現集群存儲高可用性的系統,包括至少兩個任一所述的節點裝置以及SAN中的存儲設備。采用本發明的技術方案,能夠使得節點之間的資源切換期間,不僅接管故障節點的IP和服務進程資源,而且接管故障節點的存儲軟件服務進程和物理存儲資源,支持NFS/CIFS/HTTP/FTP/ISCSI協議以及PanaFS協議,利用TCP/IP協議的連接重連技術,實現了故障節點的透明接管,不會產生接管期間的業務中斷。圖I是本發明實施例提供的實現集群存儲高可用性的節點裝置的結構示意圖。圖2是本發明實施例提供的實現集群存儲高可用性的節點裝置作為備用節點時的結構示意圖。圖3是本發明實施例提供的實現集群存儲高可用性的系統結構示意圖。圖4是本發明實施例提供的實現集群存儲高可用性的方法流程圖。圖5是本發明實施例中故障節點發出備份請求的流程圖。圖6是本發明實施例中故障節點修復后系統內信息交互過程的示意圖。圖7是本發明實施例中接管業務資源的節點與客戶端重新建立TCP連接的過程示意圖。具體實施例方式下面結合附圖并通過具體實施方式來進一步說明本發明的技術方案。圖I是本發明具體實施方式提供的實現集群存儲高可用性的節點裝置的結構示意圖。該節點裝置包括定時器模塊、事件處理模塊、監控模塊和通信模塊;其中,定時器模塊,用于向事件處理模塊觸發監控事件,定時對本節點的資源和服務等進行監控。HA系統通過定時器來觸發事件,定時對本節點的資源和服務等進行監控,若狀態發生改變,則會將信息與其他節點進行同步,并觸發相應的事件進行處理。定時器模塊的作用是設置時間間隔觸發定義的事件,包括定期觸發監控事件,定期觸發keepalive事件等。監控模塊,用于監控指定服務的狀態,向事件處理模塊返回服務的狀態信息。所述監控模塊定期監控指定服務的狀態,并通過返回值的形式,向事件處理模塊返回服務的狀態信息。若服務正常,則返回0,否則返回非O值。通信模塊,用于各個節點裝置之間的信息傳遞和數據同步;包括周期性的心跳和數據同步。事件處理模塊,用于負責接收所述裝置內各個模塊的返回信息,并依此進行下一步的操作調度。當圖I所示的節點作為備份節點時,該節點裝置進一步包括接管模塊和釋放模塊,如圖2所示,其中,接管模塊,用于所述節點裝置作為備份節點時,接收出現故障節點的各項資源,包括SAN存儲設備和卷以及對應的分布式文件系統服務。所述接管模塊負責接收出現故障節點的各項資源,主要包括SAN存儲、對應的分布式文件系統服務。接管模塊首先獲取到故障節點管理的SAN存儲信息、存儲設備信息和卷信息,然后在本節點上生成完整的配置信息,掛載所述SAN集群中的存儲設備并啟動分布式文件系統服務,建立在這些存儲設備之上的卷即可恢復使用。所述分布式文件系統服務,可采用Lustre、Panasas、Ceph、pNFS或者PanaFS等分布式存儲系統。本發明實施例優選PanaFS分布式文件系統,它使用私有的PanaFS協議進行數據訪問,它是CIFS/NFS/FTP/HTTP等訪問協議的基礎,提供統一的共享存儲空間。Panafs是可移植操作系統接ロ(PortableOperatingSystemInterface,P0SIX)標準兼容的協議,具有聞擴展、聞可用、聞性能、聞效能等特點釋放模塊,用于所述故障節點回復后,將所述接管模塊接管的各項資源釋放。所述節點裝置的事件處理模塊類似于調度程序,負責接收不同模塊的返回信息,并以此作為依據,進行下一歩的操作,主要包括以下幾類I.接收定時器的消息,調用監控模塊。2.接收監控模塊的消息。若監控模塊返回值為0,則表示服務正常。與之前監控的結果進行比較,若之前狀態為異常,則表示當前節點現在已經被修復,需要執行恢復資源的過程,如圖3所示。若返回非O值,則表示本節點的服務出現異常,將執行以下步驟(I)在所在節點中,采用輪叫調度(RoundRobinScheduling)算法,選擇ー個節點作為備份節點;(2)調用通信模塊,將本節點的狀態信息發送到其他節點;(3)向備份節點發送消息。備份節點收到消息后將執行接管模塊。3.接收其他節點發送的消息。若本節點被選擇作為備份節點,則運行接管模塊。若接收到修復節點的信息,則運行釋放模塊。圖3是本發明實施例提供的實現集群存儲高可用性的系統結構示意圖。基于SAN架構的集群存儲系統,后端存儲采用中高端磁盤陣列子系統,支持獨立冗余磁盤陣列(RedundantArrayofIndependentDisk,RAID)0、1、5、6、10等不同級別RAID等級,并通過光纖FC接ロ連接到各個集群節點。SAN磁盤陣列通過不同RAID等級對數據進行保護,通過冗余機制提供高可用性,同時降低了一定程度的存儲利用率。在這種架構下,如果再采用副本或者糾刪碼來提供集群服務高可性,就會進ー步降低存儲利用率或者大幅降低集群系統性能。當集群節點服務器發生故障時,后端SAN存儲通常仍然處于正常工作狀態,存儲在其上面的數據也是完整一致的。因此,完全可以從正常工作的其他集群節點中選擇ー個節點來接管故障節點的資源和服務,繼續對外提供數據服務,保證業務的連續性。本發明專利的HA方法與現有HA技術方案不同的是,面向基于SAN架構的集群存儲系統,采用全活HA架構技木,不僅接管故障節點的IP和服務進程資源,而且接管故障節點的存儲軟件服務進程和物理存儲資源,支持NFS/CIFS/HTTP/FTP/ISCSI協議以及PanaFS協議。利用TCP/IP協議的連接重連技術,實現了故障節點的透明接管,不會產生接管期間的業務中斷。本方法保證集群存儲系統的存儲利用率以及系統性能不會受到影響,并且可以透明接管完整的系統資源,提供更高的系統可用性,主要設計原則如下I.當某個節點由于停機,或者系統出現異常,不能再向上層的應用提供數據存儲服務時,則需要由備份節點接管連接到該節點上的SAN存儲設備,并啟動相應的服務,以保證前端應用仍然可以正常地進行數據存儲操作。2.為平衡系統中各節點的負載,避免備份節點的負載過重,當出現故障的節點修復后,需要將被接管的SAN存儲重新恢復。3.在上述的接管與恢復過程中,需要保證對前端的數據存儲沒有明顯影響,分布式文件系統服務不中斷,做到透明接管和恢復。4.備份節點的選擇,采用Round-Robin輪詢法,在當前正常工作的節點中選擇其中之一作為備份節點。集群中某個節點出現故障后,HA系統會采用輪詢算法,在狀態為OK的節點中選擇其中ー個,接管故障節點的IP地址。這樣在被選擇的節點上就會觸發takeip事件,發生了takeip事件的節點均可作為備份節點,并執行故障接管操作。故障節點恢復后,之前漂移的IP會重新漂移回來,同時觸發takeip事件,并執行故障恢復操作。現有HA技術方案往往只處理集群節點上各種業務服務的可用性,比如CIFS、NFS、HTTP、FTP等服務,而對故障前已經與節點建立的TCP/IP連接或者會話(Session)不作處理,會造成接管期間業務中斷,無法實現透明接管。本方法中使用TCP欺騙技術,接管節點主動與已經建立連接的客戶端重新建立連接,從而實現透明接管。重新建立連接的流程如下I.新節點(接管節點)從共享存儲中獲取之前的連接信息,構造自動增加數字序列為零(Sequence=O)的ACK請求報文,發送給客戶端;2.客戶端收到請求后,發送ACK應答,并糾正Sequence=N;3.新節點得到正確sequence后,發送RST請求,通知客戶端重新建立TCP連接;4.客戶端重新建立傳輸端ロ,TCP連接重建完成。圖4是本發明實施例提供的實現集群存儲高可用性的方法流程圖,該方法包括S401,根據接收到的節點狀態信息觸發接管事件。備份節點通過通訊模塊接收到故障節點的狀態信息,發送至事件處理模塊并觸發接管事件。S402,獲取故障節點的卷信息、存儲設備信息和SAN存儲信息并生成本地配置信息。根據所述故障節點使用的卷信息、存儲設備信息和所在SAN信息生成本地配置用于接管時掛載相應的存儲資源。S403,掛載所述SAN集群中的存儲設備并啟動panaFS服務例程,所述存儲設備上的卷恢復使用。所述S401中備份節點根據接收到的節點狀態信息觸發接管事件之前,響應故障節點的備份請求,接收所述故障節點的狀態信息。所述故障節點發出所述備份請求之前,如圖5所示,還包括以下步驟S501,通過定期觸發的監控事件接收監控信息,判斷本地服務的狀態;S502,服務狀態異常時,根據輪叫調度(RoundRobinScheduling)算法在所述SAN集群中確定ー個備份節點;S503,所述故障節點將本地的狀態信息發送至其他節點并向所述備份節點發出備份請求。所述備份節點接管存儲資源成功后,向所述SAN集群中的其他節點發送消息,更新所述卷信息和存儲設備信息。當所述故障節點已修復時,如圖6所示,所述故障節點將備份節點的接管的資源重新接管至本地;向所述SAN集群中的其他節點發送消息,更新所述卷信息和存儲設備信息;向備份節點發送釋放資源消息。所述備份節點收到釋放資源消息后,將之前接管的資源釋放。無論是備份節點接管故障節點的存儲資源,還是故障節點恢復后從備份節點重新接管原有的存儲資源,都需要與存在業務連接客戶端重新建立TCP連接,該重新建立TCP連接的過程如圖7所示,包括I.獲取接管之前的連接信息,構造自動增加數字序列為零(Sequence=O)的ACK請求報文,發送至之前連接的客戶端;2.接收所述客戶端的ACK應答報文,所述ACK應答報文中Sequence=N;3.向所述客戶端發送RST請求,通知所述客戶端重新建立TCP連接;4.與已重新建立傳輸端ロ的所述客戶端建立TCP連接。本方法中使用TCP欺騙技術,接管節點主動與已經建立連接的客戶端重新建立連接,從而實現透明接管,業務不會發生中斷。實現透明接管,需要對集群存儲系統通信協議進行修改,對服務端和客戶端軟件模塊通信流程進行重構。透明故障接管對于關鍵業務系統非常關鍵,客戶端僅會表現短暫的阻塞,不會導致連接中斷或異常退出等現象,能夠保證數據一致性和業務的連續性,實現更高的集群可用性。采用本發明的技術方案,能夠使得節點之間的資源切換期間,不僅接管故障節點的IP和服務進程資源,而且接管故障節點的存儲軟件服務進程和物理存儲資源,支持NFS/CIFS/HTTP/FTP/ISCSI協議以及PanaFS協議,利用TCP/IP協議的連接重連技術,實現了故障節點的透明接管,不會產生接管期間的業務中斷。以上所述,僅為本發明較佳的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉該技術的人在本發明所揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求的保護范圍為準。權利要求1.一種實現集群存儲高可用性的方法,其特征在于,該方法包括根據接收到的節點狀態信息觸發接管事件;獲取故障節點的卷信息、存儲設備信息和存儲區域網絡(storageAreaNetwork,SAN)存儲信息并生成本地配置信息;掛載所述SAN集群中的存儲設備并啟動分布式文件系統服務例程,所述存儲設備上的卷恢復使用。2.如權利要求I所述的方法,其特征在于,所述根據接收到的節點狀態信息觸發接管事件之前,進一步包括響應故障節點的備份請求,接收所述故障節點的狀態信息。3.如權利要求2所述的方法,其特征在于,所述故障節點發出所述備份請求之前,進一步包括通過定期觸發的監控事件接收監控信息,判斷本地服務的狀態;服務狀態異常時,根據輪叫調度(RoundRobinScheduling)算法在所述SAN集群中確定一個備份節點;將本地的狀態信息發送至其他節點并向所述備份節點發出備份請求。4.如權利要求1-3任一所述的方法,其特征在于,該方法還包括向所述SAN集群中的其他節點發送消息,更新所述卷信息和存儲設備信息。5.如權利要求4所述的方法,其特征在于,如果所述故障節點已修復,則該方法還包括將備份節點的接管的資源重新接管至本地;向所述SAN集群中的其他節點發送消息,更新所述卷信息和存儲設備信息;向備份節點發送釋放資源消息。6.如權利要求5所述的方法,其特征在于,節點接管資源時進一步包括獲取接管之前的連接信息,構造自動增加數字序列為零(Sequence=O)的確認字符(ACKnowledgeCharacter,ACK)請求報文,發送至之前連接的客戶端;接收所述客戶端的ACK應答報文,所述ACK應答報文中Sequence=N;向所述客戶端發送復位連接(Resettheconnection,RST)請求,通知所述客戶端重新建立TCP連接;與已重新建立傳輸端口的所述客戶端建立TCP連接。7.一種實現集群存儲高可用性的節點裝置,其特征在于,包括定時器模塊、事件處理模塊、監控模塊和通信模塊;其中,定時器模塊,用于向事件處理模塊觸發監控事件,定時對本節點的資源和服務等進行監控;監控模塊,用于監控指定服務的狀態,向事件處理模塊返回服務的狀態信息;通信模塊,用于各個節點裝置之間的信息傳遞和數據同步;事件處理模塊,用于負責接收所述裝置內各個模塊的返回信息,并依此進行下一步的操作調度。8.如權利要求7所述的節點裝置,其特征在于,還包括接管模塊和釋放模塊;其中,接管模塊,用于所述節點裝置作為備份節點時,接收出現故障節點的各項資源,包括SAN存儲設備和卷以及對應的分布式文件系統服務;釋放模塊,用于所述故障節點回復后,將所述接管模塊接管的各項資源釋放。9.如權利要求8所述的節點裝置,其特征在于,所述節點裝置作為備份節點接管故障節點的資源后,與所述故障節點連接的客戶端重新建立TCP連接。10.一種實現集群存儲高可用性的系統,其特征在于,包括至少兩個如權利要求7-9任一所述的節點裝置以及SAN中的存儲設備。全文摘要本發明公開了一種實現集群存儲高可用性的方法、節點裝置和系統,該方法包括根據接收到的節點狀態信息觸發接管事件;獲取故障節點的卷信息、存儲設備信息和SAN存儲信息并生成本地配置信息;掛載所述SAN集群中的存儲設備并啟動分布式文件系統服務例程,所述存儲設備上的卷恢復使用。本發明能夠使得節點之間的資源切換期間,不僅接管故障節點的IP和服務進程資源,而且接管故障節點的存儲軟件服務進程和物理存儲資源,支持NFS/CIFS/HTTP/FTP/ISCSI協議以及PanaFS協議,利用TCP/IP協議的連接重連技術,實現了故障節點的透明接管,不會產生接管期間的業務中斷。文檔編號H04L12/24GK102868754SQ20121036357公開日2013年1月9日申請日期2012年9月26日優先權日2012年9月26日發明者劉愛貴申請人:北京聯創信安科技有限公司