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