專利名稱:計(jì)算機(jī)簇中基于法定成員數(shù)關(guān)無響應(yīng)服務(wù)器的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)處理,具體涉及連網(wǎng)計(jì)算機(jī)系統(tǒng)。
背景技術(shù):
自從計(jì)算機(jī)時(shí)代開始以來,計(jì)算機(jī)系統(tǒng)就與人類努力的許多領(lǐng)域變得密不可分,包括工程設(shè)計(jì)、機(jī)器和處理控制以及信息存儲(chǔ)和存取。在計(jì)算機(jī)的早期,諸如銀行、企業(yè)和政府之類的公司會(huì)購買滿足它們需求的單臺(tái)計(jì)算機(jī),但到了20世紀(jì)50年代早期,許多公司有了多臺(tái)計(jì)算機(jī),明顯需要把數(shù)據(jù)從一臺(tái)計(jì)算機(jī)轉(zhuǎn)移到另一臺(tái)計(jì)算機(jī)。這時(shí)開始發(fā)展計(jì)算機(jī)網(wǎng)絡(luò)來允許計(jì)算機(jī)一起工作。
連網(wǎng)計(jì)算機(jī)能夠執(zhí)行單個(gè)計(jì)算機(jī)無法執(zhí)行的任務(wù)。此外,網(wǎng)絡(luò)允許低成本的個(gè)人計(jì)算機(jī)系統(tǒng)連接到更大的系統(tǒng),來執(zhí)行這些低成本系統(tǒng)無法獨(dú)自執(zhí)行的任務(wù)。當(dāng)今美國的多數(shù)公司有一個(gè)或多個(gè)計(jì)算機(jī)網(wǎng)絡(luò)。網(wǎng)絡(luò)的拓?fù)浜痛笮】赡芨鶕?jù)網(wǎng)絡(luò)所連接的計(jì)算機(jī)系統(tǒng)和系統(tǒng)管理員的設(shè)計(jì)而不同。實(shí)際上,公司擁有多個(gè)計(jì)算機(jī)網(wǎng)絡(luò)是很平常的。許多大公司具有復(fù)雜的局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)的混合,將公司中的多數(shù)計(jì)算機(jī)有效地相互連接。
馬上將變得清楚的是,使用在網(wǎng)絡(luò)上鉤掛在一起的多個(gè)計(jì)算機(jī),通過將任務(wù)的不同部分委托給網(wǎng)絡(luò)上不同的計(jì)算機(jī),可以用連網(wǎng)計(jì)算機(jī)來完成任務(wù),這樣,每個(gè)計(jì)算機(jī)可以并行處理它們各自的部分。在網(wǎng)絡(luò)上共享計(jì)算的特定配置中,已經(jīng)使用計(jì)算機(jī)“簇”(cluster)的概念來定義可以對(duì)任務(wù)的不同部分并行工作的、網(wǎng)絡(luò)上的計(jì)算機(jī)系統(tǒng)的組。
計(jì)算機(jī)系統(tǒng)的簇還被用于提供高可靠性的服務(wù)。通過允許將服務(wù)器上發(fā)生故障的服務(wù)轉(zhuǎn)移到仍然運(yùn)行著的服務(wù)器上,提供了高可靠性。這種類型的容錯(cuò)是許多公司所期望的,例如那些進(jìn)行大量電子商務(wù)(e-commerce)的公司。為了提供高可靠性的服務(wù),當(dāng)簇中的一個(gè)服務(wù)器變得不能運(yùn)行時(shí),必須有一些適當(dāng)?shù)臋C(jī)制來檢測。一種已知的用于確定簇中的所有服務(wù)器是否有效的方法是讓每個(gè)服務(wù)器周期性地向其他服務(wù)器發(fā)出消息,指示發(fā)送消息的服務(wù)器仍然運(yùn)行著并且正常運(yùn)行。這些類型的消息在本領(lǐng)域中通常稱為“心跳”(heartbeat),這是由于只要消息繼續(xù)(即,只要心臟仍然在跳動(dòng)),我們就知道服務(wù)器仍然運(yùn)行著。
在現(xiàn)有技術(shù)中,當(dāng)服務(wù)器由于缺少心跳而變得不可見時(shí),簇中被指定為管理者的服務(wù)器認(rèn)為不再具有心跳的服務(wù)器發(fā)生了故障。結(jié)果,管理者必須將發(fā)生故障的服務(wù)器上的資源提供給簇中另一服務(wù)器。然而,要注意,沒有心跳并不總是意味著服務(wù)器不運(yùn)行了。例如,服務(wù)器可能由于刪除(trashing)、交換(swapping)、網(wǎng)絡(luò)溢出等變得臨時(shí)沒有響應(yīng),而不能提供心跳。如果服務(wù)器未給出心跳但仍然運(yùn)行著,則有可能服務(wù)器可以再次變得有響應(yīng)并且開始提供心跳。如果管理者已經(jīng)認(rèn)為該服務(wù)器發(fā)生了故障,并且已經(jīng)將該服務(wù)器的服務(wù)提供在另一服務(wù)器上,那么我們現(xiàn)在將有兩個(gè)試圖提供相同服務(wù)的服務(wù)器。這產(chǎn)生了管理簇的問題。解決這個(gè)問題的一個(gè)方法是監(jiān)視服務(wù)的數(shù)據(jù)以確保兩個(gè)服務(wù)器不試圖存取相同服務(wù)的同一數(shù)據(jù)。然而,這是復(fù)雜且低效的。當(dāng)檢測到服務(wù)器故障時(shí),如果沒有用來保證計(jì)算機(jī)簇中的服務(wù)不重復(fù)的機(jī)制,計(jì)算機(jī)行業(yè)將繼續(xù)忍受管理計(jì)算機(jī)簇中發(fā)生故障的服務(wù)器的不足和低效的方法。
發(fā)明內(nèi)容
一種提供基于法定成員數(shù)(quorum)的服務(wù)器關(guān)機(jī)機(jī)制的裝置和方法,用于允許計(jì)算機(jī)簇中的管理者以保證沒有響應(yīng)的服務(wù)器不會(huì)再變得有響應(yīng)的方式關(guān)掉沒有響應(yīng)的服務(wù)器。為了簇中的管理者關(guān)掉簇中的服務(wù)器,簇必須有法定成員數(shù),意味著簇中的大多數(shù)計(jì)算機(jī)必須是有響應(yīng)的。如果簇具有法定成員數(shù),并且管理者服務(wù)器不出現(xiàn)故障,則管理者使發(fā)生故障的服務(wù)器關(guān)機(jī)。如果管理者服務(wù)器出現(xiàn)故障,則新的管理者使簇中所有沒有響應(yīng)的服務(wù)器關(guān)機(jī)。如果關(guān)機(jī)成功,則發(fā)生故障的服務(wù)器上的資源可以故障轉(zhuǎn)移到簇中沒有關(guān)機(jī)的其他服務(wù)器。如果關(guān)機(jī)不成功,則停用該簇。
如附圖所示,通過下面對(duì)本發(fā)明優(yōu)選實(shí)施例更加具體的描述,本發(fā)明的前述和其他特征和優(yōu)點(diǎn)將變得清楚。
下面將結(jié)合附圖描述本發(fā)明的優(yōu)選實(shí)施例,其中相同的附圖標(biāo)記表示相同的元素,并且圖1是根據(jù)優(yōu)選實(shí)施例的計(jì)算機(jī)裝置的方框圖;圖2是根據(jù)優(yōu)選實(shí)施例的、圖1所示的計(jì)算機(jī)系統(tǒng)的簇的方框圖;圖3是根據(jù)優(yōu)選實(shí)施例的、用于加電(power up)簇中的服務(wù)器的方法的流程圖;圖4是服務(wù)器根據(jù)對(duì)共享的磁盤驅(qū)動(dòng)器的鎖定的丟失而自己關(guān)機(jī)的現(xiàn)有技術(shù)的方法;以及圖5是根據(jù)優(yōu)選實(shí)施例的、用于在故障轉(zhuǎn)移(fail over)發(fā)生故障的服務(wù)器的資源之前關(guān)掉計(jì)算機(jī)簇中沒有響應(yīng)的服務(wù)器的方法的流程圖。
具體實(shí)施例方式
根據(jù)本發(fā)明的優(yōu)選實(shí)施例,計(jì)算機(jī)簇中的基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制保證在將資源故障轉(zhuǎn)移到一個(gè)或多個(gè)其他有響應(yīng)的服務(wù)器之前、關(guān)掉簇中沒有響應(yīng)的服務(wù)器。關(guān)機(jī)機(jī)制是基于法定成員數(shù)的,意味著只有包括簇中多數(shù)服務(wù)器的簇才能執(zhí)行關(guān)機(jī)操作。通過關(guān)掉發(fā)生故障的服務(wù)器,優(yōu)選實(shí)施例保證發(fā)生故障的系統(tǒng)不會(huì)再次變得有響應(yīng)。
現(xiàn)有技術(shù)提供了一種方法,用于簇中的服務(wù)器確定何時(shí)它變得不響應(yīng),以及知道它需要關(guān)機(jī)。圖4中的方法400示出了使用共享磁盤驅(qū)動(dòng)器的現(xiàn)有技術(shù)中的一個(gè)已知的方法中的步驟。當(dāng)簇中的不同計(jì)算機(jī)系統(tǒng)共享磁盤驅(qū)動(dòng)器時(shí),典型地有一種對(duì)磁盤驅(qū)動(dòng)器的鎖定機(jī)制,用來保證在任何給定的時(shí)間只有一個(gè)服務(wù)器可以存取磁盤驅(qū)動(dòng)器。使用某種成員資格算法而相互可見的服務(wù)器集將選出一個(gè)領(lǐng)導(dǎo)者,該領(lǐng)導(dǎo)者將獲得對(duì)磁盤驅(qū)動(dòng)器的鎖定。如果由于通信故障導(dǎo)致該服務(wù)器集分成分區(qū),則多數(shù)分區(qū)(majority partition)將獲得對(duì)共享磁盤驅(qū)動(dòng)器的鎖定(步驟410)。使用投票系統(tǒng)確定多數(shù)分區(qū)。這將導(dǎo)致原來的領(lǐng)導(dǎo)者檢測到對(duì)共享磁盤驅(qū)動(dòng)器的鎖定被盜取(步驟420為“是”),并且結(jié)果原來分區(qū)中的服務(wù)器將發(fā)生恐慌(panic)。這種恐慌可能導(dǎo)致服務(wù)器關(guān)機(jī)或者影響操作系統(tǒng)內(nèi)核。
由于不同的分區(qū)將了解到我們已經(jīng)以異步的方式分區(qū),因此對(duì)多數(shù)分區(qū)的檢查是必要的。如果沒有分區(qū)具有多數(shù),則每個(gè)分區(qū)將使具有有效資源的任何服務(wù)器恐慌。盡管圖4的方法400對(duì)于共享磁盤驅(qū)動(dòng)器的服務(wù)器多少有點(diǎn)效果,但行業(yè)內(nèi)的趨勢是擺脫在簇中的服務(wù)器之間共享資源。此外,簇中的一些服務(wù)器可能不需要共享存儲(chǔ)設(shè)備,這使得方法400不能應(yīng)用到這些服務(wù)器。結(jié)果,需要一種方法知道服務(wù)器何時(shí)發(fā)生故障,并且采取適當(dāng)?shù)拇胧﹣肀WC當(dāng)服務(wù)器沒有響應(yīng)時(shí)它是不運(yùn)行的。
現(xiàn)在參照?qǐng)D1,計(jì)算機(jī)系統(tǒng)100是可以作為根據(jù)本發(fā)明優(yōu)選實(shí)施例的簇中的成員的、計(jì)算機(jī)系統(tǒng)的一種合適實(shí)現(xiàn)。計(jì)算機(jī)系統(tǒng)100是IBM eServeriSeries計(jì)算機(jī)系統(tǒng)。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明的機(jī)制和裝置可等效地應(yīng)用到其他計(jì)算機(jī)系統(tǒng),而不管計(jì)算機(jī)系統(tǒng)是復(fù)雜的多用戶計(jì)算裝置、單個(gè)用戶工作站還是嵌入式控制系統(tǒng)。如圖1所示,計(jì)算機(jī)系統(tǒng)100包括一個(gè)或多個(gè)處理器110、主存儲(chǔ)器120、海量存儲(chǔ)接口130、顯示器接口140、網(wǎng)絡(luò)接口150和服務(wù)處理器接口180。這些系統(tǒng)組件通過利用系統(tǒng)總線160互連。海量存儲(chǔ)接口130用于連接海量存儲(chǔ)設(shè)備(例如直接存取存儲(chǔ)設(shè)備155)與計(jì)算機(jī)系統(tǒng)100。直接存取存儲(chǔ)設(shè)備155的一種特定類型是可讀和可寫的CD RW驅(qū)動(dòng)器,其可以向/從CD RW 195寫入/讀取數(shù)據(jù)。
服務(wù)處理器接口180最好連接計(jì)算機(jī)100與單獨(dú)的服務(wù)處理器182。服務(wù)處理器182最好包括服務(wù)器關(guān)機(jī)機(jī)制184,用于允許連接到服務(wù)處理器的服務(wù)器單獨(dú)地關(guān)機(jī)。服務(wù)處理器182典型地提供用于允許計(jì)算機(jī)系統(tǒng)(例如100)命令服務(wù)處理器關(guān)掉簇中另一計(jì)算機(jī)系統(tǒng)的接口。此外,當(dāng)簇中的服務(wù)器是進(jìn)程(process)而不是物理的機(jī)箱或邏輯分區(qū)時(shí),服務(wù)處理器180可以終止另一機(jī)器上的單個(gè)進(jìn)程。
根據(jù)優(yōu)選實(shí)施例的主存儲(chǔ)器120包含數(shù)據(jù)121、操作系統(tǒng)122和簇引擎123。數(shù)據(jù)121表示用作從計(jì)算機(jī)系統(tǒng)100的任何程序的輸入或輸出的任何數(shù)據(jù)。操作系統(tǒng)122是行業(yè)內(nèi)公知為OS/400的多任務(wù)操作系統(tǒng)。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,本發(fā)明的宗旨和范圍不限于任一操作系統(tǒng)。簇引擎123提供簇中的計(jì)算機(jī)之間的通信。簇引擎123包括支持簇通信的本領(lǐng)域中公知的許多特征和機(jī)制,但在圖1中未示出。簇引擎123包括可通過多條通道的心跳機(jī)制124、成員資格改變機(jī)制125和基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制126。心跳機(jī)制124和成員資格改變機(jī)制125最好是本領(lǐng)域公知的機(jī)制。心跳機(jī)制124將周期性心跳消息發(fā)送給簇中的其他服務(wù)器,并且從簇中的其他服務(wù)器接收周期性心跳消息。
可以使用各種通道(例如網(wǎng)絡(luò)、串行線或基于共享磁盤的心跳)來發(fā)送這些心跳。成員資格改變機(jī)制125監(jiān)視簇中的成員資格,并且當(dāng)簇中的一個(gè)服務(wù)器變得不響應(yīng)(即,停止發(fā)送心跳消息)時(shí)產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器?;诜ǘǔ蓡T數(shù)的服務(wù)器關(guān)機(jī)機(jī)制126允許管理者服務(wù)器關(guān)掉沒有響應(yīng)的服務(wù)器,從而保證沒有響應(yīng)的服務(wù)器將來不會(huì)有響應(yīng)。只有當(dāng)簇具有法定成員數(shù)時(shí)基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制126才能關(guān)掉服務(wù)器,這將在下面參照?qǐng)D5更詳細(xì)地討論。
在圖1的計(jì)算機(jī)系統(tǒng)100中,基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制126作為簇引擎123的一部分示出。然而,這僅僅是作為優(yōu)選實(shí)施例的范圍內(nèi)的一個(gè)可能的實(shí)現(xiàn)示出的。也可以獨(dú)立于簇引擎123實(shí)現(xiàn)基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制126。優(yōu)選實(shí)施例明示地?cái)U(kuò)展到基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制126的任何適合的位置和實(shí)現(xiàn)。
計(jì)算機(jī)系統(tǒng)100使用眾所周知的虛擬尋址機(jī)制,該機(jī)制允許計(jì)算機(jī)系統(tǒng)100的程序仿佛它們僅存取大的、單個(gè)存儲(chǔ)實(shí)體那樣操作,而不是存取多個(gè)較小的、諸如主存儲(chǔ)器120和DASD設(shè)備155之類的存儲(chǔ)實(shí)體。因此,盡管數(shù)據(jù)121、操作系統(tǒng)122和簇引擎123被示出成駐留在主存儲(chǔ)器120中,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,在主存儲(chǔ)器120中不必同時(shí)完全包含這些項(xiàng)。應(yīng)當(dāng)注意的是,這里使用術(shù)語“存儲(chǔ)器”來泛指計(jì)算機(jī)系統(tǒng)100的虛擬存儲(chǔ)器,并且可以包括連接到計(jì)算機(jī)系統(tǒng)100的其他計(jì)算機(jī)系統(tǒng)的虛擬存儲(chǔ)器。
處理器110可以由一個(gè)或多個(gè)微處理器和/或集成電路構(gòu)造而成。處理器110執(zhí)行存儲(chǔ)在主存儲(chǔ)器120中的程序指令。主存儲(chǔ)器120存儲(chǔ)處理器110可以存取的程序和數(shù)據(jù)。當(dāng)計(jì)算機(jī)系統(tǒng)100啟動(dòng)時(shí),處理器110初始地執(zhí)行構(gòu)成操作系統(tǒng)122的程序指令。操作系統(tǒng)122是用來管理計(jì)算機(jī)系統(tǒng)100的資源的復(fù)雜程序。這些資源中的一些是處理器110、主存儲(chǔ)器120、海量存儲(chǔ)接口130、顯示器接口140、網(wǎng)絡(luò)接口150、系統(tǒng)總線160和服務(wù)處理器接口180。
盡管計(jì)算機(jī)系統(tǒng)100示出成僅包含單條系統(tǒng)總線,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,可以使用具有多條總線的計(jì)算機(jī)系統(tǒng)來實(shí)踐本發(fā)明。此外,用在優(yōu)選實(shí)施例中的接口每個(gè)都包括用于從處理器110卸載(off-load)計(jì)算密集的處理的、獨(dú)立的、完全編程的微處理器。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,本發(fā)明等效地應(yīng)用于僅僅使用I/O適配器執(zhí)行類似功能的計(jì)算機(jī)系統(tǒng)。
顯示器接口140用于將一個(gè)或多個(gè)顯示器165直接連接到計(jì)算機(jī)系統(tǒng)100。這些顯示器165可以是非智能(即,啞)的終端或者完全可編程的工作站,用于允許系統(tǒng)管理員和用戶與計(jì)算機(jī)系統(tǒng)100通信。然而要注意的是,盡管提供顯示器接口140來支持與一個(gè)或多個(gè)顯示器165通信,但計(jì)算機(jī)系統(tǒng)100并不是必須需要顯示器165,因?yàn)榕c用戶和其他進(jìn)程之間所有所需的交互可以通過網(wǎng)絡(luò)接口150進(jìn)行。
網(wǎng)絡(luò)接口150用于將其他計(jì)算機(jī)系統(tǒng)和/或工作站(例如,圖1中的175)通過網(wǎng)絡(luò)170與計(jì)算機(jī)系統(tǒng)100連接。不論計(jì)算機(jī)系統(tǒng)100可以如何與其他計(jì)算機(jī)系統(tǒng)和/或工作站連接,不管網(wǎng)絡(luò)連接170是使用當(dāng)今的模擬和/或數(shù)字技術(shù)還是將來的某些網(wǎng)絡(luò)技術(shù)制成的,都能等效地應(yīng)用本發(fā)明。此外,可以使用許多不同的網(wǎng)絡(luò)協(xié)議來實(shí)現(xiàn)網(wǎng)絡(luò)。這些協(xié)議是允許計(jì)算機(jī)通過網(wǎng)絡(luò)170通信的專門的計(jì)算機(jī)程序。TCP/IP(傳輸控制協(xié)議/因特網(wǎng)協(xié)議)是適合的網(wǎng)絡(luò)協(xié)議的一個(gè)例子。
此時(shí),要注意的是,盡管已經(jīng)并且將繼續(xù)在完全功能的計(jì)算機(jī)系統(tǒng)的上下文中描述本發(fā)明,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,本發(fā)明能夠作為程序產(chǎn)品以各種形式分發(fā),并且等效地應(yīng)用本發(fā)明,而與實(shí)際用來承載分發(fā)的特定類型的信號(hào)承載介質(zhì)無關(guān)。適合的信號(hào)承載介質(zhì)的例子包括諸如軟盤和CD RW(例如,圖1的195)之類的可記錄型介質(zhì)和諸如數(shù)字和模擬通信鏈路之類的傳輸型介質(zhì)。
參照?qǐng)D2,示出了具有五個(gè)計(jì)算機(jī)系統(tǒng)(或“節(jié)點(diǎn)”)的簡單的簇200。要注意的是,簇200中的節(jié)點(diǎn)100最好是圖1所示的計(jì)算機(jī)系統(tǒng)100。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以在簇中相互連接不同類型的計(jì)算機(jī)系統(tǒng)。圖2中的節(jié)點(diǎn)之間的連接表示邏輯連接,只要簇中的節(jié)點(diǎn)可以邏輯上相互通信,物理連接可以在優(yōu)選實(shí)施例的范圍內(nèi)變化。每個(gè)節(jié)點(diǎn)100連接到服務(wù)處理器182。服務(wù)處理器182最好包括用于允許單獨(dú)地關(guān)掉每個(gè)節(jié)點(diǎn)上的每個(gè)服務(wù)器的邏輯。當(dāng)簇200中的一個(gè)節(jié)點(diǎn)變得不響應(yīng)時(shí),管理者服務(wù)器中的基于法定成員數(shù)的服務(wù)器關(guān)機(jī)系統(tǒng)126給予服務(wù)處理器182一個(gè)或多個(gè)命令來關(guān)掉簇200中的一個(gè)或多個(gè)服務(wù)器。服務(wù)處理器182響應(yīng)于來自管理者服務(wù)器的命令,關(guān)掉簇中的一個(gè)或多個(gè)服務(wù)器。要注意的是,術(shù)語“關(guān)機(jī)”表示除去服務(wù)器的電力,但也可以表示使用任何適合的機(jī)制或方法僅僅將服務(wù)器置于非運(yùn)行狀態(tài)。例如,服務(wù)處理器182可以簡單地聲明(assert)并保持硬復(fù)位信號(hào)給需要關(guān)機(jī)的節(jié)點(diǎn)。只要聲明了復(fù)位信號(hào),節(jié)點(diǎn)就不能加電。如果服務(wù)器位于這樣一個(gè)裝置的邏輯分區(qū)中,該裝置包括一個(gè)或多個(gè)仍然有響應(yīng)的其他邏輯分區(qū)的簇中的其他服務(wù)器,則不能物理地關(guān)掉該裝置,這是因?yàn)檫@也將復(fù)位有響應(yīng)的服務(wù)器。然而,服務(wù)處理器可以聲明信號(hào)或者提供命令來使需要關(guān)機(jī)的服務(wù)器關(guān)機(jī)。因此,在本說明書和權(quán)利要求書中使用的術(shù)語“關(guān)機(jī)”意味著無論如何使用當(dāng)前已知的還是將來開發(fā)的技術(shù),將服務(wù)器置于沒有響應(yīng)的狀態(tài)直到管理員確定該服務(wù)器可以加電備份(power backup)為止。此外,這些術(shù)語還可以僅僅指重啟服務(wù)器。服務(wù)處理器還可以精細(xì)地劃分成顆粒(grain),如果簇的成員是進(jìn)程而不是物理的機(jī)箱或邏輯分區(qū),則服務(wù)器的關(guān)機(jī)可以僅僅是保證服務(wù)器進(jìn)程終止的簡單步驟。
參照?qǐng)D3,方法300是根據(jù)優(yōu)選實(shí)施例的、用于初始地加電簇中的服務(wù)器的方法。首先,管理者服務(wù)器加電(步驟310)。之所以這樣進(jìn)行是因?yàn)楫?dāng)管理者服務(wù)器移動(dòng)時(shí),用于關(guān)掉機(jī)箱電源的算法可以復(fù)位正在啟動(dòng)的機(jī)箱電源。這使得簇的初始引導(dǎo)(bring up)更加平滑。然后,可以加電簇中的其余服務(wù)器(步驟320)。為了簡單起見,在方法300中,我們假設(shè)簇存在單個(gè)管理者服務(wù)器,使用仲裁方案確定在任何具體時(shí)刻由哪個(gè)管理者負(fù)責(zé)執(zhí)行管理任務(wù)。在多個(gè)管理者服務(wù)器的情況下,在步驟310中啟動(dòng)所有管理者服務(wù)器,隨后在步驟320中啟動(dòng)不是管理者的服務(wù)器。
圖5示出了根據(jù)優(yōu)選實(shí)施例的、最好由圖1中基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制126執(zhí)行的一種特定方法500。當(dāng)簇中的一個(gè)或多個(gè)服務(wù)器發(fā)生故障時(shí)方法500開始(步驟510)。如果簇沒有法定成員數(shù)(步驟520為“否”),則結(jié)束方法500。如果簇包含簇中的多數(shù)服務(wù)器,則該簇具有法定成員數(shù)。這樣,具有3個(gè)發(fā)生故障的服務(wù)器的7個(gè)服務(wù)器的簇仍然具有法定成員數(shù),但如果4個(gè)服務(wù)器發(fā)生故障,則其余的簇不再具有法定成員數(shù)。如果可能的服務(wù)器數(shù)量是偶數(shù),則一個(gè)服務(wù)器被賦予兩票并作為決勝者(tiebreaker)。本領(lǐng)域技術(shù)人員可以確定其他技術(shù)來創(chuàng)建決勝者。如果簇具有法定成員數(shù)(步驟520為“是”),則方法500確定管理者服務(wù)器是否發(fā)生故障(步驟530)。步驟530不是簡單地測試來看管理者是否曾經(jīng)發(fā)生故障,而是更具體地測試來看管理者服務(wù)器是否是在步驟510中開始方法500的故障服務(wù)器之一。如果管理者服務(wù)器在步驟510中發(fā)生故障(步驟530為“是”),則簇中所有具有關(guān)鍵資源的、不可見的服務(wù)器關(guān)機(jī)(步驟540)。如果服務(wù)器已經(jīng)停止發(fā)送心跳消息或者它已經(jīng)被從該簇中分離出去,則稱服務(wù)器是不可見(即,沒有響應(yīng))的。如果沒有管理者服務(wù)器發(fā)生故障(步驟530“否”),則方法500關(guān)掉在步驟S510中發(fā)生故障的、當(dāng)前是任何法定成員數(shù)保護(hù)的資源的潛在所有者的服務(wù)器。該檢查是重要的,因?yàn)樗试S服務(wù)器進(jìn)程干凈地關(guān)閉,而結(jié)果不會(huì)關(guān)掉它。步驟540和550之間的差別僅在于此如果管理者發(fā)生故障,我們不必知道哪個(gè)故障節(jié)點(diǎn)用作管理者,因此我們必須關(guān)掉簇中所有沒有響應(yīng)的服務(wù)器(步驟540)來避免管理者將來又運(yùn)行。如果管理者未發(fā)生故障,則只需要關(guān)掉可能潛在地?fù)碛蟹ǘǔ蓡T數(shù)保護(hù)的資源的故障服務(wù)器(步驟550)。
如果關(guān)機(jī)操作成功(步驟560為“是”),則故障服務(wù)器上的資源可以故障轉(zhuǎn)移到簇中仍有響應(yīng)的服務(wù)器(步驟570)。將資源從不運(yùn)行的服務(wù)器故障轉(zhuǎn)移到簇中運(yùn)行著的服務(wù)器的概念是本領(lǐng)域公知的,因此這里不需要進(jìn)一步詳細(xì)討論。資源故障轉(zhuǎn)移是使得這些相同的資源在簇中另一服務(wù)器上可用的處理。這正是一種使用多個(gè)服務(wù)器、當(dāng)一個(gè)服務(wù)器發(fā)生故障時(shí)相互接管來提供高可靠性服務(wù)的特定方式的本質(zhì)。如果關(guān)機(jī)操作不成功(步驟560“否”),則停用(disable)該簇(步驟580)。當(dāng)基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)送命令來關(guān)掉所選的服務(wù)器時(shí),優(yōu)選實(shí)施例依靠完成其關(guān)掉所選服務(wù)器的工作的服務(wù)處理器。如果服務(wù)處理器不能執(zhí)行其關(guān)機(jī)功能,則意味著存在服務(wù)處理器自身的或者其他需要系統(tǒng)管理員干涉的問題。這樣,當(dāng)在步驟580中停用簇時(shí),最好將問題通知給系統(tǒng)管理員,以便系統(tǒng)管理員可以采取適當(dāng)措施來糾正該問題。
理解了圖5的方法500,我們現(xiàn)在理解在圖3中為什么在加電其他服務(wù)器之前首先加電管理者服務(wù)器。讓我們假設(shè)在加電另一服務(wù)器A之后加電管理者服務(wù)器B。在這種情況下,當(dāng)A加電時(shí),它將認(rèn)為自己是管理者。當(dāng)服務(wù)器C加電時(shí),它將檢測到管理者服務(wù)器的改變,這將被解釋為前一管理者發(fā)生故障,從而將關(guān)掉所有不可見的服務(wù)器。這些不可見的服務(wù)器可能處于加電過程中,并且在它們可以完成加電序列之前,每當(dāng)管理者改變,它們都會(huì)被有效地中斷(kill)。通過要求首先加電管理者服務(wù)器(步驟310)、隨后加電其他服務(wù)器(步驟320),避免了這種不期望的行為。
本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,在本發(fā)明的范圍內(nèi)各種變型是可能的。因此,盡管參照其優(yōu)選實(shí)施例具體示出并描述了本發(fā)明,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以在不背離本發(fā)明的宗旨和范圍的前提下對(duì)其形式和細(xì)節(jié)進(jìn)行這些和其他改變。例如,盡管示出了公知的服務(wù)處理器作為一種用于關(guān)掉服務(wù)器的可能的機(jī)制,但也可以使用優(yōu)選實(shí)施例范圍內(nèi)的其他機(jī)制。例如,可以使用能夠接收命令、并且關(guān)閉到配電盤(power strip)中的特定插頭或整個(gè)配電盤的電力的可尋址配電盤。任何用于將服務(wù)器置于沒有響應(yīng)狀態(tài)、直到采取一些干涉步驟為止的機(jī)制都落入這里使用的術(shù)語“服務(wù)處理器”的范圍內(nèi)。此外,這里所述的服務(wù)器可以位于邏輯分區(qū)內(nèi),這意味著關(guān)掉邏輯分區(qū)中的服務(wù)器僅僅表示關(guān)掉邏輯分區(qū)。
權(quán)利要求
1.一種裝置,包括至少一個(gè)處理器;連接到所述至少一個(gè)處理器的存儲(chǔ)器;駐留在存儲(chǔ)器中并且由所述至少一個(gè)處理器執(zhí)行的服務(wù)器進(jìn)程;駐留在存儲(chǔ)器中并且由所述至少一個(gè)處理器執(zhí)行的簇引擎,該簇引擎處理該服務(wù)器進(jìn)程和簇中的其他服務(wù)器之間的通信;和駐留在存儲(chǔ)器中并且由所述至少一個(gè)處理器執(zhí)行的、基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制,該基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定該服務(wù)器進(jìn)程是否是包括簇中大多數(shù)服務(wù)器的服務(wù)器組中的一部分,如果是的話,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出命令來關(guān)掉簇中的至少一個(gè)其他服務(wù)器。
2.如權(quán)利要求1所述的裝置,還包括服務(wù)處理器,用于接收命令,并且作為響應(yīng),關(guān)掉至少一個(gè)其他服務(wù)器。
3.如權(quán)利要求1所述的裝置,其中,簇引擎包括心跳機(jī)制,用于將周期性消息發(fā)送給簇中的其他服務(wù)器來指示服務(wù)器進(jìn)程運(yùn)行正常。
4.如權(quán)利要求3所述的裝置,其中,心跳機(jī)制從簇中的其他服務(wù)器接收指示簇中的其他服務(wù)器運(yùn)行正常的周期性消息。
5.如權(quán)利要求4所述的裝置,其中,簇引擎包括成員資格改變機(jī)制,用于當(dāng)簇中所選的服務(wù)器由于未能發(fā)送指示所選服務(wù)器運(yùn)行正常的周期性消息而變得不響應(yīng)時(shí),產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器。
6.如權(quán)利要求1所述的裝置,其中,簇引擎包括成員資格改變機(jī)制,用于當(dāng)簇中的任何服務(wù)器變得不響應(yīng)時(shí),產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器。
7.如權(quán)利要求1所述的裝置,其中,基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定簇的管理者是否發(fā)生故障,如果是的話,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出至少一個(gè)命令來關(guān)掉簇中所有沒有響應(yīng)的服務(wù)器。
8.如權(quán)利要求1所述的裝置,其中,當(dāng)接收到服務(wù)器故障的指示時(shí),基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定簇的管理者是否發(fā)生故障,如果不是的話,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出至少一個(gè)命令來關(guān)掉與接收到的服務(wù)器故障的指示對(duì)應(yīng)的服務(wù)器。
9.如權(quán)利要求1所述的裝置,其中,服務(wù)器進(jìn)程駐留在裝置上定義的邏輯分區(qū)中。
10.如權(quán)利要求1所述的裝置,其中,基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)是否成功,如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)成功,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制允許將關(guān)機(jī)的所述至少一個(gè)其他服務(wù)器上的任何資源故障轉(zhuǎn)移到至少一個(gè)有響應(yīng)的服務(wù)器,如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)不成功,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制停用該簇。
11.一種連網(wǎng)計(jì)算機(jī)系統(tǒng),包括通過網(wǎng)絡(luò)連接在一起成為簇的多個(gè)服務(wù)器,每個(gè)服務(wù)器包括簇引擎,用于處理簇中的服務(wù)器之間的通信;和基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制,用于確定服務(wù)器是否是包括簇中大多數(shù)服務(wù)器的服務(wù)器組的一部分,如果是的話,基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出命令來關(guān)掉簇中的至少一個(gè)服務(wù)器。
12.如權(quán)利要求11所述的連網(wǎng)計(jì)算機(jī)系統(tǒng),還包括連接到簇中的多個(gè)服務(wù)器中的每個(gè)的服務(wù)處理器,該服務(wù)處理器接收命令,并且作為響應(yīng),關(guān)掉簇中的至少一個(gè)服務(wù)器。
13.如權(quán)利要求11所述的連網(wǎng)計(jì)算機(jī)系統(tǒng),其中,簇引擎包括心跳機(jī)制,用于將周期性消息發(fā)送給簇中的其他服務(wù)器來指示服務(wù)器進(jìn)程運(yùn)行正常。
14.如權(quán)利要求13所述的連網(wǎng)計(jì)算機(jī)系統(tǒng),其中,心跳機(jī)制從簇中的其他服務(wù)器接收指示簇中的其他服務(wù)器運(yùn)行正常的周期性消息。
15.如權(quán)利要求14所述的連網(wǎng)計(jì)算機(jī)系統(tǒng),其中,簇引擎包括成員資格改變機(jī)制,用于當(dāng)簇中所選的服務(wù)器由于未能發(fā)送指示所選服務(wù)器運(yùn)行正常的周期性消息而變得不響應(yīng)時(shí),產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器。
16.如權(quán)利要求11所述的連網(wǎng)計(jì)算機(jī)系統(tǒng),其中,簇引擎包括成員資格改變機(jī)制,用于當(dāng)簇中的任何服務(wù)器變得不響應(yīng)時(shí),產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器。
17.如權(quán)利要求11所述的連網(wǎng)計(jì)算機(jī)系統(tǒng),其中,基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定簇的管理者是否發(fā)生故障,如果是的話,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出至少一個(gè)命令來關(guān)掉簇中所有沒有響應(yīng)的服務(wù)器。
18.如權(quán)利要求11所述的連網(wǎng)計(jì)算機(jī)系統(tǒng),其中,當(dāng)接收到服務(wù)器故障的指示時(shí),基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定簇的管理者是否發(fā)生故障,如果不是的話,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出至少一個(gè)命令來關(guān)掉與接收到的服務(wù)器故障的指示對(duì)應(yīng)的服務(wù)器。
19.如權(quán)利要求11所述的連網(wǎng)計(jì)算機(jī)系統(tǒng),其中,簇中的至少一個(gè)服務(wù)器位于邏輯分區(qū)中。
20.如權(quán)利要求11所述的連網(wǎng)計(jì)算機(jī)系統(tǒng),其中,基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)是否成功,如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)成功,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制允許將關(guān)機(jī)的所述至少一個(gè)其他服務(wù)器上的任何資源故障轉(zhuǎn)移到至少一個(gè)有響應(yīng)的服務(wù)器,如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)不成功,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制停用該簇。
21.一種裝置,包括(A)至少一個(gè)處理器;(B)連接到所述至少一個(gè)處理器的存儲(chǔ)器;(C)駐留在存儲(chǔ)器中并且由所述至少一個(gè)處理器執(zhí)行的服務(wù)器進(jìn)程;(D)駐留在存儲(chǔ)器中并且由所述至少一個(gè)處理器執(zhí)行的簇引擎,該簇引擎處理該服務(wù)器進(jìn)程和簇中的其他服務(wù)器之間的通信;該簇引擎包括(D1)心跳機(jī)制,用于將周期性消息發(fā)送給簇中的其他服務(wù)器來指示服務(wù)器進(jìn)程運(yùn)行正常,以及從簇中的其他服務(wù)器接收指示簇中的其他服務(wù)器運(yùn)行正常的周期性消息;(D2)成員資格改變機(jī)制,用于當(dāng)簇中的任何服務(wù)器變得不響應(yīng)時(shí),產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器;(E)駐留在存儲(chǔ)器中并且由所述至少一個(gè)處理器執(zhí)行的、基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制,該基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定該服務(wù)器進(jìn)程是否是包括簇中大多數(shù)服務(wù)器的服務(wù)器組中的一部分,如果是的話,則當(dāng)接收到服務(wù)器故障的指示時(shí),基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定簇的管理者是否發(fā)生故障,如果簇的管理者發(fā)生故障,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出至少一個(gè)命令來關(guān)掉簇中所有沒有響應(yīng)的服務(wù)器,如果簇的管理者沒有發(fā)生故障,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出至少一個(gè)命令來關(guān)掉與接收到的服務(wù)器故障的指示對(duì)應(yīng)的服務(wù)器。
22.如權(quán)利要求21所述的裝置,還包括服務(wù)處理器,用于接收命令,并且作為響應(yīng),關(guān)掉至少一個(gè)其他服務(wù)器。
23.如權(quán)利要求21所述的裝置,其中,服務(wù)器進(jìn)程駐留在在該裝置上定義的邏輯分區(qū)中。
24.如權(quán)利要求21所述的裝置,其中,基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)是否成功,如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)成功,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制允許將關(guān)機(jī)的所述至少一個(gè)其他服務(wù)器上的任何資源故障轉(zhuǎn)移到至少一個(gè)有響應(yīng)的服務(wù)器,如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)不成功,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制停用該簇。
25.一種用于處理簇中沒有響應(yīng)的服務(wù)器的計(jì)算機(jī)實(shí)現(xiàn)方法,該方法包括步驟確定簇中的服務(wù)器何時(shí)變得不響應(yīng);確定簇中的大多數(shù)服務(wù)器是否有響應(yīng);以及如果簇中的大多數(shù)服務(wù)器有響應(yīng),則發(fā)出命令來關(guān)掉簇中的至少一個(gè)服務(wù)器。
26.如權(quán)利要求25所述的方法,還包括步驟簇中的每個(gè)服務(wù)器將周期性消息發(fā)送給簇中的其他服務(wù)器來指示發(fā)送該周期性消息的服務(wù)器運(yùn)行正常。
27.如權(quán)利要求25所述的方法,還包括步驟每個(gè)服務(wù)器從簇中的其他服務(wù)器接收指示簇中的其他服務(wù)器運(yùn)行正常的周期性消息。
28.如權(quán)利要求27所述的方法,還包括步驟當(dāng)簇中所選的服務(wù)器由于未能發(fā)送指示所選服務(wù)器運(yùn)行正常的周期性消息而變得不響應(yīng)時(shí),產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器。
29.如權(quán)利要求25所述的方法,還包括步驟當(dāng)簇中的任何服務(wù)器變得不響應(yīng)時(shí),產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器。
30.如權(quán)利要求25所述的方法,還包括步驟確定簇的管理者是否發(fā)生故障,如果是的話,則發(fā)出至少一個(gè)命令來關(guān)掉簇中所有沒有響應(yīng)的服務(wù)器。
31.如權(quán)利要求25所述的方法,還包括步驟當(dāng)接收到服務(wù)器故障的指示時(shí)確定簇的管理者是否發(fā)生故障,如果不是的話,則發(fā)出至少一個(gè)命令來關(guān)掉與接收到的服務(wù)器故障的指示對(duì)應(yīng)的服務(wù)器。
32.如權(quán)利要求25所述的方法,還包括步驟確定所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)是否成功;如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)成功,則允許將關(guān)機(jī)的所述至少一個(gè)其他服務(wù)器上的任何資源故障轉(zhuǎn)移到至少一個(gè)有響應(yīng)的服務(wù)器;以及如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)不成功,則停用該簇。
33.一種用于處理簇中沒有響應(yīng)的服務(wù)器的計(jì)算機(jī)實(shí)現(xiàn)方法,該方法包括步驟簇中的每個(gè)服務(wù)器將周期性消息發(fā)送給簇中的其他服務(wù)器來指示發(fā)送該周期性消息的服務(wù)器運(yùn)行正常;簇中的每個(gè)服務(wù)器從簇中的其他服務(wù)器接收指示簇中的其他服務(wù)器運(yùn)行正常的周期性消息;當(dāng)簇中任何服務(wù)器變得不響應(yīng)時(shí),產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器;確定簇中的大多數(shù)服務(wù)器是否有響應(yīng);接收服務(wù)器故障的指示;如果簇中的大多數(shù)服務(wù)器有響應(yīng),則執(zhí)行步驟確定服務(wù)器故障的指示是否指示簇的管理者發(fā)生故障;如果簇的管理者發(fā)生故障,則發(fā)出至少一個(gè)命令來關(guān)掉簇中所有沒有響應(yīng)的服務(wù)器;和如果簇的管理者未發(fā)生故障,則發(fā)出至少一個(gè)命令來關(guān)掉與接收到的服務(wù)器故障的指示對(duì)應(yīng)的服務(wù)器。
34.如權(quán)利要求33所述的方法,還包括步驟確定所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)是否成功;如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)成功,則允許將關(guān)機(jī)的所述至少一個(gè)其他服務(wù)器上的任何資源故障轉(zhuǎn)移到至少一個(gè)有響應(yīng)的服務(wù)器;以及如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)不成功,則停用該簇。
35.一種程序產(chǎn)品,包括基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制,該基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定該服務(wù)器進(jìn)程是否是包括簇中大多數(shù)服務(wù)器的服務(wù)器組中的一部分,如果是的話,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出命令來關(guān)掉簇中的至少一個(gè)其他服務(wù)器;和計(jì)算機(jī)可讀信號(hào)承載介質(zhì),用于承載該基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制。
36.如權(quán)利要求35所述的程序產(chǎn)品,其中,信號(hào)承載介質(zhì)包括可記錄介質(zhì)。
37.如權(quán)利要求35所述的程序產(chǎn)品,其中,信號(hào)承載介質(zhì)包括傳輸介質(zhì)。
38.如權(quán)利要求35所述的程序產(chǎn)品,還包括心跳機(jī)制,用于將周期性消息發(fā)送給簇中的其他服務(wù)器來指示服務(wù)器進(jìn)程運(yùn)行正常。
39.如權(quán)利要求38所述的程序產(chǎn)品,其中,心跳機(jī)制從簇中的其他服務(wù)器接收指示簇中的其他服務(wù)器運(yùn)行正常的周期性消息。
40.如權(quán)利要求39所述的程序產(chǎn)品,還包括成員資格改變機(jī)制,用于當(dāng)簇中所選的服務(wù)器由于未能發(fā)送指示所選服務(wù)器運(yùn)行正常的周期性消息而變得不響應(yīng)時(shí),產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器。
41.如權(quán)利要求35所述的程序產(chǎn)品,還包括成員資格改變機(jī)制,用于當(dāng)簇中的任何服務(wù)器變得不響應(yīng)時(shí),產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器。
42.如權(quán)利要求35所述的程序產(chǎn)品,其中,基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定簇的管理者是否發(fā)生故障,如果是的話,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出至少一個(gè)命令來關(guān)掉簇中所有沒有響應(yīng)的服務(wù)器。
43.如權(quán)利要求35所述的程序產(chǎn)品,其中,當(dāng)接收到服務(wù)器故障的指示時(shí),基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定簇的管理者是否發(fā)生故障,如果不是的話,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出至少一個(gè)命令來關(guān)掉與接收到的服務(wù)器故障的指示對(duì)應(yīng)的服務(wù)器。
44.如權(quán)利要求35所述的程序產(chǎn)品,其中,簇中的至少一個(gè)服務(wù)器位于邏輯分區(qū)中。
45.如權(quán)利要求35所述的程序產(chǎn)品,其中,基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)是否成功,如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)成功,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制允許將關(guān)機(jī)的所述至少一個(gè)其他服務(wù)器上的任何資源故障轉(zhuǎn)移到至少一個(gè)有響應(yīng)的服務(wù)器,如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)不成功,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制停用該簇。
46.一種程序產(chǎn)品,包括(A)駐留在存儲(chǔ)器中并且由至少一個(gè)處理器執(zhí)行的簇引擎,該簇引擎處理該服務(wù)器進(jìn)程和簇中的其他服務(wù)器之間的通信,該簇引擎包括(A1)心跳機(jī)制,用于將周期性消息發(fā)送給簇中的其他服務(wù)器來指示服務(wù)器進(jìn)程運(yùn)行正常,以及從簇中的其他服務(wù)器接收指示簇中的其他服務(wù)器運(yùn)行正常的周期性消息;(A2)成員資格改變機(jī)制,用于當(dāng)簇中的任何服務(wù)器變得不響應(yīng)時(shí),產(chǎn)生成員資格改變消息給簇中的所有服務(wù)器;(A3)基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制,該基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定該服務(wù)器進(jìn)程是否是包括簇中大多數(shù)服務(wù)器的服務(wù)器組中的一部分,如果是的話,則當(dāng)接收到服務(wù)器故障的指示時(shí),基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定簇的管理者是否發(fā)生故障,如果簇的管理者發(fā)生故障,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出至少一個(gè)命令來關(guān)掉簇中所有沒有響應(yīng)的服務(wù)器,如果簇的管理者沒有發(fā)生故障,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制發(fā)出至少一個(gè)命令來關(guān)掉與接收到的服務(wù)器故障的指示對(duì)應(yīng)的服務(wù)器;和(B)用于承載該簇引擎的計(jì)算機(jī)可讀信號(hào)承載介質(zhì)。
47.如權(quán)利要求46所述的程序產(chǎn)品,其中,信號(hào)承載介質(zhì)包括可記錄介質(zhì)。
48.如權(quán)利要求46所述的程序產(chǎn)品,其中,信號(hào)承載介質(zhì)包括傳輸介質(zhì)。
49.如權(quán)利要求46所述的程序產(chǎn)品,其中,簇中的至少一個(gè)服務(wù)器位于邏輯分區(qū)中。
50.如權(quán)利要求46所述的程序產(chǎn)品,其中,基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制確定所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)是否成功,如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)成功,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制允許將關(guān)機(jī)的所述至少一個(gè)其他服務(wù)器上的任何資源故障轉(zhuǎn)移到至少一個(gè)有響應(yīng)的服務(wù)器,如果所述至少一個(gè)其他服務(wù)器的關(guān)機(jī)不成功,則基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制停用該簇。
全文摘要
提供基于法定成員數(shù)的服務(wù)器關(guān)機(jī)機(jī)制的裝置和方法,用于允許計(jì)算機(jī)簇中的管理者以保證沒有響應(yīng)的服務(wù)器不會(huì)再變得有響應(yīng)的方式關(guān)掉沒有響應(yīng)的服務(wù)器。為了簇中的管理者關(guān)掉簇中的服務(wù)器,簇必須有法定成員數(shù),這意味著簇中的大多數(shù)計(jì)算機(jī)必須是有響應(yīng)的。如果簇具有法定成員數(shù),并且如果管理者服務(wù)器不出現(xiàn)故障,則管理者使發(fā)生故障的服務(wù)器關(guān)機(jī)。如果管理者服務(wù)器出現(xiàn)故障,則新的管理者使簇中所有沒有響應(yīng)的服務(wù)器關(guān)機(jī)。如果關(guān)機(jī)成功,則發(fā)生故障的服務(wù)器上的資源可以故障轉(zhuǎn)移到簇中沒有關(guān)機(jī)的其他服務(wù)器。如果關(guān)機(jī)不成功,則停用該簇。
文檔編號(hào)G06F9/46GK1770707SQ20051012013
公開日2006年5月10日 申請(qǐng)日期2005年11月4日 優(yōu)先權(quán)日2004年11月4日
發(fā)明者克里斯托弗·H·瓊斯, 威廉姆·T·紐波特, 格雷厄姆·D·沃利斯 申請(qǐng)人:國際商業(yè)機(jī)器公司