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