專利名稱:基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機集群技術(shù)領(lǐng)域,特別是涉及解決高可用性集群 (High-availability clusters)系統(tǒng)假死的方法。
背景技術(shù):
隨著計算機應用領(lǐng)域的不斷擴展和通信網(wǎng)絡技術(shù)的飛速發(fā)展,電信、金融、電子政務等關(guān)鍵領(lǐng)域?qū)Ψ掌鞒掷m(xù)運行的要求越來越高,由于服務器宕機等故障所造成的業(yè)務停止將會帶來無法估量的損失,為了應對這樣的情況,目前慣用手段是采用高可用集群系統(tǒng), 即使某臺服務器發(fā)生故障,用戶業(yè)務和數(shù)據(jù)也可迅速切換到備份服務器上,從而保證了整個系統(tǒng)對外服務的正常,為企業(yè)M小時x365天的關(guān)鍵業(yè)務應用提供了強大的保障。但是,現(xiàn)有高可用集群系統(tǒng)難以克服的一個問題是節(jié)點假死問題,比如當客戶端的請求量達到一定數(shù)值,出現(xiàn)服務器硬件資源難以滿足需求,服務器不能正常對外提供服務,半癱瘓的一種狀況。這種狀況的持續(xù)時間不定,是否可恢復也未知。此時如果備份服務器接管業(yè)務,主機假死恢復后服務在兩個節(jié)點同時運行,會發(fā)生磁陣雙掛,導致用戶數(shù)據(jù)丟失。而如果備份服務器不接管業(yè)務則集群不能正常對外提供服務。因此,我們希望能有一種方法能解決假死的問題,保證高可用集群系統(tǒng)能更安全穩(wěn)定的提供服務。現(xiàn)有的看門狗技術(shù),又叫watchdog timer,是一個定時器電路,一般看門狗芯片和 CPU的一個I/O引腳相連,該I/O引腳通過程序控制它定時地往看門狗的這個引腳上送入高電平(喂狗),一旦CPU由于干擾造成程序跑飛后而陷入死循環(huán)狀態(tài)時,喂狗便不能被執(zhí)行,這個時候,看門狗電路就會由于得不到CPU送來的信號,便在它和CPU復位引腳相連的引腳上送出一個復位信號,使CPU發(fā)生復位,系統(tǒng)重啟。
發(fā)明內(nèi)容
針對上述問題,本發(fā)明提供基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法,該方法基于看門狗技術(shù),對假死狀態(tài)進行檢測、確認,避免業(yè)務在兩個節(jié)點同時運行情況的發(fā)生。本發(fā)明通過以下技術(shù)手段實現(xiàn)基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法,包括以下步驟A.集群系統(tǒng)啟動時,讀取配置文件,得到喂狗時間間隔T和最大檢測失敗次數(shù)N ; 設置看門狗超時時間為TXN,開啟看門狗;B.設定喂狗參數(shù)條件;C.啟動定時器進程,每隔時間T檢測喂狗參數(shù)是否符合,參數(shù)符合則進行喂狗操作,然后等待時間T后進行下次檢測;否則執(zhí)行步驟D ;D.檢測失敗,不喂狗,等待時間T后進行下次檢測;當連續(xù)N次檢測失敗,看門狗超時,系統(tǒng)重啟;
E.系統(tǒng)重啟過程中,該節(jié)點上運行的服務遷移到備份節(jié)點,保證系統(tǒng)的高可用性和數(shù)據(jù)安全性。本發(fā)明還可做以下改進步驟B中,所述喂狗參數(shù)條件為定時器進程正常運行。步驟B中,所述喂狗參數(shù)條件為衡量系統(tǒng)負載,系統(tǒng)負載小于閥值則符合喂狗條件。所述衡量系統(tǒng)負載的方法是,首先,獲取系統(tǒng)CPU的總個數(shù)Num ;其次,讀取系統(tǒng)最近5-20分鐘的總負載值Load,計算當前平均負載LoadAvg = Load/Num ;然后比較系統(tǒng)當前平均負載LoadAvg與配置文件中規(guī)定的系統(tǒng)負載閾值Thres,如果LoadAvg小于Hires,則喂狗參數(shù)符合。所述衡量系統(tǒng)負載的方式為iowait查看磁盤IO負載、vmstat估算內(nèi)存負載中的至少一種。步驟B中,所述喂狗參數(shù)條件為,首先,讀取配置文件,記錄需要由看門狗檢測的服務以及其檢測腳本信息;然后,進行服務本地檢測,如果服務檢測成功,則喂狗參數(shù)符合。所述服務本地檢測方式為通過檢測腳本發(fā)送TCP連接請求、SQL查詢、特定于服務的消息、帶協(xié)議標示位的包頭或包體(包括文本和二進制流協(xié)議)中的任一種方式檢測服務的可用性。所述檢測腳本是由python、perl、shell、C中任一種語言所編寫的檢測程序。
所述看門狗是硬件看門狗。與現(xiàn)有技術(shù)相比,本發(fā)明具有的有益效果為1)本發(fā)明提供的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法,先檢查主機是否處于假死狀態(tài),確定主機假死后使用看門狗技術(shù)重啟主機,確保主機上運行的服務停止,有效的避免了主機假死恢復后服務在兩個節(jié)點同時運行,會發(fā)生磁陣雙掛,導致用戶數(shù)據(jù)丟失的問題,保證了整個系統(tǒng)運行的穩(wěn)定性。2)本發(fā)明提供的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法,先檢查主機是否處于假死狀態(tài),確定主機假死后使用看門狗技術(shù)重啟主機,主機重啟過程中備份節(jié)點接管業(yè)務,解決了主機持續(xù)假死,集群不能正常對外提供服務問題,保證了服務可持續(xù)性。
圖1為高可用多節(jié)點集群系統(tǒng)拓撲圖;圖2為本發(fā)明的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法流程圖;圖中1.磁盤陳列;2.活動節(jié)點;3.備份節(jié)點。
具體實施例方式下面結(jié)合附圖和實施例對本發(fā)明進行詳細的描述,以更進一步了解本發(fā)明的目的、方案及功效,但不作為對本發(fā)明所附權(quán)利要求保護的限制。實施例1
4
集群配置L個節(jié)點(L>》,每個節(jié)點都有硬件看門狗模塊。按照圖1進行現(xiàn)場部署,根據(jù)需要為集群配置m個服務。基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法,包括以下步驟A.集群系統(tǒng)啟動時,讀取配置文件,得到喂狗時間間隔T和最大檢測失敗次數(shù)N ; 設置看門狗超時時間為TXN,開啟看門狗;B.設定喂狗參數(shù)條件;C.啟動定時器進程,每隔時間T檢測喂狗參數(shù)是否符合,參數(shù)符合則進行喂狗操作,然后等待時間T后進行下次檢測;否則執(zhí)行步驟D ;D.檢測失敗,不喂狗,等待時間T后進行下次檢測;當連續(xù)N次檢測失敗,看門狗超時,系統(tǒng)重啟;E.系統(tǒng)重啟過程中,該節(jié)點上運行的服務遷移到備份節(jié)點,保證系統(tǒng)的高可用性和數(shù)據(jù)安全性。啟動集群后,進行系統(tǒng)假死狀態(tài)測試,節(jié)點L2上有運行服務,采用超量客戶端同時訪問L2上的服務的方法導致節(jié)點L2假死。L2假死時間TXN秒后,看門狗超時,節(jié)點L2 重啟,原運行在節(jié)點L2上的服務遷移到備份節(jié)點上,整個集群系統(tǒng)能正常對外提供服務。實施例2集群配置L個節(jié)點(L > 2),每個節(jié)點都有硬件看門狗模塊,。按照圖1進行現(xiàn)場部署,根據(jù)需要為集群配置m個服務。基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法,包括以下步驟A.集群系統(tǒng)啟動時,讀取配置文件,得到喂狗時間間隔T和最大檢測失敗次數(shù)N ; 設置看門狗超時時間為TXN,開啟看門狗;B.設定喂狗參數(shù)條件,為定時器進程正常運行;C.啟動定時器進程,每隔時間T檢測喂狗參數(shù)是否符合,參數(shù)符合則進行喂狗操作,然后等待時間T后進行下次檢測;否則執(zhí)行步驟D ;D.檢測失敗,不喂狗,等待時間T后進行下次檢測;當連續(xù)N次檢測失敗,看門狗超時,系統(tǒng)重啟;E.系統(tǒng)重啟過程中,該節(jié)點上運行的服務遷移到備份節(jié)點,保證系統(tǒng)的高可用性和數(shù)據(jù)安全性。啟動集群后,進行系統(tǒng)假死狀態(tài)測試,節(jié)點L2上有運行服務,在L2上運行導致系統(tǒng)假死的測試程序?qū)е鹿?jié)點L2假死。L2假死時間TXN秒后,看門狗超時,節(jié)點L2重啟,原運行在節(jié)點L2上的服務遷移到備份節(jié)點上,整個集群系統(tǒng)能正常對外提供服務。實施例3集群配置L個節(jié)點(L > 2),每個節(jié)點都有硬件看門狗模塊,。按照圖1進行現(xiàn)場部署,根據(jù)需要為集群配置m個服務。基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法,包括以下步驟A.集群系統(tǒng)啟動時,讀取配置文件,得到喂狗時間間隔T和最大檢測失敗次數(shù)N ; 設置看門狗超時時間為TXN,開啟看門狗;B.設定喂狗參數(shù)條件,首先,獲取系統(tǒng)CPU的總個數(shù)Num ;其次,讀取系統(tǒng)最近15 分鐘的總負載值Load,計算當前平均負載LoadAvg = Load/Num ;然后比較系統(tǒng)當前平均負載LoadAvg與配置文件中規(guī)定的系統(tǒng)負載閾值Thres,如果LoadAvg小于Hires,則喂狗參數(shù)符合;C.啟動定時器進程,每隔時間T檢測喂狗參數(shù)是否符合,參數(shù)符合則進行喂狗操作,然后等待時間T后進行下次檢測;否則執(zhí)行步驟D ;D.檢測失敗,不喂狗,等待時間T后進行下次檢測;當連續(xù)N次檢測失敗,看門狗超時,系統(tǒng)重啟;E.系統(tǒng)重啟過程中,該節(jié)點上運行的服務遷移到備份節(jié)點,保證系統(tǒng)的高可用性和數(shù)據(jù)安全性。啟動集群后,進行系統(tǒng)狀態(tài)測試,節(jié)點L2上有運行服務,采用超量客戶端同時訪問L2上的服務的方法導致平均負載LoadAvg大于系統(tǒng)負載閾值Thres,該狀態(tài)持續(xù)TXN秒后,看門狗超時,節(jié)點L2重啟,原運行在節(jié)點L2上的服務遷移到備份節(jié)點上,整個集群系統(tǒng)能正常對外提供服務。實施例4集群配置L個節(jié)點(L >幻,每個節(jié)點都有硬件看門狗模塊,。按照圖1進行現(xiàn)場部署,根據(jù)需要為集群配置m個服務。基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法,包括以下步驟A.集群系統(tǒng)啟動時,讀取配置文件,得到喂狗時間間隔T和最大檢測失敗次數(shù)N ; 設置看門狗超時時間為TXN,開啟看門狗;B.設定喂狗參數(shù)條件為,首先,讀取配置文件,記錄需要由看門狗檢測的服務以及其檢測腳本信息;然后,通過檢測腳本發(fā)送TCP連接請求、SQL查詢方式進行服務本地檢測, 如果服務檢測成功,則喂狗參數(shù)符合;C.啟動定時器進程,每隔時間T檢測喂狗參數(shù)是否符合,參數(shù)符合則進行喂狗操作,然后等待時間T后進行下次檢測;否則執(zhí)行步驟D ;D.檢測失敗,不喂狗,等待時間T后進行下次檢測;當連續(xù)N次檢測失敗,看門狗超時,系統(tǒng)重啟;E.系統(tǒng)重啟過程中,該節(jié)點上運行的服務遷移到備份節(jié)點,保證系統(tǒng)的高可用性和數(shù)據(jù)安全性。啟動集群后,進行系統(tǒng)狀態(tài)測試,節(jié)點L2上有運行服務,在L2上運行測試程序?qū)е鹿?jié)點L2假死,該狀態(tài)持續(xù)T X N秒后,服務連續(xù)N次本地檢測失敗,該狀態(tài)持續(xù)T X N秒后, 看門狗超時,節(jié)點L2重啟,原運行在節(jié)點L2上的服務遷移到備份節(jié)點上,整個集群系統(tǒng)能正常對外提供服務。上述的實施例僅為本發(fā)明的優(yōu)選實施例,不能以此來限定本發(fā)明的權(quán)利范圍,因此,依本發(fā)明申請專利范圍所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
權(quán)利要求
1.基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法,其特征在于包括以下步驟A.集群系統(tǒng)啟動時,讀取配置文件,得到喂狗時間間隔T和最大檢測失敗次數(shù)N;設置看門狗超時時間為TXN,開啟看門狗;B.設定喂狗參數(shù)條件;C.啟動定時器進程,每隔時間T檢測喂狗參數(shù)是否符合,參數(shù)符合則進行喂狗操作,然后等待時間τ后進行下次檢測;否則執(zhí)行步驟D ;D.檢測失敗,不喂狗,等待時間T后進行下次檢測;當連續(xù)N次檢測失敗,看門狗超時, 系統(tǒng)重啟;E.系統(tǒng)重啟過程中,該節(jié)點上運行的服務遷移到備份節(jié)點,保證系統(tǒng)的高可用性和數(shù)據(jù)安全性。
2.根據(jù)權(quán)利要求1所述的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法, 其特征在于步驟B中,所述喂狗參數(shù)條件為定時器進程正常運行。
3.根據(jù)權(quán)利要求1所述的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法, 其特征在于步驟B中,所述喂狗參數(shù)條件為衡量系統(tǒng)負載,系統(tǒng)負載小于閥值則符合喂狗條件。
4.根據(jù)權(quán)利要求3所述的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法, 其特征在于所述衡量系統(tǒng)負載的方法是,首先,獲取系統(tǒng)CPU的總個數(shù)Num ;其次,讀取系統(tǒng)最近5-20分鐘的總負載值Load,計算當前平均負載LoadAvg = Load/Num ;然后比較系統(tǒng)當前平均負載LoadAvg與配置文件中規(guī)定的系統(tǒng)負載閾值Thres,如果LoadAvg小于 Thres,則喂狗參數(shù)符合。
5.根據(jù)權(quán)利要求3所述的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法, 其特征在于所述衡量系統(tǒng)負載的方式為iowait查看磁盤IO負載、vmstat估算內(nèi)存負載中的至少一種。
6.根據(jù)權(quán)利要求1所述的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法, 其特征在于步驟B中,所述喂狗參數(shù)條件為,首先,讀取配置文件,記錄需要由看門狗檢測的服務以及其檢測腳本信息;然后,進行服務本地檢測,如果服務檢測成功,則喂狗參數(shù)符I=I ο
7.根據(jù)權(quán)利要求6所述的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法, 其特征在于所述服務本地檢測方式為通過檢測腳本發(fā)送TCP連接請求、SQL查詢、特定于服務的消息、帶協(xié)議標示位的包頭或包體中的任一種方式檢測服務的可用性。
8.根據(jù)權(quán)利要求7所述的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法, 其特征在于所述檢測腳本是由python、perl、shell、C中任一種語言所編寫的檢測程序。
9.根據(jù)權(quán)利要求1-8中任一項所述的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法,其特征在于所述看門狗是硬件看門狗。
全文摘要
本發(fā)明提供的基于看門狗本地檢測技術(shù)的高可用集群系統(tǒng)假死解決方法,屬于計算機集群技術(shù)領(lǐng)域。該方法通過預先設定喂狗參數(shù)條件,每隔時間T檢測喂狗參數(shù)是否符合,參數(shù)符合則進行喂狗操作,然后等待時間T后進行下次檢測;否則不喂狗,等待時間T后進行下次檢測;當連續(xù)N次檢測失敗,看門狗超時,系統(tǒng)重啟;系統(tǒng)重啟過程中,該節(jié)點上運行的服務遷移到備份節(jié)點,保證系統(tǒng)的高可用性和數(shù)據(jù)安全性。避免了避免了主機假死恢復后服務在兩個節(jié)點同時運行,會發(fā)生磁陣雙掛,導致用戶數(shù)據(jù)丟失的問題,保證了整個系統(tǒng)運行的穩(wěn)定性。該方法可廣泛應用于計算機集群技術(shù)領(lǐng)域。
文檔編號G06F11/07GK102521060SQ201110362929
公開日2012年6月27日 申請日期2011年11月16日 優(yōu)先權(quán)日2011年11月16日
發(fā)明者王幸福, 蔡強, 袁泉 申請人:廣東新支點技術(shù)服務有限公司