專利名稱:用于計算機簇節(jié)點的故障切換范圍的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及簇計算節(jié)點,尤其涉及應(yīng)用程序或簇主機節(jié)點的故障處理。
背景技術(shù):
簇是一組互連的計算機系統(tǒng)服務(wù)器,它們排列為節(jié)點,提供對資源,諸如服務(wù)器應(yīng)用程序,的訪問。使用服務(wù)器簇的一個理由是多連接的計算機系統(tǒng)通過分散負載的方式,極大地提高了計算性能和穩(wěn)定性,并且擁有了更多的處理能力、速度和其他資源。
考慮到簇的可用性和穩(wěn)定性,如果一個節(jié)點或一個主機應(yīng)用程序故障,它的資源將故障切換(failover)到其他的工作節(jié)點,通常,故障切換(failover)表示其他節(jié)點提供主機應(yīng)用程序,它相應(yīng)于那些先前由目前故障的節(jié)點提供的主機應(yīng)用程序。故障的類型包括計算機系統(tǒng)崩潰、節(jié)點之間通信連接的中斷、為了維護或諸如此類的有目的關(guān)機、諸如意外地拔去了電源或通信電纜、以及類似情況的疏忽關(guān)機。
為了在某些受控制的方式下處理故障以使得故障的應(yīng)用程序能在別的節(jié)點適當?shù)刂匦聠?,采取了一個嘗試,基于一個優(yōu)選節(jié)點列表使多個資源集合(其中每個都涉及一個資源集合,資源集合是一個包括一個或多個諸如應(yīng)用程序的資源以及諸如網(wǎng)絡(luò)名稱、IP地址和諸如此類的相關(guān)資源的集合,它被管理為與故障切換有關(guān)的單一單元)故障切換到優(yōu)選節(jié)點。然而,這可能會淹沒某些特定節(jié)點,因為許多資源組關(guān)于優(yōu)選節(jié)點有著相同默認配置。為了避免這個問題,現(xiàn)今的簇技術(shù)提供了當超過一個工作節(jié)點可用時,如果沒有為一個資源組(至少是能夠包容該組的節(jié)點)提供優(yōu)選所有者列表,則使用一個基于隨機數(shù)的算法來選擇用于資源組的目標節(jié)點,這樣沒有一個節(jié)點會因為承擔過多的故障節(jié)點資源組而被淹沒。
考慮到計算能力/速度,一個簇內(nèi)物理上接近的計算系統(tǒng)通常由極高帶寬的網(wǎng)絡(luò)連接鏈接在一起。然而,不是所有簇節(jié)點都是物理上鄰近的,如企業(yè)(尤其是大型企業(yè))經(jīng)常將這樣鄰近鏈接的簇節(jié)點中的兩個或多個子網(wǎng)彼此分開一個相對大的地理距離。這樣做的一個目的是災(zāi)害防護,使得仍然保留一定數(shù)量的節(jié)點運行在颶風、火災(zāi)、地震或諸如此類的可導致互連節(jié)點中全部物理鄰近子網(wǎng)集體故障的事件中,不論故障的原因是節(jié)點的實際故障還是節(jié)點子網(wǎng)和其他遠端節(jié)點間的傳輸介質(zhì)中斷。
通過地理分割的災(zāi)害防護的一個問題在于,鄰近互連節(jié)點的一個子網(wǎng)與其他子網(wǎng)中的子網(wǎng)間的通信帶寬遠遠低于子網(wǎng)內(nèi)的通信帶寬。結(jié)果是,一些簇管理員不是必然希望資源組自動地從一個鄰近互連子網(wǎng)故障切換到另一個(除非整個子網(wǎng)故障),因為在低帶寬下,從即使一個節(jié)點的資源故障切換的時間和開銷也是巨大的。相反,簇管理員通常更寧愿讓資源組僅僅故障切換到鄰近連接的節(jié)點。當整個子網(wǎng)故障時,一些管理員更寧愿評估原因并如果可能則修復問題(如,一個拔掉的電纜),且僅在必要時手動切換資源組,這可能需要重新配置其他子網(wǎng)以接受故障切換的資源組。其他管理員仍然希望如果整個子網(wǎng)故障時,故障切換是自動的,至少是部分自動的。進一步有,當處理合并簇,即包容多個應(yīng)用程序的簇群時,許多管理員喜歡約束包容含有多個組件的應(yīng)用程序的節(jié)點組。
然而,使用上面所述的迄今為止的隨機故障切換機制,以及其他的目前機制,管理員不能配置它們的簇以他們期望的方式進行故障切換。實際上,使用隨機機制,在資源組故障切換時,對物理鄰近或物理遠離節(jié)點是沒有區(qū)分的?,F(xiàn)在需要的是一個靈活的方法,使簇管理員可管理一個簇在故障時能采取的自動動作。
發(fā)明內(nèi)容
簡要地,本發(fā)明針對定義多個故障切換范圍的系統(tǒng)和方法,其中每個范圍包括簇中已識別節(jié)點的一個子集,且通過該系統(tǒng)和方法,資源組可關(guān)聯(lián)于一個帶有一個或多個故障切換范圍的順序列表。當一個故障切換發(fā)生時,每個資源組自動切換到一個在其故障切換范圍中列出的工作節(jié)點?;陧樞颍钡匠晒橹?,在嘗試切換到下一個故障切換范圍中任何節(jié)點之前,將首先嘗試故障切換到當前故障切換范圍中的每個節(jié)點。
如果第一故障切換范圍中沒有節(jié)點可能接受該切換,(如,沒有一個在工作),則資源組可被設(shè)置為自動切換到下個故障切換范圍中的一個節(jié)點,并且這樣下去直到?jīng)]有故障。為了賦予管理員阻止這樣自動故障切換到另一個故障切換范圍中節(jié)點的能力,可設(shè)置一個防止自動切換到隨后列出的故障切換范圍的手動設(shè)置(如,一個手動/自動的標識)??赡茉诿繉﹃P(guān)聯(lián)于一個資源組的故障切換范圍中都存在這樣一個標識, (如,用于三個故障切換范圍的兩個標識,一個創(chuàng)建了從第一到第二故障切換范圍的手動或自動轉(zhuǎn)換,一個創(chuàng)建了從第二到第三故障切換范圍的手動或自動轉(zhuǎn)換),或只在整個資源組中存在一個這樣的標識。該標識默認為手動,也可經(jīng)由管理員單獨設(shè)置或者為整個簇的資源組總體設(shè)置。
可為根據(jù)地理基礎(chǔ)而分離的節(jié)點的每個子集(稱之為站點)創(chuàng)建一個故障切換范圍。每個站點通常包括組成簇的子集的鄰近(相對高的帶寬)互連節(jié)點。然而,故障切換范圍不需要精確對應(yīng)于一個站點,并且這樣故障切換范圍可跨越超過一個站點。
或者,故障切換范圍可被定義為只包括一個站點的一些子集,如,小到含有兩個或多個節(jié)點的站點中的一個節(jié)點。這允許管理員來約束可包容任何資源組(諸如一個包含多種組件的應(yīng)用程序)的節(jié)點集合。
當一個節(jié)點被添加到一個站點中時,作為運行一個要求該節(jié)點添加到該簇的設(shè)置應(yīng)用程序的一部分,自動識別該新的節(jié)點。如果該簇軟件是如此配置的,一個基于距離檢測的自動進程會將該節(jié)點添加到一個對應(yīng)于該站點的故障切換范圍中。通過這種方式,管理員不需要為一個新的節(jié)點更新故障切換范圍。然而,無論是自動進程將故障切換范圍關(guān)聯(lián)到新的節(jié)點,還是管理員手動地將新的節(jié)點添加到一個故障切換范圍(或不止一個),關(guān)聯(lián)于該故障切換范圍的資源組(可為一個相對大的數(shù)量)不需要被配置為能夠運行在新的節(jié)點上。
根據(jù)下文的詳細描述并結(jié)合附圖可顯而易見地得到其他優(yōu)點。
圖1是框圖,通常表示一個可按照本發(fā)明的計算機系統(tǒng)。
圖2是框圖,通常表示一個按照本發(fā)明多個方面,包含兩個地理分離的站點并含有已定義的故障切換范圍的示例簇。
圖3是圖2中故障切換范圍的表示圖,按照了本發(fā)明多個方面包含列出了一個或多個節(jié)點的故障切換范圍,并列出了資源組和它們與故障切換范圍的結(jié)合。
圖4是框圖,通常表示按照本發(fā)明多個方面的多個示例簇節(jié)點,其中每個都含有用于以受控制方式在故障切換范圍中處理故障切換的故障切換管理器。
圖5是框圖,通常表示一個按照本發(fā)明多個方面的示例簇,它包含三個地理分離站點并含有已定義的故障切換范圍,該故障切換范圍包括一個含有一個站點的節(jié)點子集的故障切換范圍。
圖6是圖5中按照本發(fā)明多個方面的故障切換范圍以及與該故障切換范圍相關(guān)的資源組的表示圖。
具體實施例方式
示例性操作環(huán)境圖1示出了一則可實現(xiàn)本發(fā)明的合適的計算系統(tǒng)環(huán)境100的示例。計算系統(tǒng)環(huán)境100只是一則合適的計算環(huán)境的示例且不旨在提出任何的對本發(fā)明使用范圍或功能的限制。計算環(huán)境100也不能被認為是對示例性操作環(huán)境100中示出的任一組件或組合的有任何依賴或要求。
本發(fā)明可操作于多種其他通用功能或特定功能計算系統(tǒng)環(huán)境或配置。適合本發(fā)明使用的共知計算系統(tǒng)、環(huán)境、和/或配置的示例包括,但不限于,個人計算機、服務(wù)器計算機、手持或膝上設(shè)備、書寫板設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機頂盒、可編程消費品電器、網(wǎng)絡(luò)PC、小型機、大型機、包括任何上述系統(tǒng)或設(shè)備的分布式計算環(huán)境、以及諸如此類設(shè)備。
本發(fā)明可被描述在計算機可執(zhí)行指令(諸如由一個計算機或其他設(shè)備執(zhí)行的程序模塊)的通常環(huán)境中。通常有,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、應(yīng)用程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)、以及諸如此類。本發(fā)明還可被實現(xiàn)于分布式計算環(huán)境,后者中的任務(wù)被由通信網(wǎng)絡(luò)連接在一起的遠程處理設(shè)備所執(zhí)行。在一個分布式計算環(huán)境中,程序模塊可位于本地和/或遠程計算機存儲介質(zhì),包括內(nèi)存存儲器設(shè)備。
參照圖1,一個用于實現(xiàn)本發(fā)明的示例性系統(tǒng)包括一個如計算機110形式的通用功能計算設(shè)備。計算機110的組件可包括,但不限于,一處理單元120、一系統(tǒng)存儲器130、以及將包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件連接到處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可為多種類型的總線結(jié)構(gòu)的任何一種,包括存儲器總線或存儲器控制器、外圍設(shè)備總線、以及使用任何的多種總線體系結(jié)構(gòu)的任何一種局部總線。作為示例,而非限制,這些體系結(jié)構(gòu)包括工業(yè)標準體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強型ISA(EISA)總線、視頻電子標準協(xié)會(VESA)局部總線以及外圍設(shè)備組件互連(PCI)總線(也被稱為Mezzanine總線)。
計算機系統(tǒng)110典型地包括多種計算機可讀介質(zhì)。計算機可讀介質(zhì)可為計算機110可訪問的任何可用介質(zhì),并包括易失和非易失介質(zhì)、可移動和不可移動介質(zhì)。通過示例,而非限制,計算機可讀介質(zhì)可包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括通過任何方法或技術(shù)實現(xiàn)的,用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)的信息的,易失性和非易失性、可移動和不可移動介質(zhì)。計算機存儲介質(zhì)包括,但不限于,RAM、ROM、EEPROM、閃速存儲器或其他存儲器技術(shù)、CD-ROM、數(shù)字通用盤(DVD)或其他光學盤存儲器、磁帶盒、磁帶、磁盤存儲器或其他磁存儲器設(shè)備、或任何其他可被用來存儲所需信息并能夠由計算機110訪問的介質(zhì)。通信介質(zhì)典型地以一個已調(diào)制的數(shù)據(jù)信號,諸如載波或其他傳輸機制的形式來體現(xiàn)計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他的數(shù)據(jù),并包括任何信息傳遞介質(zhì)。術(shù)語“已調(diào)制的數(shù)據(jù)信號”表示為了在信號內(nèi)編碼信息而設(shè)置或改變其一個或多個特征的信號。通過示例,而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直線連接、以及無線介質(zhì)諸如聲學的、FR、紅外以及其他無線介質(zhì)。任何上述的組合也被包括在計算機可讀介質(zhì)的范圍內(nèi)。
系統(tǒng)存儲器130包括易失和/或非易失存儲器形式的計算機存儲器介質(zhì),諸如只讀存儲器(ROM)131以及隨機訪問存儲器(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)一般被存儲在ROM 131中,它包括諸如在起動過程中有助于計算機110內(nèi)基本元件間傳遞信息的基本例程。RAM 132通常包括可由處理單元120立即訪問和/或當前進行操作的數(shù)據(jù)和/或程序模塊。通過示例,而非限制,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其他程序模塊136、以及程序數(shù)據(jù)137。
計算機110也可包括其他可移動/不可移動的易失/非易失計算機存儲介質(zhì)。僅僅作為示例,圖1示出了從不可移動非易失磁性介質(zhì)讀取或?qū)懭氲挠脖P驅(qū)動器151、從可移動非易失磁盤152讀取或?qū)懭氲拇疟P驅(qū)動器151、以及一個從諸如CD-ROM或其他光學介質(zhì)的可移動非易失光盤156讀取或?qū)懭氲墓獗P驅(qū)動器155。其他可被用于示例性操作環(huán)境的可移動/不可移動,易失/非易失計算機存儲介質(zhì)包括,但不限于,磁帶盒、閃速存儲卡、數(shù)字通用光盤、數(shù)字錄影帶、固態(tài)RAM、固態(tài)ROM、等等。硬盤驅(qū)動器141典型地通過諸如接口140的不可移動存儲器接口連接到系統(tǒng)總線121,磁盤驅(qū)動器151以及光盤驅(qū)動器155通常通過一個諸如接口150的可移動存儲器接口連接到系統(tǒng)總線121。
以上討論的且示于圖1中的驅(qū)動器和它們相關(guān)的計算機存儲介質(zhì)為來自計算機110的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊以及其他數(shù)據(jù)提供了存儲。在圖1中,例如,硬盤驅(qū)動器141被示為存儲操作系統(tǒng)144、應(yīng)用程序145、其他程序模塊146、以及程序數(shù)據(jù)147。注意這些組件可與操作系統(tǒng)134、應(yīng)用程序135、其他程序模塊136、以及程序數(shù)據(jù)137相同或相異。操作系統(tǒng)144、應(yīng)用程序145、其他程序模塊146以及程序數(shù)據(jù)147這里被給予了不同的標號用于表示在最小限度下,它們是不同的拷貝。用戶可以經(jīng)由一輸入設(shè)備諸如書寫板、或電子數(shù)字轉(zhuǎn)換器164、麥克風163、鍵盤162、以及通常為鼠標、軌跡球或觸摸板的定位設(shè)備181,輸入命令和信息進入到計算機110中。沒有在圖1中示出的其他輸入設(shè)備可包括操縱桿、游戲墊、衛(wèi)星天線、掃描儀等等。這些及其他輸入設(shè)備經(jīng)常經(jīng)由連接到系統(tǒng)總線用戶輸入接口160連接到處理單元120,但也可通過其他接口和總線結(jié)構(gòu)進行連接,諸如并行端口、游戲端口或通用串行總線(USB)。一監(jiān)視器191或其他類型的顯示設(shè)備也經(jīng)由諸如視頻接口190的接口被連接到系統(tǒng)總線121。監(jiān)視器191也可被集成在觸摸屏面板或類似中。注意監(jiān)視器和/或觸摸屏面板可被物理連接到一個包括計算設(shè)備110的機架中,諸如在寫字板型個人計算機的情況中。此外,諸如計算設(shè)備110的計算機也可包括其他外圍輸出設(shè)備,如揚聲器195和打印機198,它們可通過輸出外圍接口194連接。
計算機110可操作在一個使用到一個或多個諸如遠程計算機180的遠程計算機的邏輯連接的網(wǎng)絡(luò)環(huán)境下。遠程計算機180可為個人計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他公共網(wǎng)絡(luò)節(jié)點,并典型地包括許多或所有上述涉及計算機110的元件,雖然在圖1中只示出了一個存儲器存儲設(shè)備181。圖1描述的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也包括其他網(wǎng)絡(luò)。這些網(wǎng)絡(luò)化環(huán)境在辦公室、企業(yè)級計算機網(wǎng)絡(luò)、內(nèi)部網(wǎng)和因特網(wǎng)上是普通的。
當用于LAN網(wǎng)絡(luò)環(huán)境時,計算機110通過網(wǎng)絡(luò)接口或適配器170連接到LAN 171上。當用于WAN網(wǎng)絡(luò)環(huán)境時,計算機110典型地包括調(diào)制解調(diào)器172或其他裝置,用于在諸如因特網(wǎng)的WAN 173上建立通信。調(diào)制解調(diào)器172可以是內(nèi)置的或外置的,它通過用戶輸入接口160或其他合適的機制連接到系統(tǒng)總線121上。在網(wǎng)絡(luò)環(huán)境中,與計算機110相關(guān)描述的程序模塊或它的部分可存儲在遠程存儲器設(shè)備中。通過示例,而非限制,圖1示出了遠程應(yīng)用程序185駐留在存儲器設(shè)備181上??梢员焕斫獾氖牵揪W(wǎng)絡(luò)連接是示例性的,且可以使用在計算機之間建立通信連接的其他裝置。
故障切換范圍本發(fā)明通常針對一個通過管理員預(yù)先確定的方式處理資源組故障切換(如,由于計算機節(jié)點故障)的系統(tǒng)和方法??梢员焕斫獾氖牵瑢崿F(xiàn)本發(fā)明的多種方式都是可行的,并且在此只描述了一些可選的方法。例如,下述本發(fā)明涉及一個簇節(jié)點,它在基于所維持的簡單列表形式的故障切換范圍信息判斷哪個資源組被故障切換到哪個節(jié)點時充當領(lǐng)導者,然而其他機制也是可用的。例如,讓節(jié)點對資源組投標,其中故障切換范圍數(shù)據(jù)只是一個要素,這也是一個可用的可選方案。如此,本發(fā)明不限于任何在此使用的故障切換范圍的特定示例,而是一般可向計算提供利益和優(yōu)點的能以多種方式使用的故障切換范圍概念。
轉(zhuǎn)到附圖2,示出了簇202中節(jié)點N1到N8的安排,簇202分開為兩個地理上的站點,諸如一個“西”站點204和一個“東”站點206。通常的規(guī)則是相比不同站點的節(jié)點間的連接(示為節(jié)點N4和N5之間的點劃線),在一個站點內(nèi)節(jié)點間的通信介質(zhì)是非常高帶寬的(示為連接節(jié)點N1到N4,N5到N8的實心斜線)。例如,一個站點內(nèi)的節(jié)點可經(jīng)由高速網(wǎng)絡(luò)線路來連接,然而分開的站點的節(jié)點則經(jīng)由因特網(wǎng)上的虛擬專用網(wǎng)絡(luò)來連接。通常一個站點是地理上遠離另一個站點的,然而可以基于其他要素來定義站點,諸如帶寬因素,它可能獨立于節(jié)點間的實際物理距離。
根據(jù)本發(fā)明的一個方面,為一組節(jié)點N1到N4定義了第一故障切換范圍(FS1)208,為另一組節(jié)點N5到N8定義了第二故障切換范圍(FS2)。關(guān)于哪個節(jié)點屬于哪個故障切換范圍的定義可由管理員或一個自動進程(下面討論)來作出。在圖2的示例中,考慮到節(jié)點身份,故障切換范圍208和210準確地分別對應(yīng)于站點204和206。然而如下所述參考圖5和6,這不是一個必要條件,實際上,一個故障切換范圍可跨越多個站點和/或一個故障切換范圍可包括少于一個站點的全部節(jié)點(這可能是通常的)。
通常,每個資源組關(guān)聯(lián)于至少一個故障切換范圍,圖3示出了圖2中故障切換范圍FS1和FS2的節(jié)點身份,每個故障切換范圍身份含有一個屬于該節(jié)點的節(jié)點身份列表,諸如維持在數(shù)據(jù)結(jié)構(gòu)302中的列表。同樣示出了資源組身份RG1到RGn的一個示例組,它列出了它們相關(guān)聯(lián)的故障切換范圍,諸如保持另一個數(shù)據(jù)結(jié)構(gòu)304中。
根據(jù)本發(fā)明一個方面,一個資源組只故障切換到它所關(guān)聯(lián)的故障切換范圍或范圍組列出的節(jié)點。在一則實現(xiàn)中,一個資源組不需要含有與故障切換范圍的關(guān)聯(lián),在這樣的事件中資源組可被故障切換到簇中任何的節(jié)點(只要那個節(jié)點基于其他考慮可接受該資源組)。為了防止一個資源組被故障切換,(諸如一個只能運行在非常強大的簇節(jié)點上的需要大量計算能力的程序),該資源組可關(guān)聯(lián)一個只包括一個單獨節(jié)點的故障切換范圍;如果那個節(jié)點故障了,則沒有其他節(jié)點可以故障切換該資源組,那么一個自動重新啟動進程或管理員需要重新啟動該節(jié)點和/或重新配置該資源組的故障切換范圍。注意,使用一個不包含運行資源組的節(jié)點(如,節(jié)點X)的故障切換范圍是可行的(雖然不太可能);隨后故障切換會到另一個節(jié)點(如,節(jié)點Y),但不再返回到先前運行過的節(jié)點(節(jié)點X)除非管理員手動干預(yù)。這可能需要管理員或一個啟動進程在一個不列在故障切換范圍中的節(jié)點上啟動該資源組。
在任何情況下,如果一個將要被故障切換到的資源組關(guān)聯(lián)超過一個故障切換范圍(這很普遍)存在一個用于故障切換嘗試的故障切換范圍順序。例如,參考圖3的數(shù)據(jù)結(jié)構(gòu)304,資源組RG1被設(shè)置為首先故障切換到圖2的第一故障切換范圍(FS1)208中的一個節(jié)點;只有當那個故障切換范圍中沒有節(jié)點能夠處理該故障切換時,才會嘗試故障切換到第二故障切換范圍(FS2)210中的一個節(jié)點;換句話說,維持了故障切換范圍間的優(yōu)先權(quán)。在一則實施例中,如果整個故障切換范圍的節(jié)點都故障了,則可從另一個關(guān)聯(lián)到該組的故障切換范圍中選擇另一個節(jié)點,其中基于一些除了順序以外的標準,如,當前負載、包容該資源組的能力、帶寬、以及其他指標。注意如果資源組故障切換到的一個節(jié)點其本身故障了,那么故障切換管理器會首先試著將該組故障切換到那個故障切換范圍中的一些其他節(jié)點(雖然那個范圍內(nèi)的所有節(jié)點可能都不可用了)。
注意在一個范圍內(nèi)的故障切換是自動的,(通常為了維持高可用度水平的目的),然而在故障切換到第二個范圍前,一個標識(圖3中帶有一個表示“手動”或“自動”的值,但只需要一個單個的比特)控制了用于給定資源組的跨故障切換范圍的故障切換是手動還是自動的。即,當該標識被設(shè)置為手動時,需要手動干預(yù)來帶動該資源組聯(lián)機至工作的故障切換范圍。進一步有,注意多個故障切換范圍是排序的,然而在一個故障切換范圍內(nèi)的節(jié)點列表不必是排序的。作為替代,可隨機地選擇節(jié)點,或通過一些其他合適的方法,諸如基于負載平衡準則。然而,管理員可在一個故障切換范圍內(nèi)設(shè)置一個最優(yōu)節(jié)點順序,諸如通過根據(jù)節(jié)點排序來選擇并對每個排序都有不同的故障切換范圍。例如,如果激活了排序節(jié)點選擇,按照N1,N4,N3,N2排序如圖3所示的FS1;可用相同的節(jié)點N2,N3.N4.N1定義一個新的故障切換范圍FS13(沒有示出)。管理員可隨后將一個資源組關(guān)聯(lián)到FS1,將另一個資源組關(guān)聯(lián)到FS13,從而這些資源組通常情況下會故障切換到不同節(jié)點,但仍然會在同一個節(jié)點子集里故障切換。通常,用戶不需要為一個組設(shè)置優(yōu)選列表,在內(nèi)部,簇節(jié)點以一個隨機的順序列在優(yōu)選列表上。不能包容組內(nèi)資源的節(jié)點被從列表中刪除。然而,如果用戶希望擁有更多的對組安排的控制權(quán),用戶可以將組優(yōu)選列表設(shè)置為一個特定的順序。
故障切換通常經(jīng)由圖4所示的組件來工作,其中以一個稍微不同的方式示出了圖2的簇202,包括兩個節(jié)點(N4和N5),展示了它們中一些內(nèi)部組件和數(shù)據(jù)結(jié)構(gòu),其中主要是用于故障切換的那些。注意其他節(jié)點N1到N3和N6到N8擁有相似的組件和數(shù)據(jù)結(jié)構(gòu),但這些內(nèi)部部件不單獨示出。進一步考慮節(jié)點N2故障(由穿過節(jié)點N2的對角線所表示),則節(jié)點N2的資源組必須被故障切換。注意可能是一個資源組故障了并被故障切換,即使它的節(jié)點仍然是在工作的;如,通過諸如為了測試目的而有意產(chǎn)生一個故障切換將一個資源組移動到另一個節(jié)點。
當一個節(jié)點故障時,簇中的每個節(jié)點都得知該故障。例如,檢測節(jié)點故障的一個方法是故障節(jié)點停止響應(yīng)常規(guī)網(wǎng)絡(luò)連接信息,或者可選地,它不能發(fā)送周期性心跳信息。當這些信息常規(guī)地傳達至簇中的節(jié)點時,工作的節(jié)點得知了該故障。
在一則實現(xiàn)例中,節(jié)點中的一個是控制故障切換的領(lǐng)導者節(jié)點;(注意如果領(lǐng)導者節(jié)點故障了,另一個節(jié)點升職為新的領(lǐng)導者,這樣只要簇中有至少一個健康的節(jié)點那么就總是存在領(lǐng)導者節(jié)點。領(lǐng)導者節(jié)點控制(或委任另一個節(jié)點控制)故障切換操作以保證對每個資源組的故障切換,首先根據(jù)用于那個資源組的故障切換范圍順序來嘗試故障切換操作。為此目的,每個節(jié)點含有一個故障切換管理器(有時候稱為資源控制管理器),以及維持故障切換范圍和資源組到故障切換范圍關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。故障切換控制器按照故障切換范圍的順序工作,以限制該資源組到包含在該資源組關(guān)聯(lián)的故障切換范圍內(nèi)的節(jié)點的故障切換,。在圖4的示例中,對于節(jié)點N4,故障切換管理器被標記為4084,故障切換范圍數(shù)據(jù)結(jié)構(gòu)3024和資源組到故障切換范圍關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)3044,對于節(jié)點N5相似的部件標有下標“5”。注意雖然沒有在圖4中示出,一個“資源管理器”可提供用于資源的包容環(huán)境,在這種情況下故障切換管理器提供控制指令,它們被合適的資源管理器引導到資源。
可以容易地理解的是,可以實現(xiàn)包括本發(fā)明故障切換范圍的多種實施例。例如,在一則實現(xiàn)例中,故障切換管理器可強制執(zhí)行規(guī)則以保證關(guān)聯(lián)到資源組的故障切換范圍是非相交的,即,不相交的。或者,如果這沒有被故障切換管理器強制執(zhí)行,這可被允許并強制執(zhí)行,因為故障切換管理器基于該配置來做出決定。此外,故障切換管理器會首先判斷一個節(jié)點包容資源組的能力,如果可能則是自動的,或者通過來自管理員的一些輸入。例如,可基于候選節(jié)點是否包含一個資源組二元代碼的副本來做出一個自動決定。注意在一些簇節(jié)點上可安裝相應(yīng)于資源組的應(yīng)用程序,但其他沒有,如,在判斷應(yīng)用程序是否需要使用到一些關(guān)聯(lián)到節(jié)點子集的特殊能力(諸如多處理器支持)時用戶輸入可能是必須的。
可手動創(chuàng)建故障切換范圍,如,通過調(diào)用簇實時運行支持的API。結(jié)果是,故障切換范圍不一定需要表示站點,如下參考圖5和6所述的。故障切換范圍可被使用來定義節(jié)點島,在其中可故障切換一個應(yīng)用程序。
表示站點的故障切換范圍可為自動創(chuàng)建的,因為下面的網(wǎng)絡(luò)底層結(jié)構(gòu)含有一些節(jié)點間距離的概念;注意公知的基于通信時間來確定距離的算法可被用于距離檢測。如果該簇軟件是這樣配置,一個基于距離檢測的自動進程可將該節(jié)點添加到一個對應(yīng)于一個站點的故障切換范圍。為了這個目的,圖4表示的是一個當新節(jié)點被添加到一個簇時自動識別的組件4204(或4205);一個這樣的組件是一個設(shè)置應(yīng)用程序,當添加一個新節(jié)點時運行。用這種方法,管理員不需要對任何匹配站點的故障切換范圍更新用于新節(jié)點的故障切換范圍。然而,無論是自動進程將故障切換范圍關(guān)聯(lián)到新的節(jié)點,還是管理員手動地將新的節(jié)點添加到一個故障切換范圍(或不止一個),關(guān)聯(lián)于該故障切換范圍的資源組(其可為一個相對大的數(shù)量)不需要被改變?yōu)槟軌蛟谛碌墓?jié)點上運行。
如圖2到4所示,一個簇可包含多個站點,(有時候稱為一個大地簇(geocluster)),其中每個站點包括節(jié)點的一個集合。在這個示例中,在這樣一個簇中的配置用于一個資源組的故障切換范圍常常被連同站點級別邊界一起定義,并實際上可能按這樣的方式來使用。然而,本發(fā)明的實現(xiàn)例不阻止一個故障切換范圍跨站點。
進一步有,如圖5的簇502所示的,一個故障切換范圍516(如,第四個故障切換范圍,F(xiàn)S4)可只包括一個站點的節(jié)點的子集,如,故障切換范圍FS4中只識別出站點504的節(jié)點N2,N3和N4。如圖6中數(shù)據(jù)結(jié)構(gòu)604中可見的,將不會嘗試把資源組RG2故障切換到節(jié)點N1,因為RG2被關(guān)聯(lián)到故障切換范圍FS4,F(xiàn)S4和故障切換范圍FS2一樣不包括節(jié)點N1。
如圖6進一步表示的,一個手動或自動標識不是對每個資源組必要的,但作為替代的可能對每個資源組中每對故障切換范圍是必要的。這樣,例如,資源組RG5由手動干預(yù)從故障切換范圍FS1切換到FS2,然后,如果需要,因為故障切換范圍FS2中沒有發(fā)現(xiàn)合適的或工作的節(jié)點,由于第二個手動標識,再次手動地從故障切換范圍FS2(切換)到FS3。相反,資源組RG7由手動干預(yù)從故障切換范圍FS1切換到FS2,但隨后,如果需要,因為故障切換范圍FS2中沒有發(fā)現(xiàn)合適的或現(xiàn)存的節(jié)點,因為第二個標識指定自動,則自動地從故障切換范圍FS2切換到FS3。這給予了管理員額外的靈活性來選擇第二次是否選擇手動(如,因為簇中一些東西明顯是錯誤的)或是否在另一個故障切換范圍中尋找另一個節(jié)點(如,因為實在是不介意產(chǎn)生跨站點的故障切換費用)。注意可選的實現(xiàn)例會限制資源組到只有兩個故障切換范圍,或者如果允許大于兩個,即使有三個或以上的故障切換范圍關(guān)聯(lián)到那個資源組,也限制為對整個資源組只有一個標識。
如前文詳細描述可見的,提供了一種方法和系統(tǒng),它提供了一種靈活的方式,用于簇管理員管理一個簇在故障時能采取的自動動作。管理員會指定資源組可故障切換到的簇節(jié)點或節(jié)點組的子集,它可能基于地理上的站點。
雖然本發(fā)明對多種的修改和可選擇構(gòu)造是敏感的,已經(jīng)在附圖中示出并在上文詳細描述了某些說明性實施例。然而可以被理解的是,不旨在限制本發(fā)明為所披露的特定形式,而是相反地,本發(fā)明旨在覆蓋所有在本發(fā)明精神和范圍內(nèi)的修改、可選擇構(gòu)造、或等價。
權(quán)利要求
1.一種在一個計算環(huán)境中的方法,其特征在于,包括定義相應(yīng)于簇內(nèi)所選擇的節(jié)點的故障切換范圍;將所述故障切換范圍與資源組相關(guān)聯(lián);并且基于與所述資源組關(guān)聯(lián)的所述故障切換范圍,將所述資源組從一個節(jié)點故障切換到另一個節(jié)點。
2.如權(quán)利要求1所述的方法,其特征在于,定義所述故障切換范圍包括通過自動進程定義至少一部分所述故障切換范圍。
3.如權(quán)利要求1所述的方法,其特征在于,定義所述故障切換范圍包括從管理員接收關(guān)于至少一部分所述故障切換范圍的輸入。
4.如權(quán)利要求1所述的方法,其特征在于,定義所述故障切換范圍包括定義至少一部分所述故障切換范圍以對應(yīng)于一個站點。
5.如權(quán)利要求1所述的方法,其特征在于,進一步包括,檢測新節(jié)點的添加,并修改所述故障切換范圍以包括對應(yīng)所述新節(jié)點的信息。
6.如權(quán)利要求1所述的方法,其特征在于,進一步包括,將至少一個其他的故障切換范圍與所述資源組相關(guān)聯(lián)。
7.如權(quán)利要求1所述的方法,其特征在于,進一步包括,防止與所述資源組關(guān)聯(lián)的故障切換范圍之間的節(jié)點的相交。
8.如權(quán)利要求6所述的方法,其特征在于,進一步包括,維持與所述資源組關(guān)聯(lián)的故障切換范圍的順序,使得在進行將所述資源組故障切換到任何其他故障切換范圍中的節(jié)點的嘗試之前,進行將所述資源組故障切換到第一故障切換范圍中的節(jié)點的嘗試。
9.如權(quán)利要求8所述的方法,其特征在于,所述的將所述資源組故障切換到第一故障切換范圍中的節(jié)點的嘗試是失敗的,并進一步包括,在嘗試將所述資源組故障切換到另一個故障切換范圍的節(jié)點之前,訪問表示手動干預(yù)是否必要的數(shù)據(jù)。
10.如權(quán)利要求1所述的方法,其特征在于,將所述資源組從一個節(jié)點故障切換到另一個節(jié)點包括從所述故障切換范圍中的多個候選節(jié)點中選擇所述的另一個節(jié)點。
11.如權(quán)利要求10所述的方法,其特征在于,從多個候選節(jié)點中選擇所述另一個節(jié)點是基于隨機選擇。
12.如權(quán)利要求10所述的方法,其特征在于,從多個候選節(jié)點中選擇所述另一個節(jié)點是基于滿足至少一個準則。
13.一個或多個計算機可讀介質(zhì),其特征在于,含有計算機可執(zhí)行指令,它在執(zhí)行時實現(xiàn)權(quán)利要求1所述的方法。
14.一種在一個計算環(huán)境中的方法,其特征在于,包括定義相應(yīng)于一個簇中第一節(jié)點子集的第一故障切換范圍;定義相應(yīng)于一個簇中第二節(jié)點子集的第二故障切換范圍;將所述第一和第二故障切換范圍與資源組相關(guān)聯(lián);并且嘗試將所述資源組從所述第一故障切換范圍中的一個節(jié)點故障切換至另一個節(jié)點,并且如果該嘗試對于所述第一故障切換范圍中的每個節(jié)點都是不成功的,則將所述資源組故障切換至所述第二故障切換范圍中的節(jié)點。
15.如權(quán)利要求14所述的方法,其特征在于,所述第一和第二子集是不相交的。
16.如權(quán)利要求14所述的方法,其特征在于進一步包括,維持了有序信息,它表示在任何其他故障切換所述資源組的嘗試之前,做出對于在所述第一故障切換范圍中所識別的所述第一節(jié)點子集進行所述資源組故障切換的嘗試。
17.如權(quán)利要求14所述的方法,其特征在于,定義所述第一和第二故障切換范圍包括,通過自動進程定義至少部分的所述故障切換范圍之一。
18.如權(quán)利要求14所述的方法,其特征在于,定義所述第一和第二故障切換范圍包括,接收來自管理員的關(guān)于至少部分的所述故障切換范圍之一的輸入。
19.如權(quán)利要求14所述的方法,其特征在于,定義所述第一故障切換范圍包括,定義了至少部分的所述第一故障切換范圍以對應(yīng)于站點。
20.如權(quán)利要求14所述的方法,其特征在于進一步包括,檢測新節(jié)點的添加,并修改所述第一故障切換范圍以包括對應(yīng)所述新節(jié)點的信息。
21.如權(quán)利要求14所述的方法,其特征在于,進一步包括,將第三故障切換范圍與所述資源組相關(guān)聯(lián)。
22.如權(quán)利要求14所述的方法,其特征在于,將所述資源組故障切換到第一故障切換范圍中的節(jié)點的所述嘗試是不成功的,并進一步包括,在將所述資源故障切換到所述第二故障切換范圍中的節(jié)點之前,訪問表示手動干預(yù)是否必要的數(shù)據(jù)。
23.如權(quán)利要求22所述的方法,其特征在于,所述數(shù)據(jù)表示手動干預(yù)是必要的,并進一步包括,在將所述資源故障切換到所述第二故障切換范圍中的節(jié)點之前,等待手動干預(yù)。
24.如權(quán)利要求14所述的方法,其特征在于,將所述資源組從一個節(jié)點故障切換到另一個節(jié)點包括,從所述故障切換范圍中的多個候選節(jié)點中選擇該另一個節(jié)點。
25.如權(quán)利要求24所述的方法,其特征在于,從多個候選節(jié)點間選擇所述另一個節(jié)點是基于隨機選擇。
26.如權(quán)利要求24所述的方法,其特征在于,從多個候選節(jié)點中選擇所述另一個節(jié)點是基于滿足至少一個準則。
27.一個或多個計算機可讀介質(zhì),其特征在于,含有計算機可執(zhí)行指令,它在執(zhí)行時實現(xiàn)權(quán)利要求24所述的方法。
28.一個在一個計算環(huán)境中的系統(tǒng),其特征在于,包括多個節(jié)點;以及運行在這些節(jié)點中至少一個上的種機制,當資源組需要被從一個節(jié)點故障切換到另一個節(jié)點時選擇一個與所述資源組關(guān)聯(lián)的已選擇的故障切換范圍,所述機制嘗試首先將所述資源組故障切換至所述已選擇的故障切換范圍中的節(jié)點。
29.如權(quán)利要求28所述的系統(tǒng),其特征在于,多個故障切換范圍與所述資源組關(guān)聯(lián),并且所述機制基于所述故障切換范圍的排序選擇所述已選擇的故障切換范圍。
30.如權(quán)利要求29所述的系統(tǒng),其特征在于,所述機制不能將所述資源組故障切換至所述已選擇的故障切換范圍,并且其中,所述機制選擇一個最新選擇的故障切換范圍并嘗試接著將所述資源組故障切換到該新選擇的故障切換范圍中的一個節(jié)點。
31.如權(quán)利要求29所述的系統(tǒng),其特征在于,所述機制無法將所述資源組故障切換至所述已選擇的故障切換范圍,并且其中,所述機制檢查數(shù)據(jù)以判斷另一個故障切換范圍是否可被選擇以用于將所述資源組故障切換到所述另一個故障切換范圍中的節(jié)點的自動嘗試。
32.如權(quán)利要求28所述的系統(tǒng),其特征在于,已選擇的故障切換范圍對應(yīng)于一個站點。
33.一個或多個計算機可讀介質(zhì),具有存儲在其上的多個相關(guān)數(shù)據(jù)結(jié)構(gòu),其特征在于,包括第一數(shù)據(jù)結(jié)構(gòu),包括至少一個故障切換范圍的組,每個故障切換范圍與識別簇中至少一個節(jié)點的節(jié)點組相關(guān)聯(lián);第二數(shù)據(jù)結(jié)構(gòu),它識別至少一個資源組,至少一個已識別的資源組含有到至少一個包括在所述第一數(shù)據(jù)結(jié)構(gòu)中的故障切換范圍的關(guān)聯(lián);以及其中在資源組在所述第二數(shù)據(jù)結(jié)構(gòu)中識別失敗時,訪問所述第二數(shù)據(jù)結(jié)構(gòu)以選擇已關(guān)聯(lián)的故障切換范圍作為已選擇的故障切換范圍,并且訪問所述第一數(shù)據(jù)結(jié)構(gòu)以定位對應(yīng)于所述已選擇的故障切換范圍的節(jié)點組,使得所述資源組可被故障切換到在所述已選擇的故障切換范圍中識別的節(jié)點。
34.如權(quán)利要求33所述的計算機可讀介質(zhì),其特征在于,在所述第二數(shù)據(jù)結(jié)構(gòu)中識別的所述資源組與至少兩個包括在所述第一數(shù)據(jù)結(jié)構(gòu)中的故障切換范圍相關(guān)聯(lián)。
35.如權(quán)利要求34所述的計算機可讀介質(zhì),其特征在于,進一步包括與所述資源組關(guān)聯(lián)的數(shù)據(jù),表示故障切換到所述已選擇的故障切換范圍之外的故障切換范圍中的節(jié)點是否需要手動干預(yù)。
36.如權(quán)利要求33所述的計算機可讀介質(zhì),其特征在于,在所述第二數(shù)據(jù)結(jié)構(gòu)中識別的所述資源組與第一和第二故障切換范圍相關(guān)聯(lián),其中,所述資源組還與對所述第一和第二故障切換范圍進行排序的信息相關(guān)聯(lián),使得所述第一資源組為所述已選擇的資源組。
37.如權(quán)利要求36所述的計算機可讀介質(zhì),其特征在于,所述第一和第二資源組被維持在所述第二數(shù)據(jù)結(jié)構(gòu)中,作為與所述已識別的資源組相關(guān)聯(lián)的列表,其中,對所述第一和第二故障切換范圍進行排序的所述信息包括所述列表中的所述故障切換范圍的排序。
全文摘要
故障切換范圍包括在計算機簇中的節(jié)點集合。一個資源組(如,應(yīng)用程序)被關(guān)聯(lián)一個或多個故障切換范圍。如果一個節(jié)點故障了,它所包容的資源組僅故障切換到每個資源組的關(guān)聯(lián)故障切換范圍中識別出的節(jié)點,從第一關(guān)聯(lián)故障切換范圍開始,依次進行,因此定義了節(jié)點島,其中可故障切換一個資源組。如果不能故障切換至資源組的第一故障切換范圍中的節(jié)點,嘗試故障切換至任意下一個關(guān)聯(lián)故障切換范圍中表示的節(jié)點,這可能需要手動干預(yù)。故障切換范圍可表示地理上的站點,其中每個資源組在故障切換到另一個站點前嘗試故障切換到在它的站點中的節(jié)點。故障切換范圍可被簇實時運行程序自動管理,如,一個添加的節(jié)點是可發(fā)現(xiàn)為屬于由一個故障切換范圍表示的站點。
文檔編號G06F9/46GK1758608SQ200510108988
公開日2006年4月12日 申請日期2005年9月29日 優(yōu)先權(quán)日2004年10月8日
發(fā)明者C·P·蘇巴拉曼, S·施里瓦斯塔瓦 申請人:微軟公司