亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于仲裁磁盤的高可用系統(tǒng)不間斷運(yùn)行方法

文檔序號(hào):6332138閱讀:151來源:國知局
專利名稱:基于仲裁磁盤的高可用系統(tǒng)不間斷運(yùn)行方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)高可用集群系統(tǒng),具體涉及通過磁盤進(jìn)行信息交互的技術(shù),使高可用系統(tǒng)可以不間斷運(yùn)行的方法。
背景技術(shù)
作為提高在計(jì)算機(jī)系統(tǒng)中執(zhí)行的處理的可用性的方式,存在被稱為“集群”的思想。集群,英文名稱為Cluster,通俗地說,集群是這樣一種技術(shù)它將多個(gè)系統(tǒng)連接到一起,使多臺(tái)服務(wù)器能夠像一臺(tái)機(jī)器那樣工作或者看起來好像一臺(tái)機(jī)器。采用集群系統(tǒng)通常是為了提高系統(tǒng)的穩(wěn)定性和網(wǎng)絡(luò)中心的數(shù)據(jù)處理能力及服務(wù)能力。目前,有兩種常用的服務(wù)器集群方法,一種是將備份服務(wù)器連接在主服務(wù)器上,當(dāng)主服務(wù)器發(fā)生故障時(shí),備份服務(wù)器才投入運(yùn)行,把主服務(wù)器上所有任務(wù)接管過來。另一種方法是將多臺(tái)服務(wù)器連接,這些服務(wù)器一起分擔(dān)同樣的應(yīng)用和數(shù)據(jù)庫計(jì)算任務(wù),改善關(guān)鍵大型應(yīng)用的響應(yīng)時(shí)間。在集群系統(tǒng)中,集群內(nèi)任一系統(tǒng)上運(yùn)行的服務(wù)可被所有的網(wǎng)絡(luò)客戶所使用。集群必須可以協(xié)調(diào)管理各分離組件的錯(cuò)誤和失敗,并可透明的向集群中加入組件。用戶的公共數(shù)據(jù)被放置到了共享的磁盤柜中。當(dāng)集群系統(tǒng)在正常運(yùn)轉(zhuǎn)時(shí),應(yīng)用只在一臺(tái)服務(wù)器上運(yùn)行, 并且只有這臺(tái)服務(wù)器才能操縱該應(yīng)用在共享磁盤柜上的數(shù)據(jù)區(qū),其它的服務(wù)器監(jiān)控這臺(tái)服務(wù)器,只要這臺(tái)服務(wù)器上的應(yīng)用停止運(yùn)行(無論是硬件損壞、操作系統(tǒng)死機(jī)、應(yīng)用軟件故障,還是人為誤操作造成的應(yīng)用停止運(yùn)行),其它的服務(wù)器就會(huì)接管這臺(tái)服務(wù)器所運(yùn)行的應(yīng)用,并將共享磁盤柜上的相應(yīng)數(shù)據(jù)區(qū)接管過來。也就是說在集群系統(tǒng)中,在多個(gè)計(jì)算機(jī)中安裝同一程序,將其中的幾個(gè)計(jì)算機(jī)作為執(zhí)行實(shí)際處理的計(jì)算機(jī),剩下的計(jì)算機(jī)被控制成在檢測到執(zhí)行處理的計(jì)算機(jī)發(fā)生故障時(shí)取代該計(jì)算機(jī)來執(zhí)行處理。這些服務(wù)器或計(jì)算機(jī)可被稱為節(jié)點(diǎn),節(jié)點(diǎn)的含義是指網(wǎng)絡(luò)任何支路的終端或網(wǎng)絡(luò)中兩個(gè)或更多支路的互連公共點(diǎn)。 為了使各節(jié)點(diǎn)能順利接管某臺(tái)服務(wù)器所運(yùn)行的應(yīng)用,并將共享磁盤柜上的相應(yīng)數(shù)據(jù)區(qū)接管過來,而配置有集群內(nèi)各節(jié)點(diǎn)都可以訪問的外部共享存儲(chǔ)裝置。在多節(jié)點(diǎn)的高可用集群中,使用仲裁策略來決定集群的工作狀態(tài)。通常使用的仲裁策略是計(jì)算集群中活躍的節(jié)點(diǎn)個(gè)數(shù)是否超過整個(gè)集群節(jié)點(diǎn)總數(shù)的一半。節(jié)點(diǎn)是否活躍是通過節(jié)點(diǎn)的心跳網(wǎng)絡(luò)連接狀況決定的。在節(jié)點(diǎn)個(gè)數(shù)不多的多節(jié)點(diǎn)集群中,連通的活躍節(jié)點(diǎn)不到半數(shù)的可能性較大,這種情況下,集群就處于癱瘓狀態(tài)。為了避免由于節(jié)點(diǎn)或網(wǎng)故障導(dǎo)致整個(gè)集群掛起,不再服務(wù)的問題,可以在共享存儲(chǔ)裝置上,劃出一塊小于IOM的共享存儲(chǔ)來記錄各節(jié)點(diǎn)的狀態(tài)信息,由守護(hù)進(jìn)程參與對(duì)各節(jié)點(diǎn)的投票,這個(gè)小于IOM的共享存儲(chǔ)就是仲裁磁盤。仲裁磁盤是防止多個(gè)服務(wù)器爭奪對(duì)服務(wù)、程序、資源的控制權(quán)的一個(gè)機(jī)制。仲裁磁盤的一種工作方式是啟動(dòng)仲裁磁盤守護(hù)進(jìn)程,且運(yùn)行在集群的所有節(jié)點(diǎn)上,當(dāng)前節(jié)點(diǎn)的守護(hù)進(jìn)程定期評(píng)估當(dāng)前節(jié)點(diǎn)的健康情況,然后把當(dāng)前節(jié)點(diǎn)的狀態(tài)信息放入到指定的共享磁盤區(qū)域。仲裁磁盤守護(hù)進(jìn)程接著查看其他節(jié)點(diǎn)的狀態(tài),記錄各節(jié)點(diǎn)的狀態(tài)信息。集群的仲裁計(jì)數(shù)就是每個(gè)節(jié)點(diǎn)計(jì)數(shù)再加上仲裁磁盤分區(qū)的計(jì)數(shù)之和。例如,一個(gè)四節(jié)點(diǎn)集群,總共仲裁投票數(shù)是7,每個(gè)節(jié)點(diǎn)投票數(shù)為1,仲裁磁盤投票數(shù)為3。這樣,在一個(gè)節(jié)點(diǎn)A上的仲裁磁盤守護(hù)進(jìn)程經(jīng)過幾次嘗試都不能訪問共享磁盤分區(qū),那么運(yùn)行在另一節(jié)點(diǎn)B上的仲裁磁盤守護(hù)進(jìn)程會(huì)請求節(jié)點(diǎn)A被隔離,集群中的控制節(jié)點(diǎn)會(huì)重啟節(jié)點(diǎn)A并重新使節(jié)點(diǎn)A加入集群中。上述仲裁磁盤的工作方式保證了集群的連續(xù)性,但是在集群心跳被分割為多個(gè)網(wǎng)絡(luò)分區(qū)的情況下,運(yùn)行的網(wǎng)絡(luò)分區(qū)是id最小的節(jié)點(diǎn)所在的網(wǎng)絡(luò)分區(qū)。極端情況下,可能只有這一個(gè)節(jié)點(diǎn)運(yùn)行,而其它所有節(jié)點(diǎn)都被隔離。這樣整個(gè)集群的負(fù)載都在一個(gè)節(jié)點(diǎn)上,會(huì)導(dǎo)致集群的響應(yīng)能力下降。本發(fā)明針對(duì)上述方法的弊端,采用在節(jié)點(diǎn)連接個(gè)數(shù)最多的網(wǎng)絡(luò)分區(qū)中選舉整個(gè)集群的主控節(jié)點(diǎn)重新獲得仲裁權(quán)的方法,保證高可用集群在心跳網(wǎng)絡(luò)發(fā)生故障的情況下能智能地選舉連接節(jié)點(diǎn)個(gè)數(shù)較多的網(wǎng)絡(luò)分區(qū)代表集群對(duì)外提供服務(wù),既保證了集群的連續(xù)性, 又提高了集群故障情況下的負(fù)載能力。

