專利名稱:一種保證分布式文件系統(tǒng)元數(shù)據(jù)服務器組的服務高可靠的方法
技術領域:
本發(fā)明涉及分布式文件系統(tǒng)高可靠領域,具體來說涉及一種保證分布式文件系統(tǒng)元數(shù)據(jù)服務器組的服務高可靠的方法。
背景技術:
文件系統(tǒng)管理數(shù)據(jù),通常將元數(shù)據(jù)作為最重要的數(shù)據(jù)存放在高可靠設備上。而分布式文件系統(tǒng),由于管理海量數(shù)據(jù),通常其元數(shù)據(jù)也是大量的,需要專門的存儲設備存儲的。此時,元數(shù)據(jù)存儲設備的性能和安全性就成了整個分布式文件系統(tǒng)的瓶頸。分布式文件系統(tǒng)的元數(shù)據(jù)服務器,通常需要非常高的可靠性。那么冗余備份技術就成為元數(shù)據(jù)服務器組的高可靠方案首選技術。要求系統(tǒng)能夠規(guī)避系統(tǒng)錯誤,提供不間斷的正確的服務。為了實現(xiàn)此要求,必須對系統(tǒng)的關鍵部分進行冗余設計。一旦關鍵部分失效,冗余備份將接管并對外提供服務。因此而保證了對外提供不間斷的、正確的服務。通常來說,元數(shù)據(jù)服務器組的備份方式根據(jù)不同的表現(xiàn)方式可以有active-standby模式,active-active模式。在active-active模式下,其中一臺機器上的服務出現(xiàn)故障,由另一臺機器替代, 提供對外不間斷的服務。通過HEARTBEAT機制,能夠讓一組元數(shù)據(jù)服務器互相知曉各個機器的運行狀態(tài)。需要檢測組內(nèi)所有的鏈路是否正常工作,通常狀態(tài)下,應用層消息是時間分布不規(guī)律的,有可能在相當一段時間內(nèi)都沒有消息發(fā)送和接收,這就有可能發(fā)生鏈路不正常工作而網(wǎng)絡模塊還不知曉。需要定時間隔性的檢查網(wǎng)絡鏈接。通常的高可靠需要監(jiān)控服務,并且在故障時做節(jié)點切換,保證服務無單點故障。對整個分布式文件系統(tǒng)的重要的模塊都需要做冗余備份,所有單點的服務,都被設計成為具有備份的服務,但是對于系統(tǒng)中其他模塊來說,這種備份是透明的,即從其他模塊看來,此服務仍舊是“單點服務”。
發(fā)明內(nèi)容
為了保障分布式元數(shù)據(jù)服務器組服務運行的穩(wěn)定,本發(fā)明提供了一種保證分布式文件系統(tǒng)元數(shù)據(jù)服務器組的服務高可靠的方法。一種保證分布式文件系統(tǒng)元數(shù)據(jù)服務器組的服務高可靠的方法,方法如下啟動高可靠服務進程,對其初始化,并讀取高可靠服務進程的配置屬性表;高可靠服務進程啟動服務進程,并周期性檢查服務進程的狀態(tài);服務進程啟動網(wǎng)絡模塊獲得網(wǎng)絡狀態(tài)和服務狀態(tài),并由心跳線程以設定速率給高可靠服務進程報告自身運行狀態(tài)以及網(wǎng)絡狀態(tài);高可靠服務進程與其他服務器組的高可靠服務進程互相通信告知狀態(tài);如果服務進程狀態(tài)異常,則心跳線程停止發(fā)送信息,其他服務器組高可靠服務進程無法接收到心跳線程信息后,高可靠服務進程重啟服務進程。優(yōu)選的,所述服務進程包括三種線程,PING線程,用于檢測節(jié)點是否可到達;
串口線程,用于傳播狀態(tài)信息并判斷串口狀態(tài);報告線程,用于將檢測的狀態(tài)報告給高可靠服務進程。優(yōu)選的,所述網(wǎng)絡模塊包括高可靠服務線程,心跳線程和通信線程。優(yōu)選的,所述串口線程傳播狀態(tài)信息時采用call-return協(xié)議,每個信息有序號順序,當信息需要重傳時,則不帶序號,在信息類型中標注出為重傳信息。優(yōu)選的,所述心跳線程包括至少一個,每個線程負責處理各自的信息通道連接。優(yōu)選的,所述心跳進程對信息通道發(fā)送信息數(shù)量進行監(jiān)控,如果在設定時間間隔內(nèi)有更新,則說明工作正常;如果在設定時間間隔內(nèi)無更新,則心跳線程對該信息通道進行檢測。本發(fā)明通過不同服務器之間能夠規(guī)避系統(tǒng)錯誤,提供不間斷的正確的服務。
圖1為分布式文件系統(tǒng)元數(shù)據(jù)組高可靠示意圖;圖2為高可靠檢控進程流程的示意具體實施例方式圖1給出了本發(fā)明分布式文件系統(tǒng)元數(shù)據(jù)組高可靠示意圖,它由HA進程、HA線程、心跳線程和底層通信四個部分組成。其中HA線程、心跳線程和通信都是網(wǎng)絡模塊的一部分。系統(tǒng)的運行狀態(tài)如圖所示,系統(tǒng)起動后,HA進程啟動被監(jiān)控進程,被監(jiān)控進程會啟動網(wǎng)絡模塊。被監(jiān)控進程中的網(wǎng)絡模塊會得到網(wǎng)絡狀態(tài)和服務狀態(tài),并以心跳速率給HA進程報告自身運行狀態(tài)以及網(wǎng)絡狀態(tài),HA進程將此狀態(tài)通知對端HA進程。本發(fā)明父進程流程參考圖2,詳細步驟第一步HA進程啟動,初始化,讀取配置,得到HA的配置屬性。第二步啟動被監(jiān)控的服務進程,并且周期性的檢查服務進程的狀態(tài)。第三步監(jiān)視子進程,如果需要重啟,則重啟之。第四步HA進程重復第三步。本發(fā)明心跳機制包括兩個部分網(wǎng)絡部分和串口部分。首先整個HA采用通知機制1. HA進程從服務進程得到服務進程狀態(tài)。2.網(wǎng)絡模塊中HA心跳線程部分以一定心跳速度發(fā)送消息。3.如果服務進程狀態(tài)為BAD,HA停止心跳,對方會因收不到心跳消息而知曉服務進程狀態(tài)4. HA進程能夠重啟服務進程5. HA心跳部分包含多個線程,每個線程負責處理相應的通道-link其中串口消息傳遞采用call-return協(xié)議一個消息發(fā)出去,一定要等到回應。這包含1]消息之間有嚴格的序號;2]需要重傳的消息,沒有序號,通過消息中的type指出。對數(shù)據(jù)通道的監(jiān)控機制對每一條鏈路的成功發(fā)送數(shù)目進行檢查,如果在時間間隔內(nèi)有更新則說明鏈路被征用。如果一段時間鏈路無征用則需要HA心跳線程去檢測數(shù)據(jù)通道。
本發(fā)明的狀態(tài)報告的內(nèi)容主要有能夠給其他模塊提供當前檢測的狀態(tài),包括 服務狀態(tài),網(wǎng)絡狀態(tài),節(jié)點狀態(tài),串口狀態(tài)。其中服務狀態(tài)是由HA進程監(jiān)控的,通過共享內(nèi)存,能夠周期性的得到被監(jiān)控程序的狀態(tài)。而網(wǎng)絡狀態(tài)是由網(wǎng)絡心跳線程監(jiān)控而得到的。節(jié)點狀態(tài)通過Ping線程監(jiān)控而得到。串口狀態(tài)是由串口線程得到。通過共享內(nèi)存和全局變量,能夠讓父進程和子進程都能夠知曉本地的狀態(tài)和組內(nèi)其他節(jié)點的狀態(tài)。狀態(tài)報告線程通過周期性檢查全組狀態(tài),能夠給管理員報告組內(nèi)的節(jié)點狀態(tài)。錯誤處理是狀態(tài)檢測之后的流程,元數(shù)據(jù)組的節(jié)點中檢測到一個節(jié)點的串口、網(wǎng)絡、服務狀態(tài)的異常狀態(tài),對異常的處理包括第一父進程檢測到服務進程異常,需要重啟服務。第二 串口異常需要通過狀態(tài)報告線程報告管理模塊第三網(wǎng)絡異常需要通過狀態(tài)報告線程報告管理模塊第四檢測到對端節(jié)點異常,需要接管整個服務。
權利要求
1.一種保證分布式文件系統(tǒng)元數(shù)據(jù)服務器組的服務高可靠的方法,其特征在于方法如下啟動高可靠服務進程,對其初始化,并讀取高可靠服務進程的配置屬性表;高可靠服務進程啟動服務進程,并周期性檢查服務進程的狀態(tài);服務進程啟動網(wǎng)絡模塊獲得網(wǎng)絡狀態(tài)和服務狀態(tài),并由心跳線程以設定速率給高可靠服務進程報告自身運行狀態(tài)以及網(wǎng)絡狀態(tài);高可靠服務進程與其他服務器組的高可靠服務進程互相通信告知狀態(tài);如果服務進程狀態(tài)異常,則心跳線程停止發(fā)送信息,其他服務器組高可靠服務進程無法接收到心跳線程信息后,高可靠服務進程重啟服務進程。
2.如權利要求1所述的方法,其特征在于所述服務進程包括三種線程,PING線程,用于檢測節(jié)點是否可到達;串口線程,用于傳播狀態(tài)信息并判斷串口狀態(tài);報告線程,用于將檢測的狀態(tài)報告給管理模塊。
3.如權利要求1所述的方法,其特征在于所述網(wǎng)絡模塊包括高可靠服務線程,心跳線程和通信線程。
4.如權利要求2所述的方法,其特征在于所述串口線程傳播狀態(tài)信息時采用 call-return協(xié)議,每個信息有序號順序,當信息需要重傳時,則不帶序號,在信息類型中標注出為重傳信息。
5.如權利要求1所述的信息,其特征在于所述心跳線程包括至少一個,每個線程負責處理各自的信息通道連接。
6.如權利要求1所述的信息,其特征在于,所述心跳進程對信息通道發(fā)送信息數(shù)量進行監(jiān)控,如果在設定時間間隔內(nèi)有更新,則說明工作正常;如果在設定時間間隔內(nèi)無更新, 則心跳線程對該信息通道進行檢測。
全文摘要
本發(fā)明提供了一種保證分布式文件系統(tǒng)元數(shù)據(jù)服務器組的服務高可靠的方法,啟動高可靠服務進程,對其初始化,并讀取高可靠服務進程的配置屬性表;高可靠服務進程啟動服務進程,并周期性檢查服務進程的狀態(tài);服務進程啟動網(wǎng)絡模塊獲得網(wǎng)絡狀態(tài)和服務狀態(tài),并由心跳線程以設定速率給高可靠服務進程報告自身運行狀態(tài)以及網(wǎng)絡狀態(tài);高可靠服務進程與其他服務器組的高可靠服務進程互相通信告知狀態(tài);如果服務進程狀態(tài)異常,則心跳線程停止發(fā)送信息,其他服務器組高可靠服務進程無法接收到心跳線程信息后,高可靠服務進程重啟服務進程。本發(fā)明通過不同服務器之間能夠規(guī)避系統(tǒng)錯誤,提供不間斷的正確的服務。
文檔編號H04L12/24GK102404386SQ20111032636
公開日2012年4月4日 申請日期2012年1月9日 優(yōu)先權日2012年1月9日
發(fā)明者呂民強, 姜國梁, 張東陽, 張玉龍, 彭程, 王勇 申請人:無錫城市云計算中心有限公司