發(fā)明內(nèi)容
針對(duì)目前仲裁磁盤在心跳網(wǎng)絡(luò)故障時(shí)選舉節(jié)點(diǎn)算法的缺陷,本發(fā)明提供新的節(jié)點(diǎn)選舉方法,仲裁磁盤不再增加仲裁計(jì)數(shù),在網(wǎng)絡(luò)心跳工作正常(即集群活躍節(jié)點(diǎn)數(shù)超半數(shù)) 情況下,仲裁磁盤的守護(hù)進(jìn)程僅把節(jié)點(diǎn)信息寫入仲裁磁盤。當(dāng)集群中一些節(jié)點(diǎn)無效的時(shí)候, 守護(hù)進(jìn)程選舉節(jié)點(diǎn)連接個(gè)數(shù)最多的網(wǎng)絡(luò)分區(qū)中的控制節(jié)點(diǎn)作為集群的主控節(jié)點(diǎn),并使主控節(jié)點(diǎn)重新?lián)碛兄俨脵?quán),使集群能正常工作。從而保證集群的連續(xù)性,提高集群故障情況下的負(fù)載能力。本發(fā)明提供了一種基于仲裁磁盤的高可用系統(tǒng)不間斷運(yùn)行方法,運(yùn)用于有共享存儲(chǔ)設(shè)備的多節(jié)點(diǎn)集群中,其包括一個(gè)仲裁磁盤,集群中每個(gè)節(jié)點(diǎn)能夠同時(shí)讀寫該仲裁磁盤, 且在每個(gè)節(jié)點(diǎn)上運(yùn)行的仲裁磁盤守護(hù)進(jìn)程把各節(jié)點(diǎn)的信息寫入該仲裁磁盤上與各節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)信息區(qū)域,并對(duì)所有節(jié)點(diǎn)在仲裁磁盤中保存的信息進(jìn)行檢測,在節(jié)點(diǎn)故障和出現(xiàn)網(wǎng)絡(luò)分區(qū)時(shí),該仲裁磁盤守護(hù)進(jìn)程選舉節(jié)點(diǎn)連接個(gè)數(shù)最多的網(wǎng)絡(luò)分區(qū)的控制節(jié)點(diǎn)作為整個(gè)集群的主控節(jié)點(diǎn),使其獲得仲裁權(quán),從而實(shí)現(xiàn)以節(jié)點(diǎn)連接個(gè)數(shù)最多的網(wǎng)絡(luò)分區(qū)代表集群對(duì)外提供服務(wù)。承上,基于仲裁磁盤的高可用系統(tǒng)不間斷運(yùn)行方法還包含以下步驟1)配置仲裁磁盤信息到集群將仲裁磁盤的配置內(nèi)容寫入集群配置文件,集群節(jié)點(diǎn)僅需要在一個(gè)節(jié)點(diǎn)上進(jìn)行初始化仲裁磁盤及配置工作;2)初始化仲裁磁盤頭及節(jié)點(diǎn)信息仲裁磁盤內(nèi)容包括仲裁磁盤頭、節(jié)點(diǎn)id與節(jié)點(diǎn)的仲裁磁盤分區(qū)id之間的對(duì)應(yīng)關(guān)系表、集群每個(gè)節(jié)點(diǎn)的狀態(tài)信息,節(jié)點(diǎn)的狀態(tài)信息包括節(jié)點(diǎn)是否為控制節(jié)點(diǎn)、仲裁狀態(tài)、工作節(jié)點(diǎn)隊(duì)列長度和與當(dāng)前節(jié)點(diǎn)連接的節(jié)點(diǎn)個(gè)數(shù)等;3)在仲裁磁盤守護(hù)進(jìn)程中選舉擁有磁盤仲裁權(quán)的節(jié)點(diǎn)仲裁磁盤選舉有磁盤仲裁權(quán)的節(jié)點(diǎn)時(shí),是尋找節(jié)點(diǎn)個(gè)數(shù)最多的網(wǎng)絡(luò)分區(qū)中的控制節(jié)點(diǎn),使其重新獲得仲裁權(quán)。當(dāng)集群恢復(fù)到有半數(shù)以上節(jié)點(diǎn)心跳連通時(shí),磁盤仲裁失效;4)交互仲裁磁盤守護(hù)進(jìn)程與集群其它進(jìn)程的信息集群在選舉控制節(jié)點(diǎn)時(shí),集群其它進(jìn)程會(huì)向仲裁磁盤守護(hù)進(jìn)程發(fā)送自己是控制節(jié)點(diǎn)的消息。集群無超半數(shù)節(jié)點(diǎn)連接時(shí), 仲裁磁盤進(jìn)程選舉出擁有磁盤仲裁狀態(tài)的網(wǎng)絡(luò)分區(qū)后,向集群發(fā)送獲得磁盤仲裁權(quán)的消息;否則,發(fā)送沒有磁盤仲裁權(quán)的消息。本發(fā)明的技術(shù)效果是利用仲裁磁盤達(dá)到集群不間斷運(yùn)行的目的,主要表現(xiàn)在第一,仲裁磁盤監(jiān)控各節(jié)點(diǎn)運(yùn)行狀況,在集群有半數(shù)以上節(jié)點(diǎn)可連通并且正常工作的情況下,仲裁磁盤守護(hù)進(jìn)程僅獲取各節(jié)點(diǎn)狀態(tài),而不對(duì)集群狀態(tài)進(jìn)行任何改變。第二,當(dāng)集群發(fā)生心跳斷開時(shí),在任何一個(gè)網(wǎng)絡(luò)分區(qū)中的活躍節(jié)點(diǎn)個(gè)數(shù)都不能使集群對(duì)外提供正常服務(wù)工作的情況下,根據(jù)各節(jié)點(diǎn)寫入磁盤的信息選舉一個(gè)控制節(jié)點(diǎn)讓其擁有仲裁權(quán),從而使集群恢復(fù)工作。并且擁有仲裁權(quán)的節(jié)點(diǎn)是各網(wǎng)絡(luò)分區(qū)中連接節(jié)點(diǎn)個(gè)數(shù)最多的分區(qū)中的節(jié)點(diǎn),使集群中可以工作的節(jié)點(diǎn)保持最多,保證集群服務(wù)效率更高。這里的仲裁狀態(tài)是指,高可用集群可以正常工作的狀態(tài),通常要求集群活躍節(jié)點(diǎn)大于整個(gè)集群節(jié)點(diǎn)總數(shù)的半數(shù)。如果集群中有網(wǎng)絡(luò)分區(qū),那么擁有大于整個(gè)集群節(jié)點(diǎn)總數(shù)的半數(shù)的網(wǎng)絡(luò)分區(qū)可以達(dá)到仲裁狀態(tài),即集群節(jié)點(diǎn)個(gè)數(shù)有效,或者說其它網(wǎng)絡(luò)分區(qū)的節(jié)點(diǎn)沒有仲裁狀態(tài),即節(jié)點(diǎn)個(gè)數(shù)無效。


圖1為仲裁磁盤結(jié)構(gòu)圖;圖2為本發(fā)明高可用系統(tǒng)不間斷運(yùn)行方法實(shí)現(xiàn)的流程圖;圖3為本發(fā)明仲裁磁盤選舉的流程圖。
具體實(shí)施例方式為了使本發(fā)明所采用的技術(shù)、手段及其優(yōu)點(diǎn),現(xiàn)舉優(yōu)選實(shí)施例并配合附圖詳述如后,此僅供說明之用,在專利申請上并不受具體實(shí)施方式
的限制。本發(fā)明基于仲裁磁盤的高可用系統(tǒng)不間斷運(yùn)行方法,主要是借助仲裁磁盤監(jiān)控各節(jié)點(diǎn)運(yùn)行狀況,在集群有半數(shù)以上節(jié)點(diǎn)可連通并且正常工作的情況下,仲裁磁盤守護(hù)進(jìn)程僅獲取各節(jié)點(diǎn)狀態(tài),而不對(duì)集群狀態(tài)進(jìn)行任何改變;當(dāng)集群發(fā)生心跳斷開時(shí),在任何一個(gè)網(wǎng)絡(luò)分區(qū)中的活躍節(jié)點(diǎn)個(gè)數(shù)都不能使集群對(duì)外提供正常服務(wù)工作的情況下,根據(jù)各節(jié)點(diǎn)寫入磁盤的信息選舉一個(gè)控制節(jié)點(diǎn)讓其擁有仲裁權(quán),從而使集群恢復(fù)工作。并且擁有仲裁權(quán)的節(jié)點(diǎn)是各網(wǎng)絡(luò)分區(qū)中連接節(jié)點(diǎn)個(gè)數(shù)最多的分區(qū)中的控制節(jié)點(diǎn),從而使集群中可以工作的節(jié)點(diǎn)數(shù)量保持最多,保證集群服務(wù)效率更高。運(yùn)用本發(fā)明的不間斷運(yùn)行方法一般包括以下步驟(1)搭建多節(jié)點(diǎn)計(jì)算機(jī)集群環(huán)境(圖1的步驟11)在天文、軍事、物理等需要很精密的、大量的運(yùn)算的工作中,通常需用搭建多節(jié)點(diǎn)計(jì)算機(jī)集群環(huán)境,以使用到多個(gè)CPU的運(yùn)算能力,所以可以加快運(yùn)算的速度。(2)準(zhǔn)備小于IOM的共享存儲(chǔ)在集群的共享儲(chǔ)存設(shè)備中分出一個(gè)小于IOM的共享存儲(chǔ)(圖1的步驟12),其中, 步驟11和步驟12為軟硬件環(huán)境的準(zhǔn)備,硬件環(huán)境包括多臺(tái)作為PC或者服務(wù)器和存儲(chǔ)設(shè)備,服務(wù)器上具備雙網(wǎng)卡,并且可以連接到存儲(chǔ)設(shè)備。服務(wù)器上安裝同樣的操作系統(tǒng)和高可用產(chǎn)品,每組網(wǎng)卡互相連通,一組網(wǎng)絡(luò)地址供心跳網(wǎng)絡(luò)連接使用,一組網(wǎng)絡(luò)地址提供對(duì)外服務(wù)使用,各服務(wù)器連接同一個(gè)共享存儲(chǔ)設(shè)備。(3)配置仲裁磁盤信息到集群(圖1的步驟13)
各節(jié)點(diǎn)上安裝高可用軟件,并啟動(dòng)集群服務(wù)。在配置節(jié)點(diǎn)上將上述步驟指定的共享存儲(chǔ)初始化為仲裁磁盤,配置仲裁磁盤標(biāo)簽到集群配置文件,使用的標(biāo)簽為配置文件中指定的標(biāo)簽。(4)初始化仲裁磁盤及節(jié)點(diǎn)信息(步驟14)仲裁磁盤的結(jié)構(gòu)如附圖1所示,當(dāng)集群配置了仲裁磁盤信息,仲裁磁盤守護(hù)進(jìn)程被啟動(dòng)。仲裁磁盤守護(hù)進(jìn)程判斷當(dāng)前節(jié)點(diǎn)的工作狀態(tài),將當(dāng)前節(jié)點(diǎn)的信息寫入到仲裁磁盤上與當(dāng)前節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)信息區(qū)域。然后將其它節(jié)點(diǎn)寫入到仲裁磁盤對(duì)應(yīng)區(qū)域的信息保存到節(jié)點(diǎn)信息數(shù)組中。節(jié)點(diǎn)信息中包含節(jié)點(diǎn)是否為控制節(jié)點(diǎn)、仲裁狀態(tài)、工作節(jié)點(diǎn)隊(duì)列長度和與本節(jié)點(diǎn)連接的節(jié)點(diǎn)個(gè)數(shù)等,這些信息用于仲裁磁盤選舉時(shí)作參照。(5)由仲裁磁盤守護(hù)進(jìn)程選舉擁有磁盤仲裁權(quán)的節(jié)點(diǎn)(步驟15)仲裁磁盤選舉的目的是當(dāng)集群發(fā)生心跳斷開時(shí),在任何一個(gè)網(wǎng)絡(luò)分區(qū)中節(jié)點(diǎn)個(gè)數(shù)都不能使集群有正常對(duì)外提供服務(wù)的情況下,根據(jù)各節(jié)點(diǎn)寫入磁盤的信息選舉一個(gè)控制節(jié)點(diǎn)讓其獲得仲裁狀態(tài)(即該節(jié)點(diǎn)獲得仲裁權(quán)),從而使集群恢復(fù)工作。(6)交互仲裁磁盤進(jìn)程與集群其它進(jìn)程的信息(步驟16)仲裁磁盤進(jìn)程與集群其它進(jìn)程的信息交互方法與集群的實(shí)現(xiàn)方式有關(guān)。一般來說,都采用進(jìn)程間通訊方法完成,具體方法有本地socket方式、g_source的事件輪詢、 corosync的ipc等。仲裁磁盤守護(hù)進(jìn)程與集群其它進(jìn)程的信息交互內(nèi)容包括節(jié)點(diǎn)是否為控制節(jié)點(diǎn)、仲裁狀態(tài)、節(jié)點(diǎn)隊(duì)列長度和節(jié)點(diǎn)連接個(gè)數(shù),這些信息是集群的其它進(jìn)程發(fā)送給仲裁磁盤守護(hù)進(jìn)程的。仲裁磁盤守護(hù)進(jìn)程發(fā)送給集群其它進(jìn)程的有節(jié)點(diǎn)獲得磁盤仲裁權(quán)或節(jié)點(diǎn)沒有獲得磁盤仲裁權(quán)。仲裁磁盤選舉過程如附圖3所示,具體包括以下步驟(1)仲裁磁盤的選舉是在仲裁磁盤守護(hù)進(jìn)程中進(jìn)行循環(huán)處理,在選舉之前,需要由仲裁磁盤守護(hù)進(jìn)程從仲裁磁盤中讀取各節(jié)點(diǎn)信息,各節(jié)點(diǎn)信息經(jīng)處理后放入節(jié)點(diǎn)信息結(jié)構(gòu)數(shù)組中(步驟so);(2)由仲裁磁盤守護(hù)進(jìn)程檢查節(jié)點(diǎn)信息結(jié)構(gòu)中的內(nèi)容,判斷每個(gè)節(jié)點(diǎn)所在網(wǎng)絡(luò)分區(qū)的連接個(gè)數(shù)是否達(dá)到節(jié)點(diǎn)總數(shù)的半數(shù)以上,即該節(jié)點(diǎn)是否處于仲裁狀態(tài)(步驟Si),如果節(jié)點(diǎn)是處于仲裁狀態(tài),表明有超半數(shù)節(jié)點(diǎn)心跳連接,此時(shí)磁盤仲裁不起作用,為保證集群不受之前磁盤仲裁影響,仲裁磁盤守護(hù)進(jìn)程向集群發(fā)送qdisk_qUOrate為0的消息(步驟 S2,);(3)如果節(jié)點(diǎn)沒有處于仲裁狀態(tài),表明沒有任何一個(gè)節(jié)點(diǎn)所在網(wǎng)絡(luò)分區(qū)的節(jié)點(diǎn)連接個(gè)數(shù)是達(dá)到節(jié)點(diǎn)總數(shù)的半數(shù)以上,表明集群中沒有超半數(shù)節(jié)點(diǎn)有心跳連接,此時(shí)由仲裁磁盤守護(hù)進(jìn)程開始需要選舉有磁盤仲裁狀態(tài)的網(wǎng)絡(luò)分區(qū)(步驟S2);(4)選舉有仲裁磁盤的網(wǎng)絡(luò)分區(qū)過程(步驟S2)中,首先,比較每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)連接個(gè)數(shù),選擇其中最大值并記錄為plugin_VOtes,設(shè)置masterjd為0 (步驟S21)。網(wǎng)絡(luò)分區(qū)要有磁盤仲裁狀態(tài),必須該網(wǎng)絡(luò)分區(qū)中節(jié)點(diǎn)連接個(gè)數(shù)大于等于plugin_VOtes ;(5)依照上述方式,檢查集群的每一個(gè)節(jié)點(diǎn)(步驟S22)判斷該節(jié)點(diǎn)是否為控制節(jié)點(diǎn),且節(jié)點(diǎn)連接個(gè)數(shù)是否大于等于plugiruvotes (步驟 S23),如果是,則將節(jié)點(diǎn)連接數(shù)大于等于plugiruvotes的節(jié)點(diǎn)的id設(shè)置為masterjd (步驟S24);否則,對(duì)集群里的其他節(jié)點(diǎn)繼續(xù)進(jìn)行檢查(步驟S25);(6)對(duì)集群里所有節(jié)點(diǎn)檢查完后,判斷當(dāng)前節(jié)點(diǎn)id是否為mastered (步驟S26)如果本節(jié)點(diǎn)id為master_id,則發(fā)送qdisk_quorate為1的消息(步驟S27,); 否則,再判斷該節(jié)點(diǎn)是否為控制節(jié)點(diǎn)(步驟S271),如果是控制節(jié)點(diǎn),則發(fā)送qdislquorate 為0的消息(步驟S272)。其中,plugin_votes 表示當(dāng)前仲裁磁盤正常工作的節(jié)點(diǎn)中,最大的網(wǎng)絡(luò)分區(qū)節(jié)點(diǎn)連接個(gè)數(shù);master_id 在節(jié)點(diǎn)信息比較時(shí),記錄可以獲得磁盤仲裁權(quán)的節(jié)點(diǎn)id ;qdisk_quorate 仲裁磁盤給集群其它進(jìn)程發(fā)送的消息,其值可以為1或0,1表示當(dāng)前節(jié)點(diǎn)獲得磁盤仲裁權(quán),0表示取消當(dāng)前節(jié)點(diǎn)的磁盤仲裁權(quán)。
權(quán)利要求
1.一種基于仲裁磁盤的高可用系統(tǒng)不間斷運(yùn)行方法,運(yùn)用于有共享存儲(chǔ)設(shè)備的多節(jié)點(diǎn)集群中,其特征在于包括一個(gè)仲裁磁盤,集群中每個(gè)節(jié)點(diǎn)能夠同時(shí)讀寫該仲裁磁盤,且在每個(gè)節(jié)點(diǎn)上運(yùn)行的仲裁磁盤守護(hù)進(jìn)程把各節(jié)點(diǎn)的信息寫入該仲裁磁盤上與各節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)信息區(qū)域,并對(duì)所有節(jié)點(diǎn)在仲裁磁盤中保存的信息進(jìn)行檢測,在節(jié)點(diǎn)故障和出現(xiàn)網(wǎng)絡(luò)分區(qū)時(shí),該仲裁磁盤守護(hù)進(jìn)程選舉節(jié)點(diǎn)連接個(gè)數(shù)最多的網(wǎng)絡(luò)分區(qū)的控制節(jié)點(diǎn)作為整個(gè)集群的主控節(jié)點(diǎn),使其獲得仲裁權(quán),從而實(shí)現(xiàn)以節(jié)點(diǎn)連接個(gè)數(shù)最多的網(wǎng)絡(luò)分區(qū)代表集群對(duì)外提供服務(wù)。
2.如權(quán)利要求1所述的方法,其特征在于所述仲裁磁盤是在集群的共享存儲(chǔ)設(shè)備上的分出的一部分,該仲裁磁盤小于10M。
3.如權(quán)利要求1所述的方法,其特征在于還包括將仲裁磁盤的配置信息寫入集群配置文件的步驟。
4.如權(quán)利要求1所述的方法,其特征在于還包括初始化仲裁磁盤及節(jié)點(diǎn)信息的步驟。
5.如權(quán)利要求3所述的方法,其特征在于所述仲裁磁盤的配置信息寫入到集群配置文件的方式是配置仲裁磁盤標(biāo)簽到集群配置文件。
6.如權(quán)利要求4所述的方法,其特征在于所述初始化仲裁磁盤及節(jié)點(diǎn)信息的步驟包括啟動(dòng)仲裁磁盤守護(hù)進(jìn)程,由仲裁磁盤守護(hù)進(jìn)程判斷當(dāng)前節(jié)點(diǎn)的工作狀態(tài),并將當(dāng)前節(jié)點(diǎn)的信息寫入到仲裁磁盤上與當(dāng)前節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)信息區(qū)域,經(jīng)初始化后的仲裁磁盤的內(nèi)容包括仲裁磁盤頭、節(jié)點(diǎn)id與節(jié)點(diǎn)磁盤id對(duì)應(yīng)關(guān)系表、集群每個(gè)節(jié)點(diǎn)的狀態(tài)信息,節(jié)點(diǎn)的狀態(tài)信息包括節(jié)點(diǎn)是否為控制節(jié)點(diǎn)、仲裁狀態(tài)、工作節(jié)點(diǎn)隊(duì)列長度和與當(dāng)前節(jié)點(diǎn)連接的節(jié)點(diǎn)個(gè)數(shù)。
7.如權(quán)利要求6所述的方法,其特征在于所述選舉節(jié)點(diǎn)連接個(gè)數(shù)最多的網(wǎng)絡(luò)分區(qū)的控制節(jié)點(diǎn)作為主控節(jié)點(diǎn)的步驟包括在選舉之前,運(yùn)行于各節(jié)點(diǎn)上的仲裁磁盤守護(hù)進(jìn)程從仲裁磁盤中讀取各節(jié)點(diǎn)信息,各節(jié)點(diǎn)信息經(jīng)處理后放入節(jié)點(diǎn)信息結(jié)構(gòu)數(shù)組中,由仲裁磁盤守護(hù)進(jìn)程檢查各節(jié)點(diǎn)信息結(jié)構(gòu)數(shù)組中的內(nèi)容,判斷每個(gè)節(jié)點(diǎn)所在網(wǎng)絡(luò)分區(qū)的節(jié)點(diǎn)連接個(gè)數(shù)是否達(dá)到節(jié)點(diǎn)總數(shù)的半數(shù)以上,若是,表明有超半數(shù)節(jié)點(diǎn)心跳連接,則由仲裁磁盤守護(hù)進(jìn)程給集群發(fā)送取消磁盤仲裁權(quán)的消息。
8.如權(quán)利要求7所述的方法,其特征在于如果判斷每個(gè)節(jié)點(diǎn)所在網(wǎng)絡(luò)分區(qū)的節(jié)點(diǎn)連接個(gè)數(shù)沒有達(dá)到節(jié)點(diǎn)總數(shù)的半數(shù)以上,表明集群中沒有超半數(shù)節(jié)點(diǎn)有心跳連接,此時(shí)由仲裁磁盤守護(hù)進(jìn)程選舉有磁盤仲裁狀態(tài)的網(wǎng)絡(luò)分區(qū),有磁盤仲裁狀態(tài)的網(wǎng)絡(luò)分區(qū)是該網(wǎng)絡(luò)分區(qū)中節(jié)點(diǎn)連接個(gè)數(shù)最多。
9.如權(quán)利要求8所述的方法,其特征在于所述選舉有磁盤仲裁狀態(tài)的網(wǎng)絡(luò)分區(qū)的過程包括比較所有節(jié)點(diǎn)的節(jié)點(diǎn)連接個(gè)數(shù),選擇其中最大值并記錄為 plugir^votes,同時(shí)將該節(jié)點(diǎn)的id設(shè)置為masterjd。
10.如權(quán)利要求9所述的方法,其特征在于所述選舉有磁盤仲裁狀態(tài)的網(wǎng)絡(luò)分區(qū)的過程還包括由仲裁磁盤守護(hù)進(jìn)程繼續(xù)對(duì)集群中的下一個(gè)節(jié)點(diǎn)進(jìn)行檢查,判斷該節(jié)點(diǎn)是否為控制節(jié)點(diǎn),且節(jié)點(diǎn)連接個(gè)數(shù)是否大于等于plugin_VOtes,如果是,則設(shè)置masterjd為該節(jié)點(diǎn)的id;依上述方式對(duì)集群里所有節(jié)點(diǎn)檢查完后,判斷當(dāng)前節(jié)點(diǎn)id是否為masterjd,如果是,則由仲裁磁盤守護(hù)進(jìn)程向集群發(fā)送當(dāng)前節(jié)點(diǎn)獲得磁盤仲裁權(quán)的消息;否則,如果當(dāng)前節(jié)點(diǎn)是控制節(jié)點(diǎn),則發(fā)送取消當(dāng)前節(jié)點(diǎn)磁盤仲裁權(quán)的消息。
全文摘要
本發(fā)明揭示了一種通過磁盤進(jìn)行信息交互的技術(shù)使高可用系統(tǒng)可以不間斷運(yùn)行的方法。本發(fā)明針對(duì)具有共享存儲(chǔ)設(shè)備的多節(jié)點(diǎn)高可用集群系統(tǒng),在共享存儲(chǔ)上劃定一小塊空間作為仲裁磁盤使用。高可用的各節(jié)點(diǎn)可以同時(shí)讀寫仲裁磁盤。各節(jié)點(diǎn)的仲裁磁盤守護(hù)進(jìn)程將節(jié)點(diǎn)的狀態(tài)信息寫入仲裁磁盤,并對(duì)所有節(jié)點(diǎn)在仲裁磁盤中保存的信息進(jìn)行檢測,在節(jié)點(diǎn)故障和出現(xiàn)網(wǎng)絡(luò)分區(qū)時(shí),從正常工作節(jié)點(diǎn)中智能選舉整個(gè)集群的主控節(jié)點(diǎn),使集群系統(tǒng)恢復(fù)到正常工作狀態(tài),從而避免高可用系統(tǒng)腦裂發(fā)生,保證高可用系統(tǒng)不間斷正常運(yùn)行。
文檔編號(hào)G06F15/167GK102402395SQ201010283228
公開日2012年4月4日 申請日期2010年9月16日 優(yōu)先權(quán)日2010年9月16日
發(fā)明者蘭雨晴, 劉明, 劉濤, 夏穎, 姚超, 張永軍, 梁昕, 王陽利 申請人:上海中標(biāo)軟件有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1