專利名稱:高可用性集群虛擬服務(wù)器系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及俗稱為文件服務(wù)器的高可用性文件服務(wù)器系統(tǒng)。
背景技術(shù):
高可用性服務(wù)器系統(tǒng)是即使在系統(tǒng)硬件或軟件故障后,也能繼續(xù)運行的系統(tǒng)。提供高可用性的通用方法是使系統(tǒng)部件加倍。如果一些部件不可用,可以使用另一個代替。強(qiáng)壯的高可用性系統(tǒng)不具有單點故障。單點故障是其故障致使系統(tǒng)不可用的部件。高可用性文件服務(wù)器系統(tǒng)通常由兩個或多個服務(wù)器(節(jié)點)的集群(cluster)構(gòu)成。集群的節(jié)點具有它們自身與客戶端間的網(wǎng)絡(luò)連接,并且每個節(jié)點直接或間接連接到一個或多個磁盤存儲單元。
高可用性實現(xiàn)能基于共享磁盤模型或非共享磁盤模型。在共享磁盤模型中,由集群節(jié)點同時共享數(shù)據(jù),并且鎖定管理器用于訪問控制。在非共享磁盤模型中,共享數(shù)據(jù)訪問;但是隨時地,由一個節(jié)點永久地?fù)碛忻總€磁盤卷。共享磁盤模型是最通用的方法。當(dāng)未共享磁盤時,必須在兩個未共享磁盤集間復(fù)制數(shù)據(jù),這增加了一些風(fēng)險和復(fù)雜性。
高可用性系統(tǒng)中的節(jié)點通常由一個或多個指令處理器(通常稱為CPUs)、磁盤、存儲器、電源、主板、擴(kuò)展插槽以及接口板組成。在主從設(shè)計中,系統(tǒng)集群的一個節(jié)點被稱為主要或主服務(wù)器,以及其他節(jié)點被稱為輔助、接管或從服務(wù)器。主要和輔助節(jié)點具有相似的硬件,運行相同的操作系統(tǒng),具有所安裝的相同的補(bǔ)丁,支持相同的二進(jìn)制可執(zhí)行程序以及具有相同或非常相似的結(jié)構(gòu)。主要和輔助節(jié)點均連接到相同的網(wǎng)絡(luò),通過該網(wǎng)絡(luò),它們彼此通信以及與客戶端通信。兩種節(jié)點運行兼容的故障轉(zhuǎn)移(failover)軟件版本。在一些結(jié)構(gòu)中,除共享磁盤外,每個節(jié)點具有它自己的專用磁盤。專用磁盤通常包含引導(dǎo)信息、操作系統(tǒng)、聯(lián)網(wǎng)軟件以及故障轉(zhuǎn)移軟件。在一些實現(xiàn)中,專用磁盤是鏡像的,或提供冗余磁盤。
系統(tǒng)節(jié)點不斷地彼此監(jiān)視以便每個節(jié)點知道另一個的狀態(tài)。這種監(jiān)視能使用稱為心跳網(wǎng)絡(luò)(heartbeat network)的通信鏈路來實現(xiàn)。能在任一可靠連接上實現(xiàn)心跳網(wǎng)絡(luò)。在許多實現(xiàn)中,心跳是基于以太網(wǎng)連接。心跳網(wǎng)絡(luò)還能使用諸如運行串行協(xié)議的串行線路之類的來實現(xiàn),串行協(xié)議諸如PPP(點對點協(xié)議)或SLIP(串行線因特網(wǎng)協(xié)議)。還能通過共享磁盤提供心跳,其中磁盤、或磁盤片專用于基于磁盤的心跳的交換。當(dāng)心跳停止時,服務(wù)器了解心跳伙伴的故障。為避免單點故障,可實現(xiàn)多個心跳網(wǎng)絡(luò)。一些實現(xiàn)在專用網(wǎng)絡(luò)(即僅用于心跳通信的網(wǎng)絡(luò))上運行心跳,其他的則在公用網(wǎng)絡(luò)上運行心跳。當(dāng)心跳停止時,在續(xù)存的(surviving)節(jié)點上運行的故障轉(zhuǎn)移軟件能使自動故障轉(zhuǎn)移透明地發(fā)生。
在故障轉(zhuǎn)移后,健康節(jié)點(healthy node)可以訪問與故障節(jié)點訪問的相同的數(shù)據(jù)并提供相同的服務(wù)。這是通過使健康節(jié)點采用與故障節(jié)點相同的網(wǎng)絡(luò)身份以及準(zhǔn)許健康節(jié)點訪問共享磁盤中的數(shù)據(jù)同時切斷(lock out)故障節(jié)點來實現(xiàn)的。
NIC(網(wǎng)絡(luò)接口卡)有時出故障。一些高可用性系統(tǒng)通過提供備用NIC,具有冗余的網(wǎng)絡(luò)連接性。NIC能具有一個或多個網(wǎng)絡(luò)端口。在網(wǎng)絡(luò)端口出故障的情況下,由故障網(wǎng)絡(luò)端口提供的網(wǎng)絡(luò)服務(wù)被遷移到備用端口。在這種情況下,不需要故障轉(zhuǎn)移到另一節(jié)點。能為公用和專用心跳網(wǎng)絡(luò)提供冗余網(wǎng)絡(luò)連接性。
一些高可用性系統(tǒng)支持虛擬網(wǎng)絡(luò)接口,其中,將多個IP(因特網(wǎng)協(xié)議)指定到相同的物理端口。服務(wù)與網(wǎng)絡(luò)身份(虛擬網(wǎng)絡(luò)接口)和文件系統(tǒng)(存儲器)關(guān)聯(lián)。節(jié)點(物理服務(wù)器)中的硬件提供網(wǎng)絡(luò)連接和文件服務(wù)器所需的計算資源。虛擬IP地址不將客戶端與特定的物理服務(wù)器連接,其將客戶端與在特定物理服務(wù)器上運行的特定的服務(wù)連接。磁盤和存儲設(shè)備不與特定物理服務(wù)器關(guān)聯(lián)。它們與文件服務(wù)器關(guān)聯(lián)。當(dāng)在節(jié)點中有故障時,虛擬網(wǎng)絡(luò)接口和文件系統(tǒng)被遷移到健康節(jié)點。因為這些服務(wù)不與物理服務(wù)器關(guān)聯(lián),關(guān)于哪個物理服務(wù)器提供服務(wù),對客戶端來說無關(guān)緊要。當(dāng)設(shè)置虛擬IP地址或?qū)⑻摂MIP地址從一個物理端口移動到另一個時,生成免費ARP(地址解析協(xié)議)包。這允許客戶端、集線器以及交換機(jī)更新它們的高速緩存中的MAC(媒體訪問控制)地址,該地址對應(yīng)于虛擬IP地址的位置。
所有故障轉(zhuǎn)移導(dǎo)致一些客戶端中斷。在一些情況下,在完成故障轉(zhuǎn)移后,系統(tǒng)具有比故障轉(zhuǎn)移前更低的性能。當(dāng)健康節(jié)點除提供它自己的服務(wù)外,還負(fù)責(zé)提供由故障節(jié)點提供的服務(wù)時,會發(fā)生這種情形。
發(fā)明內(nèi)容
一般來說,在一個方面,本發(fā)明提供具有兩個或多個自主服務(wù)器(autonomous server)(稱為節(jié)點或物理服務(wù)器、連接到存儲設(shè)備)的集群的高可用性集群服務(wù)器系統(tǒng)以及計算機(jī)程序產(chǎn)品和用于操作這些系統(tǒng)的方法。節(jié)點之一是主節(jié)點以及其余的為從節(jié)點。每個節(jié)點運行一個或多個虛擬服務(wù)器。虛擬服務(wù)器由網(wǎng)絡(luò)資源和文件系統(tǒng)組成。當(dāng)一個節(jié)點失敗時,透明地將其虛擬服務(wù)器傳送到一個或多個其他節(jié)點。這是通過提供兩組無縫連接性來實現(xiàn)的。第一組位于節(jié)點和客戶端之間。第二組位于節(jié)點和存儲系統(tǒng)之間。第一連接性基于客戶端和節(jié)點間的虛擬IP技術(shù)。第二連接性-后端(backend)連接性-能使用光纖信道、SCSI(小型計算機(jī)系統(tǒng)接口)、iSCSI(IP上的小型計算機(jī)系統(tǒng)接口)、InfiniBandTM體系結(jié)構(gòu)或任何其他這些技術(shù),或使用它們的組合來實現(xiàn)。
節(jié)點通過心跳網(wǎng)絡(luò)彼此通信以便確定彼此的健康狀況。心跳能在IP或SAN(存儲區(qū)網(wǎng)絡(luò))基礎(chǔ)結(jié)構(gòu),或在兩者上操作以便確定節(jié)點的可用性。如果節(jié)點之一或其部件之一出故障以致在那個節(jié)點上運行的虛擬服務(wù)器失敗,發(fā)生故障轉(zhuǎn)移。
在故障轉(zhuǎn)移中,使故障節(jié)點的虛擬服務(wù)器遷移到另一節(jié)點上。在某些故障條件下,無縫連接性和冗余硬件和軟件部件允許繼續(xù)訪問文件系統(tǒng)而不調(diào)用故障轉(zhuǎn)移過程。能為虛擬服務(wù)器指定優(yōu)先級,并且在故障轉(zhuǎn)移后,能在較低優(yōu)先級虛擬服務(wù)器之前調(diào)用(bring up)較高優(yōu)先級虛擬服務(wù)器。能通過將虛擬服務(wù)器從故障節(jié)點分配到多個不同節(jié)點來提供負(fù)載平衡。
一般來說,在另一個方面中,本發(fā)明提供系統(tǒng)、程序和方法,其中多個虛擬服務(wù)器駐留在單個物理服務(wù)器上。每個虛擬服務(wù)器獨占擁有一個或多個文件系統(tǒng)以及一個或多個虛擬IP地址,并且它看不到其它虛擬服務(wù)器獨占擁有的資源。將虛擬服務(wù)器管理為單獨的實體并且它們共享物理服務(wù)器上的物理資源。
一般來說,在另一方面中,本發(fā)明提供系統(tǒng)、程序和方法,其中,能可選地不從故障節(jié)點遷移不重要的服務(wù)。能通過管理器配置來完成設(shè)置虛擬服務(wù)器的優(yōu)先極以及防止遷移不重要的虛擬服務(wù)器。
一般來說,在另一方面中,本發(fā)明提供系統(tǒng)、程序和方法,其中監(jiān)視節(jié)點的加載以便識別加載比其他節(jié)點少的節(jié)點。使用這一信息來執(zhí)行負(fù)載平衡。在故障轉(zhuǎn)移后,優(yōu)先于負(fù)載較重的節(jié)點,將虛擬服務(wù)器遷移到負(fù)載少的節(jié)點。因為節(jié)點能支持多個虛擬服務(wù)器,即使在沒有故障時,在正常操作期間,也能用這種方法實現(xiàn)負(fù)載平衡。
一般來說,在另一方面中,本發(fā)明提供系統(tǒng)、程序和方法,其中,為最小化出現(xiàn)故障轉(zhuǎn)移,每個節(jié)點在單個子網(wǎng)或不同子網(wǎng)內(nèi)具有多個網(wǎng)絡(luò)端口。(子網(wǎng)是通過提供具有相同前綴的IP地址,共享共用地址部件的網(wǎng)絡(luò)的一部分)。如果端口之一失敗,將服務(wù)移動到一個續(xù)存的端口。這允許多個網(wǎng)絡(luò)端口故障發(fā)生而不調(diào)用故障轉(zhuǎn)移,以便僅當(dāng)沒有續(xù)存的端口時才出現(xiàn)故障轉(zhuǎn)移。
本發(fā)明的實現(xiàn)能實現(xiàn)一個或多個下述優(yōu)點。故障轉(zhuǎn)移僅用作最后一個手段,因此限制由故障轉(zhuǎn)移引起的對服務(wù)的可訪問性的中斷。通過負(fù)載平衡,提高總的系統(tǒng)性能。當(dāng)出現(xiàn)故障時,通過可選消除低優(yōu)先級服務(wù)來提高總的系統(tǒng)性能。
在下述附圖和說明書中闡述了本發(fā)明的一個或多個實現(xiàn)的細(xì)節(jié)。從說明書、附圖和權(quán)利要求書,本發(fā)明的其他特征和優(yōu)點將變得顯而易見。
圖1是根據(jù)本發(fā)明的一個方面的高可用性服務(wù)器系統(tǒng)的框圖。
圖2是示例說明在虛擬服務(wù)器故障轉(zhuǎn)移之前,如何使用網(wǎng)絡(luò)故障轉(zhuǎn)移的圖。
圖3是在虛擬服務(wù)器故障轉(zhuǎn)移前,基于網(wǎng)絡(luò)失敗的本發(fā)明的實施例。
圖4是在故障轉(zhuǎn)移后,在圖3中示例說明的相同實施例。
圖5示例說明用于高可用性服務(wù)器集群的存儲體系結(jié)構(gòu)。
圖6是示例說明高可用性服務(wù)器集群的初始化的流程圖。
圖7是示例說明網(wǎng)絡(luò)端口故障恢復(fù)的流程圖。
圖8是示例說明移出虛擬服務(wù)器的流程圖。
圖9是示例說明調(diào)用虛擬服務(wù)器的流程圖。
在不同圖中相同的標(biāo)記表示相同的元件。
具體實施例方式
圖1示例說明根據(jù)本發(fā)明的高可用性服務(wù)器的部件。服務(wù)器具有節(jié)點集群,節(jié)點A 101、節(jié)點B 102、...、節(jié)點J 103。每個節(jié)點具有一個或多個虛擬服務(wù)器。節(jié)點A具有標(biāo)記為VSA1、VAS2、...VSAn1的n1個虛擬服務(wù)器。節(jié)點B具有標(biāo)記為VSB1、VSB2、...VSBn2的n2個虛擬服務(wù)器。節(jié)點J具有n3個虛擬服務(wù)器,標(biāo)記為VSJ1、VSJ2、...、VSJn3。每個節(jié)點通過存儲網(wǎng)絡(luò)110連接到一個或多個存儲系統(tǒng)。服務(wù)器具有多個存儲系統(tǒng)121、122、123。如圖1所示,每個虛擬服務(wù)器擁有一個或多個文件系統(tǒng)121a、121b、121c、122a、122b、122c、123a、123b和123c。有一個可由所有節(jié)點訪問的共享磁盤124。該共享磁盤被稱為涂寫磁盤(scribble disk);它包含狀態(tài)和配置數(shù)據(jù)。該存儲網(wǎng)絡(luò)110能是光纖信道、SCSI、iSCSI、InfiniBand或任何其他這種技術(shù)??蛻舳?05、106和107通過一個或多個網(wǎng)絡(luò)104,諸如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、...、網(wǎng)絡(luò)N連接到節(jié)點上。每個節(jié)點具有至少一個物理端口,并且多個虛擬地址能駐留在相同的物理端口上。RAID存儲接口112向所有節(jié)點提供邏輯卷支持。每個邏輯卷能由多個磁盤組成-例如,在RAID 0、1、5、1+0或5+0配置中。
虛擬服務(wù)器擁有不包括其他虛擬服務(wù)器在內(nèi)的文件系統(tǒng)和虛擬IP地址。它們共享物理服務(wù)器上的其他物理資源。虛擬服務(wù)器不能看見由其他虛擬服務(wù)器獨有的資源,并且作為單獨的實體被管理。使用虛擬服務(wù)器來集合資源(虛擬IP地址和文件系統(tǒng))便于在故障轉(zhuǎn)移期間移動資源并且比單獨處理每個資源更有效。
每個節(jié)點能具有多個網(wǎng)絡(luò)端口,也稱為物理IP端口(PIP)。如果一個端口失敗,節(jié)點將恢復(fù),只要在該節(jié)點上有健康的網(wǎng)絡(luò)端口。節(jié)點上最后一個端口故障導(dǎo)致故障轉(zhuǎn)移到健康的節(jié)點。
集群中的節(jié)點能充當(dāng)主或從節(jié)點。僅有一個主節(jié)點,其余節(jié)點是從節(jié)點(或者處于轉(zhuǎn)移狀態(tài),例如均不是)。主節(jié)點協(xié)調(diào)從節(jié)點的活動。從節(jié)點向主節(jié)點報告它們控制的資源。從服務(wù)器僅知道它們自己的資源和狀態(tài)。主服務(wù)器維持用于整個集群的狀態(tài)信息。還維持在負(fù)載平衡期間使用的有關(guān)服務(wù)器負(fù)載的信息,其中系統(tǒng)試圖在健康節(jié)點中大約平均地劃分它的工作。
在正常操作期間,每個節(jié)點測量它的CPU使用率以及它的IOPS(“每秒的I/O操作”)的總量。IOPS的數(shù)量表示當(dāng)由客戶端訪問時,節(jié)點上的總負(fù)載。通過共享磁盤或網(wǎng)絡(luò),將這一信息傳送到主服務(wù)器。當(dāng)特定節(jié)點上CPU利用率和/或IOPS上的數(shù)量超出閾值時,主節(jié)點將檢查其他節(jié)點上的負(fù)載。如果在系統(tǒng)中有能處理更多工作的節(jié)點,主節(jié)點將一些虛擬服務(wù)器遷移到它們上。目的是在健康節(jié)點中或多或少平均地劃分工作。用于觸發(fā)負(fù)載平衡的CPU和/或IOPS負(fù)載的閾值是能通過系統(tǒng)的管理接口控制的可配置參數(shù)。
在相同節(jié)點中,能通過在健康網(wǎng)絡(luò)端口中重新分配虛擬接口來可選地執(zhí)行網(wǎng)絡(luò)端口上的負(fù)載平衡。節(jié)點中的軟件監(jiān)視節(jié)點的物理端口上的負(fù)載。如果一個端口實際上處理比其他端口更多的網(wǎng)絡(luò)通信量,將它的一些虛擬接口移動到不太忙的端口中。選擇移動哪一個虛擬接口或哪些虛擬接口能基于每個虛擬接口傳送多少通信量而定。
在集群中,通過在節(jié)點間的網(wǎng)絡(luò)連接上和在共享磁盤上操作的心跳協(xié)議監(jiān)視資源以便確定每個服務(wù)器的可用性。當(dāng)節(jié)點停止接收心跳消息時,它知道另一節(jié)點出故障,網(wǎng)絡(luò)連接上的心跳基于使用Ping和/或RPC(遠(yuǎn)程過程調(diào)用)調(diào)用探查從節(jié)點的主節(jié)點而定。能在專用或公用網(wǎng)絡(luò)上實現(xiàn)Ping。基于RPC的心跳能使用公用網(wǎng)絡(luò)發(fā)送。
如果主節(jié)點沒有在特定時間(例如3秒)內(nèi)從從節(jié)點接收響應(yīng),那么不能到達(dá)從節(jié)點,或者從節(jié)點有其他的問題。如果主節(jié)點停止發(fā)送Ping或RPC,從節(jié)點假定不能到達(dá)主節(jié)點或主節(jié)點有其他問題。當(dāng)集群中一個續(xù)存的節(jié)點確定與一個節(jié)點具有連接性或其他問題時,續(xù)存的節(jié)點必須仍然確定另一節(jié)點是真正失效還是簡單的不可到達(dá)。
如果通過Ping和/或RPC的心跳檢測到節(jié)點故障,使用通過共享磁盤的心跳來找出出故障節(jié)點是真正失效還是僅不可到達(dá)。如果失效節(jié)點是主節(jié)點,從節(jié)點之一變?yōu)樾碌闹鞴?jié)點。為處理所有網(wǎng)絡(luò)連接損失的可能性,實現(xiàn)通過共享磁盤(涂寫磁盤)的心跳。節(jié)點通過涂寫,換句話說,通過寫入和讀取涂寫磁盤來交換有關(guān)它們的狀態(tài)的信息。用于主從節(jié)點的涂寫周期隨集群的狀態(tài)而改變。在正常操作期間,主節(jié)點緩慢地,例如以每60秒一次涂寫的速率涂寫。當(dāng)主節(jié)點丟失從節(jié)點時,它更快,例如以每3秒一次涂寫的速率涂寫。由主節(jié)點控制的從節(jié)點不涂寫。最近丟失主節(jié)點的從節(jié)點快速地,例如以每3秒一次涂寫的速率涂寫。既不是主節(jié)點也不是從節(jié)點的節(jié)點緩慢地,例如,以每60秒的速率涂寫。
圖2示例說明一種實現(xiàn)如何處理網(wǎng)絡(luò)故障。如果節(jié)點具有多個網(wǎng)絡(luò)端口,以及如果端口之一故障,節(jié)點恢復(fù)而沒有故障轉(zhuǎn)移。圖2表示節(jié)點1、節(jié)點2、...、節(jié)點N。節(jié)點1具有n1個網(wǎng)絡(luò)端口,標(biāo)記為1PIP1、1PIP2、1PIP3、...、1PIPn1。節(jié)點2具有n2個網(wǎng)絡(luò)端口,標(biāo)記為2PIP1、2PIP2、2PIP3、...、2PIPn2。節(jié)點N具有nn個端口,標(biāo)記為NPIP1、NPIP2、NPIP3、...、NPIPnn。例如,假定節(jié)點1具有附加在虛擬服務(wù)器上的虛擬IP地址-VIP1。當(dāng)端口1 PIP1失敗時,將VIP1移動到1PIP2,如箭頭所示。這將不會導(dǎo)致故障轉(zhuǎn)移,因為它處于相同的節(jié)點1中。當(dāng)1PIP2、1PIP3、...1PIPn-1故障時,會發(fā)生相同的情形。然而,當(dāng)1PIPn1出故障時,在節(jié)點1上的所有其他PIP已經(jīng)出故障后,故障轉(zhuǎn)移發(fā)生以及將VIP1移動到節(jié)點2中的2PIP1。對其他節(jié)點也發(fā)生相同的情形;即,虛擬IP地址移動到相同節(jié)點內(nèi)的另一物理端口以及僅當(dāng)當(dāng)前節(jié)點中的所有物理端口失敗時,才發(fā)生故障轉(zhuǎn)移。在節(jié)點內(nèi)或以其它方式,能將虛擬IP地址移動到與故障端口相同的子網(wǎng)內(nèi)的端口或不同子網(wǎng)中的端口。在一種實現(xiàn)中,優(yōu)先于不同子網(wǎng)中的端口,將選擇相同子網(wǎng)中的端口。
在前例子中,虛擬服務(wù)器被描述為僅具有一個虛擬IP地址。然而,能將單個虛擬服務(wù)器連接到多個虛擬IP地址上,以及節(jié)點能具有許多物理和虛擬IP地址。
圖3和圖4示例說明用于移動虛擬網(wǎng)絡(luò)接口而不強(qiáng)制故障轉(zhuǎn)移的另一技術(shù)。這些圖表示運行兩組虛擬服務(wù)器VSA1、...VSAn1和VSB1、...、VSBn2的兩個節(jié)點。在圖3中,兩個虛擬IP地址VA11和VA12被連接到虛擬服務(wù)器VSA1。為簡化該圖,未示出連接到其它虛擬服務(wù)器上的虛擬IP地址。Net1和Net2是不同的子網(wǎng)??蛻舳?05是連接到Net1的客戶端以及客戶端306是連接到Net2的客戶端。HB1和HB2是網(wǎng)絡(luò)集線器或交換機(jī)。客戶端306在Net2上與節(jié)點A中的虛擬服務(wù)器通信。
圖4表示當(dāng)在Net2上的通信故障時所發(fā)生的情形。虛擬IP地址VA12被從節(jié)點A310遷移到節(jié)點B320中的物理端口PIP3。使用網(wǎng)絡(luò)故障擺脫(failthrough)而不是虛擬服務(wù)器故障轉(zhuǎn)移,因為它對客戶端損害較少。如前所述,無論何時將虛擬IP地址連接到物理接口上以及當(dāng)將虛擬地址遷移到另一接口上時,生成免費ARP包。
如圖4所示,在Net2故障后,由節(jié)點B通過VA12所遷移到的PIP3接收來自客戶端306的數(shù)據(jù)。節(jié)點B中的路由軟件322通過PIP4,將數(shù)據(jù)轉(zhuǎn)發(fā)到節(jié)點A。通過節(jié)點B中的PIP4和PIP3,通過PIP1將來自節(jié)點A的數(shù)據(jù)轉(zhuǎn)發(fā)到客戶端306。
在支持NFS文件系統(tǒng)的一種實現(xiàn)中,將NFS文件鎖定存儲在共享磁盤中。每個虛擬服務(wù)器擁有相應(yīng)的NFS文件鎖定。在故障轉(zhuǎn)移期間,鎖的所有權(quán)遵循虛擬服務(wù)器。因此,虛擬服務(wù)器和相應(yīng)的NFS鎖被遷移到健康節(jié)點。因此,不需要客戶端管理NFS鎖。
圖5詳細(xì)闡述在其上構(gòu)建集群的存儲基礎(chǔ)結(jié)構(gòu)。節(jié)點700、702、...、770是集群的節(jié)點。這些節(jié)點能部署適當(dāng)協(xié)議的總線適配器以便連接到共享存儲總線或結(jié)構(gòu)704上,諸如SCSI、光纖信道判優(yōu)環(huán)、光纖信道結(jié)構(gòu)、InfinBand、iSCSI或其他適當(dāng)?shù)目偩€或結(jié)構(gòu)上。多個鏈路706和708、710和712、720和722將每個節(jié)點連接到共享總線或結(jié)構(gòu)704上。這種多個鏈路允許系統(tǒng)容忍一個鏈路故障。能提供另外的鏈路。共享存儲單元(多個存儲系統(tǒng))718能是通過至少兩個鏈路714和716,連接到總線或結(jié)構(gòu)704上的一個或多個容錯共享存儲單元(諸如RAID5或RAI1陣列)。這種基礎(chǔ)結(jié)構(gòu)能經(jīng)受單點故障。多個故障能導(dǎo)致完全喪失到共享存儲單元718的訪問。
在一種有利實現(xiàn)中,集群中的雙光纖信道判優(yōu)環(huán)主機(jī)總線適配器連接到雙光纖信道判優(yōu)環(huán)。這允許光纖信道目標(biāo)諸如FC-AL(光纖信道-判優(yōu)環(huán))RAID(獨立磁盤冗余陣列)盒附加在光纖信道判優(yōu)環(huán)主機(jī)上。在RAID盒上定義共享存儲單元,諸如RAID5(奇偶性)或RAID1(鏡像)陣列。
可以從每個集群節(jié)點訪問共享存儲單元718,但通常由用于不同節(jié)點的不同路徑訪問。因此,通過集群范圍內(nèi)的名稱(cluster-widename)識別每個節(jié)點上的每個共享存儲單元是很有利的。這消除了當(dāng)使用本地設(shè)備名時,將設(shè)備名綁定到共享存儲空間上的困難,本地設(shè)備名反映路由信息,因為到相同存儲空間的路由在不同集群節(jié)點上是不同的。為實現(xiàn)此,使用與每個共享存儲單元718有關(guān)的獨特標(biāo)識符。適當(dāng)?shù)臉?biāo)識符是FC RAID控制器的萬維ID(WWID),在該萬維ID的基礎(chǔ)上,定義共享存儲單元718。使用全球可訪問名稱服務(wù)器數(shù)據(jù)庫來將管理器選定的名稱與每個共享存儲單元的獨特標(biāo)識符相關(guān)聯(lián)。能將數(shù)據(jù)庫存儲在任何方便的、全球可訪問位置,諸如涂寫磁盤或集群外的服務(wù)器、但可由所有集群節(jié)點訪問的位置上。名稱服務(wù)器由集群節(jié)點參考,在它們已經(jīng)發(fā)現(xiàn)共享存儲單元并了解共享存儲單元的獨特標(biāo)識符后。通過參考名稱服務(wù)器,集群節(jié)點將(能是并且通常是多個)共享存儲單元分解成集群范圍內(nèi)的設(shè)備名。
因為集群節(jié)點具有到共享存儲單元的多個路徑,通過將I/O(即,輸入/輸出或數(shù)據(jù)傳送)請求更改到相同的共享存儲單元,但通過不同路由,執(zhí)行負(fù)載平衡是很有利的。例如,集群節(jié)點700能通過更改鏈路706和708間的數(shù)據(jù)傳送請求來負(fù)載平衡。這通過增加可用來訪問共享存儲單元的整個帶寬,有利于集群節(jié)點。
能將該設(shè)計配置成能經(jīng)受單點或多點故障。設(shè)計的強(qiáng)壯性由三個因素來定。第一是每個節(jié)點和共享存儲總線或結(jié)構(gòu)704間的鏈路數(shù)量。第二因素是共享存儲總線或結(jié)構(gòu)704和數(shù)據(jù)存儲單元718間的鏈路數(shù)量。對于每對元件間僅兩條鏈路,如圖5所示,設(shè)計能容許單點故障。對于集群節(jié)點中的多個總線適配器,總線適配器能出故障并且到共享存儲單元的數(shù)據(jù)傳送請求能以半個帶寬性能繼續(xù)。相關(guān)物理接口(諸如電纜)也能出故障。類似地容許電纜的任何單點故障。由于鏈路數(shù)量為2,通過增加鏈路的數(shù)量,能將單點故障容限提高到更高容限。共享存儲單元是能容許成員驅(qū)動器(member drive)故障的容錯RAID陣列。如果使用多個RAID控制器來控制相同的共享存儲單元,那么能容許RAID控制器故障。
通過節(jié)點所有權(quán)鎖定保護(hù)共享存儲單元以便保證專用節(jié)點使用率。每個節(jié)點知道其它節(jié)點的共享存儲單元所有權(quán)。如果它確定共享存儲單元由某個其他節(jié)點擁有,其將共享存儲單元標(biāo)識為在那個節(jié)點上不可用。
存儲抽象,諸如虛擬存儲技術(shù)允許節(jié)點使虛擬存儲單元跨越多個共享存儲單元。這提高容錯以及性能。使用多個共享存儲單元,在節(jié)點上創(chuàng)建虛擬存儲單元。這些虛擬存儲設(shè)備能跨越由不同存儲控制器控制的多個共享存儲單元,以及支持有效數(shù)據(jù)保護(hù)和數(shù)據(jù)傳送性能特征。虛擬存儲設(shè)備能是級聯(lián)、鏡像或帶狀的多個共享存儲單元。
級聯(lián)提供的優(yōu)點是容量擴(kuò)展。當(dāng)共享存儲單元與另一共享存儲單元級聯(lián)時,當(dāng)?shù)谝还蚕泶鎯卧獫M時,使用第二共享存儲單元。
通過帶狀的共享存儲單元,在各種成員共享存儲單元中交替順序I/O請求。帶狀虛擬存儲設(shè)備提供擴(kuò)展和性能。因為在不同共享存儲單元上并行分配數(shù)據(jù)傳送請求,與使用單個共享存儲單元相比,節(jié)點經(jīng)歷更高吞吐量。
通過2個不同共享存儲單元的虛擬存儲鏡像(RAID 1),在每個成員共享存儲單元上加倍I/O操作。通過以預(yù)定最低尋道時間從成員進(jìn)行讀取,增強(qiáng)來自鏡像的讀取操作。當(dāng)確定鏡像損壞以及正確地替換損壞的成員時,鏡像同步是自動的。鏡像虛擬存儲設(shè)備通過容許完全損失共享存儲單元來提供額外的容錯層。通過部署鏡像虛擬存儲設(shè)備,集群的容錯性能增加兩倍。
圖6示例說明根據(jù)本發(fā)明的高可用性系統(tǒng)的初始化。在步驟1100,系統(tǒng)集群中的所有節(jié)點被配置成指向?qū)⒂米魍繉懘疟P的相同的共享存儲單元。在步驟1101,分配一個節(jié)點以便初始化涂寫磁盤。初始化涉及從配置文件提取數(shù)據(jù)。在步驟1102,在一個節(jié)點中啟動高可用性軟件。該節(jié)點變?yōu)榧旱闹鞣?wù)器。在步驟1103,在所有其他節(jié)點上啟動高可用性軟件。這些節(jié)點是集群中的從節(jié)點。在步驟1104,主節(jié)點將虛擬服務(wù)器分配給從節(jié)點。如果需要的話,能手動完成這一步驟。
圖7表示具有多個網(wǎng)絡(luò)端口的節(jié)點如何檢測和處理網(wǎng)絡(luò)故障。如現(xiàn)在將描述的,其通過測試其每一個端口來完成。在步驟1200,節(jié)點使用正測試的端口,以頻繁間隔(諸如每3秒)向先前可達(dá)的外部端口發(fā)送Ping包。進(jìn)行ping的頻率是可配置的。在判定步驟1202,節(jié)點確定在預(yù)定等待時間(諸如250msec(毫秒))內(nèi)是否接收到對Ping的響應(yīng)。等待時間是可配置的。如果接收到響應(yīng),在步驟1201,將正測試的端口標(biāo)記為好的。否則,在步驟1203,節(jié)點已知的可達(dá)外部IP地址被劃分成組。組中的地址總數(shù)是可配置的。在步驟1204,一次一組地將Ping消息發(fā)送到每個組的地址。這不是使用廣播完成的,因為廣播更昂貴。在判定步驟1205中,節(jié)點確定在等待時間內(nèi)是否達(dá)到組中的任一地址。如果到達(dá)一個,在步驟1201,將正測試的端口標(biāo)記為好的并繼續(xù)執(zhí)行。如果沒有到達(dá)所有組中的任何地址,在步驟1206中繼續(xù)執(zhí)行。在步驟1206,發(fā)送廣播消息。在判定步驟1207,如果在等待時間內(nèi)接收到任一響應(yīng),將正測試的端口標(biāo)記為好的以及在步驟1201繼續(xù)執(zhí)行。否則,節(jié)點斷定正測試的端口狀況不良,以及在步驟1208,將該端口標(biāo)記為損壞。
在判定步驟1302,節(jié)點確定在節(jié)點中是否有健康的網(wǎng)絡(luò)端口。如果有,在步驟1304,故障節(jié)點的虛擬地址被遷移到健康網(wǎng)絡(luò)端口。否則,在步驟1303,請求故障轉(zhuǎn)移到集群中的另一節(jié)點。
對節(jié)點已經(jīng)標(biāo)記為好的每個物理端口,執(zhí)行圖7的過程。
網(wǎng)絡(luò)端口的故障僅是調(diào)用故障轉(zhuǎn)移的可能理由的一個。能導(dǎo)致故障轉(zhuǎn)移的其他事件包括節(jié)點或存儲系統(tǒng)的一個中的硬件故障、電源故障、節(jié)點和存儲系統(tǒng)間的鏈路中的故障、存儲總線或結(jié)構(gòu)中的不可恢復(fù)故障,以及共享存儲單元和存儲總線或結(jié)構(gòu)間的鏈路中的故障。也能手動地啟動故障轉(zhuǎn)移。在校正導(dǎo)致故障轉(zhuǎn)移的問題后,能執(zhí)行手動故障恢復(fù)命令以便將虛擬服務(wù)器遷移到它們的原始節(jié)點。
例如,如果由于任何原因,包含文件系統(tǒng)的共享存儲單元不能由節(jié)點訪問(例如,關(guān)于在圖5中示例說明的特定結(jié)構(gòu)中的節(jié)點700,由于節(jié)點和單元間的連接完全斷開,諸如鏈路706和708的故障),那么使包含不可訪問文件系統(tǒng)的虛擬服務(wù)器遷移到能訪問存儲單元,因此能訪問文件系統(tǒng)的另一物理節(jié)點,如果這種替換節(jié)點存在的話。
圖8表示當(dāng)節(jié)點中的虛擬服務(wù)器在其遷移到另一節(jié)點前關(guān)閉時執(zhí)行的步驟。在這一例子中,虛擬服務(wù)器具有NFS文件系統(tǒng)和CIFS文件系統(tǒng)。在步驟1401,斷開屬于虛擬服務(wù)器的所有虛擬接口。在步驟1402,取消初始化(de-initialize)所有NFS共享。在步驟1403,執(zhí)行NFS鎖定清除。在步驟1404,取消初始化虛擬CIFS(公用因特網(wǎng)文件系統(tǒng))服務(wù)器和共享。在步驟1405,取消安裝(un-mount)屬于虛擬服務(wù)器的所有文件系統(tǒng)。
圖9示例說明調(diào)用虛擬服務(wù)器所需的步驟。再次,在這一例子中,虛擬服務(wù)器具有NFS文件系統(tǒng)和CIFS文件系統(tǒng)。在步驟1501,節(jié)點安裝屬于故障虛擬服務(wù)器的所有文件系統(tǒng)。在步驟1502,調(diào)用屬于虛擬服務(wù)器的虛擬接口。在步驟1503,初始化NFS共享。在步驟1504,執(zhí)行NFS鎖定恢復(fù)。在步驟1505,初始化虛擬CIFS服務(wù)器和共享。
系統(tǒng)能同時服務(wù)于各種文件系統(tǒng)。文件系統(tǒng)由于內(nèi)部文件系統(tǒng)元數(shù)據(jù)不一致性會出故障,有時稱為文件系統(tǒng)退化。在系統(tǒng)的一種實現(xiàn)中,當(dāng)檢測到退化(通常由文件系統(tǒng)本身來完成),節(jié)點中的軟件處理文件系統(tǒng)的修復(fù)而不完全中斷客戶機(jī)使用NFS協(xié)議訪問文件系統(tǒng)。在文件系統(tǒng)退化的情況下,暫時阻塞NFS客戶機(jī)對文件系統(tǒng)的訪問。按其屬性,NFS協(xié)議會繼續(xù)向服務(wù)器發(fā)送請求。在阻塞用于NFS訪問的文件系統(tǒng)后,軟件防止客戶機(jī)訪問文件系統(tǒng),然后修復(fù)它(例如,通過運行實用程序諸如fsck)。在修復(fù)文件系統(tǒng)后,軟件使得客戶機(jī)可再次訪問。然后,去除NFS阻塞,以便能再次服務(wù)于來自客戶機(jī)的NFS請求。結(jié)果,客戶機(jī)上的應(yīng)用會暫時凍結(jié)而不會失效,但只要文件系統(tǒng)回到在線,即可恢復(fù)。
可以任何方式實現(xiàn)系統(tǒng)的管理配置。例如,在系統(tǒng)節(jié)點上或單獨個人計算機(jī)上運行的應(yīng)用程序能定義和修改用來控制系統(tǒng)配置和操作的參數(shù)。在如上所述實現(xiàn)中,這些參數(shù)存儲在位于涂寫磁盤的配置文件中。然而,配置數(shù)據(jù)能被存儲在任意數(shù)量的文件中、數(shù)據(jù)庫中,或者以其它方式,并通過任何適當(dāng)?shù)难b置提供給系統(tǒng)。
在某些方面中,本發(fā)明能以實際地嵌入計算機(jī)可讀存儲設(shè)備中的、用于由可編程處理器執(zhí)行的計算機(jī)程序產(chǎn)品實現(xiàn);以及本發(fā)明的方法步驟可由執(zhí)行指令程序的可編程處理器執(zhí)行,以便通過操作輸入數(shù)據(jù)和生成輸出來執(zhí)行本發(fā)明的功能。適當(dāng)?shù)奶幚砥靼?,舉例來說,通用和專用微處理器。通常,處理器將從只讀存儲器和/或隨機(jī)存取存儲器接收指令和數(shù)據(jù)。適合于實際嵌入計算機(jī)程序指令和數(shù)據(jù)的存儲設(shè)備包括所有形式的非易失性存儲器,包括例如半導(dǎo)體存儲器件、磁盤諸如內(nèi)部硬盤和可移動磁盤、磁光盤以及CD-ROM盤。上述的任何一個可通過ASIC(專用集成電路)來補(bǔ)充或納入ASIC中。
為提供與用戶的交互作用,能在具有用于向用戶顯示信息的顯示設(shè)備(諸如監(jiān)視器或LCD屏)和用戶能通過其向計算機(jī)系統(tǒng)提供輸入的鍵盤和定點設(shè)備(諸如鼠標(biāo)或跟蹤球)的計算機(jī)系統(tǒng)上實現(xiàn)本發(fā)明的方面。計算機(jī)系統(tǒng)能編程為提供圖形用戶界面,通過該圖形用戶界面,計算機(jī)程序與用戶交互作用。
根據(jù)特定的實施例描述了本發(fā)明。其他實施例在下述權(quán)利要求的范圍內(nèi)。例如,可按不同順序執(zhí)行本發(fā)明的步驟,但仍然能獲得所需結(jié)果。
權(quán)利要求
1.一種文件服務(wù)器系統(tǒng),包括兩個或多個節(jié)點,每個節(jié)點被配置成運行兩個或多個虛擬服務(wù)器,每個虛擬服務(wù)器具有對客戶機(jī)的虛擬接口和一個或多個文件系統(tǒng),作為獨占資源。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述虛擬接口包括一個虛擬IP地址。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述虛擬接口包括兩個或多個虛擬IP地址。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,客戶機(jī)使用NFS或CIFS協(xié)議訪問所述文件系統(tǒng)。
5.如權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括故障轉(zhuǎn)移計算機(jī)程序指令,所述指令被執(zhí)行以使得所述系統(tǒng)檢測第一節(jié)點的故障;以及使在所述第一節(jié)點上的每個虛擬服務(wù)器遷移到系統(tǒng)中的不同節(jié)點。
6.如權(quán)利要求5所述的系統(tǒng),其特征在于,每個虛擬服務(wù)器具有相關(guān)的故障轉(zhuǎn)移優(yōu)先級,并且所述故障轉(zhuǎn)移指令進(jìn)一步包括執(zhí)行下述操作的指令按它們各自的優(yōu)先級順序遷移虛擬服務(wù)器。
7.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述故障轉(zhuǎn)移指令進(jìn)一步包括執(zhí)行下述操作的指令識別標(biāo)記為在節(jié)點故障的情況下不進(jìn)行遷移的虛擬服務(wù)器,并在這樣識別的虛擬服務(wù)器處于出故障的節(jié)點上時阻止對其進(jìn)行遷移。
8.如權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括重路由計算機(jī)程序指令,所述指令被執(zhí)行以便使所述系統(tǒng)檢測連接到第一節(jié)點的第一子網(wǎng)中的故障,所述第一節(jié)點具有到第一客戶機(jī)的網(wǎng)絡(luò)連接;識別具有到所述第一客戶機(jī)的網(wǎng)絡(luò)連接以及通過一個不同的第二子網(wǎng)的到所述第一節(jié)點的連接的第二節(jié)點;響應(yīng)所檢測的故障,將所述第二節(jié)點用作路由器以便在所述第一客戶機(jī)和所述第一節(jié)點間路由數(shù)據(jù)。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,在所述第一子網(wǎng)中出故障之前,所述第一客戶機(jī)和所述第一節(jié)點間的連接是通過分配給所述第一節(jié)點上的端口的第一虛擬IP地址進(jìn)行的,所述重路由指令進(jìn)一步包括執(zhí)行下述操作的指令將所述第一虛擬IP地址遷移到與所述第二子網(wǎng)連接的第二節(jié)點上的端口。
10.如權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括故障轉(zhuǎn)移計算機(jī)程序指令,所述指令被執(zhí)行以便使得所述系統(tǒng)檢測第一節(jié)點上的物理端口的故障;檢測所述第一節(jié)點上的任何其他物理端口是否是好的;如果所述第一節(jié)點上有這種好的端口,則將與故障物理端口相關(guān)的所有虛擬IP地址遷移到所述第一節(jié)點上的好的物理端口上;以及如果所述第一節(jié)點上沒有這種好的端口,則將與故障物理端口相關(guān)的所有虛擬IP地址連同連接到這種虛擬IP地址上的所有虛擬服務(wù)器一起遷移到一個不同的第二節(jié)點上。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述故障物理端口處于第一子網(wǎng)上以及所述好的物理端口處于一個不同的第二子網(wǎng)上。
12.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述系統(tǒng)包括負(fù)載平衡計算機(jī)程序指令,所述指令被執(zhí)行以便使所述系統(tǒng)計算虛擬服務(wù)器負(fù)載在系統(tǒng)中除任何故障節(jié)點外的節(jié)點上的平衡分布;以及通過將一個或多個虛擬服務(wù)器從負(fù)載重的節(jié)點遷移到負(fù)載較輕的節(jié)點來執(zhí)行負(fù)載平衡。
13.如權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括計算機(jī)程序指令,所述指令被執(zhí)行以在第一節(jié)點上確定所述第一節(jié)點上的每個物理端口上的負(fù)載;以及在所述第一節(jié)點的物理端口中重新分布所述第一節(jié)點上的虛擬接口,以進(jìn)行所述物理端口上的負(fù)載平衡。
14.如權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括計算機(jī)程序指令,所述指令被執(zhí)行以使所述系統(tǒng)檢測第一節(jié)點不能訪問共享存儲單元;以及響應(yīng)于檢測到不能訪問所述共享存儲單元,將包含所述共享存儲單元上的文件系統(tǒng)的所有虛擬服務(wù)器遷移到能訪問所述存儲單元的替代節(jié)點上,如果在所述系統(tǒng)中存在這樣的替代節(jié)點的話。
15.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述負(fù)載平衡指令進(jìn)一步用來確定每個虛擬服務(wù)器上的負(fù)載。
16.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述負(fù)載平衡指令進(jìn)一步用來確定每個物理服務(wù)器上的負(fù)載。
17.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述節(jié)點包括主節(jié)點,并且負(fù)載平衡指令用來在所述主節(jié)點上執(zhí)行。
18.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述負(fù)載平衡指令用來從第一節(jié)點遷移第一虛擬服務(wù)器和第二虛擬服務(wù)器,所述第一虛擬服務(wù)器被遷移到所述系統(tǒng)的第二節(jié)點上并且所述第二虛擬服務(wù)器被遷移到所述系統(tǒng)的一個不同的第三節(jié)點上。
19.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述負(fù)載平衡指令用來平衡系統(tǒng)負(fù)載,作為故障轉(zhuǎn)移過程的一部分。
20.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述負(fù)載平衡指令用來與任何正發(fā)生的故障轉(zhuǎn)移無關(guān)地平衡系統(tǒng)故障。
21.如權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括計算機(jī)程序指令,所述指令被執(zhí)行以使所述系統(tǒng)在沒有用戶干預(yù)的情況下,檢測第一文件系統(tǒng)的文件系統(tǒng)退化;以及在均沒有用戶干預(yù)的情況下,響應(yīng)于檢測到退化而阻止訪問所述第一文件系統(tǒng),修復(fù)所述第一文件系統(tǒng),然后準(zhǔn)許訪問所述第一文件系統(tǒng)。
22.一種文件服務(wù)器系統(tǒng),包括一個節(jié)點,被配置具有一個虛擬服務(wù)器,所述虛擬服務(wù)器具有兩個或多個同時有效的虛擬IP地址。
23.如權(quán)利要求22所述的系統(tǒng),其特征在于,該節(jié)點被配置具有一個第二虛擬服務(wù)器,所述第二虛擬服務(wù)器具有兩個或多個其他的同時有效的虛擬IP地址。
24.一種文件服務(wù)器系統(tǒng),包括兩個或多個節(jié)點,每個節(jié)點被配置成運行具有虛擬IP地址的虛擬服務(wù)器,并且每個節(jié)點配置有兩個或多個物理端口;其特征在于,第一節(jié)點被進(jìn)一步配置成檢測第一節(jié)點上的物理端口上的故障;確定所述第一節(jié)點上的任何其他物理端口是否是好的;如果第一節(jié)點上有這種好的端口,則將與故障物理端口相關(guān)的所有虛擬IP地址遷移到所述第一節(jié)點上的好的物理端口上;以及如果所述第一節(jié)點上沒有這種好的端口,則將與故障物理端口相關(guān)的所有虛擬IP地址連同連接到這種虛擬IP地址上的所有虛擬服務(wù)器一起遷移到一個不同的第二節(jié)點上。
25.一種計算機(jī)程序產(chǎn)品,實際存儲在計算機(jī)可讀介質(zhì)或傳播信號上,用于在文件服務(wù)器系統(tǒng)集群的多個節(jié)點中執(zhí)行,包括指令,用來使可編程處理器檢測所述集群的第一節(jié)點的故障;以及使所述第一節(jié)點上的多個虛擬服務(wù)器中的每一個遷移到所述集群中的不同節(jié)點上。
26.如權(quán)利要求25的產(chǎn)品,進(jìn)一步包括執(zhí)行下述操作的指令按它們各自的優(yōu)先級順序遷移虛擬服務(wù)器。
27.如權(quán)利要求25的產(chǎn)品,進(jìn)一步包括執(zhí)行下述操作的指令識別標(biāo)識為在節(jié)點故障的情況下不進(jìn)行遷移的虛擬服務(wù)器,并且在這樣識別的虛擬服務(wù)器處于出故障的節(jié)點上時阻止對其進(jìn)行遷移。
28.如權(quán)利要求25的產(chǎn)品,進(jìn)一步包括執(zhí)行下述操作的指令檢測連接到第一節(jié)點的第一子網(wǎng)中的故障,所述第一節(jié)點具有到第一客戶端的網(wǎng)絡(luò)連接;識別具有到所述第一客戶機(jī)的網(wǎng)絡(luò)連接以及通過一個不同的第二子網(wǎng)的到所述第一節(jié)點的連接的第二節(jié)點;響應(yīng)所檢測的故障,將所述第二節(jié)點用作路由器以便在所述第一客戶機(jī)和所述第一節(jié)點間路由數(shù)據(jù)。
29.如權(quán)利要求25的產(chǎn)品,進(jìn)一步包括執(zhí)行下述操作的指令檢測所述集群的第一節(jié)點上的物理端口的故障;確定第一節(jié)點上的任何其它物理端口是否是好的;如果第一節(jié)點上有這種好的端口,則將與故障物理端口相關(guān)的所有虛擬IP地址遷移到所述第一節(jié)點上的好的物理端口;以及如果第一節(jié)點上沒有這種好的端口,則將與故障物理端口相關(guān)的所有虛擬IP地址連同連接到這種虛擬IP地址的所有虛擬服務(wù)器一起遷移到所述集群的一個不同的第二節(jié)點上。
30.如權(quán)利要求29的產(chǎn)品,其特征在于,在所述第一子網(wǎng)中出故障之前,所述第一客戶機(jī)和所述第一節(jié)點間的連接是通過分配給所述第一節(jié)點上的端口的第一虛擬IP地址進(jìn)行的,所述重路由指令進(jìn)一步包括執(zhí)行下述操作的指令將所述第一虛擬IP地址遷移到與所述第二子網(wǎng)連接的所述第二節(jié)點上的端口。
31.如權(quán)利要求25的產(chǎn)品,進(jìn)一步包括執(zhí)行下述操作的負(fù)載平衡指令確定由每個虛擬服務(wù)器產(chǎn)生的負(fù)載;計算虛擬服務(wù)器負(fù)載在服務(wù)器的除任何故障節(jié)點外的節(jié)點上的平衡分布;以及通過將一個或多個虛擬服務(wù)器從負(fù)載重的節(jié)點遷移到負(fù)載較輕的節(jié)點來執(zhí)行負(fù)載平衡。
32.如權(quán)利要求31所述的產(chǎn)品,其特征在于,所述節(jié)點包括主節(jié)點,并且所述負(fù)載平衡指令用來在所述主節(jié)點上執(zhí)行。
33.如權(quán)利要求31所述的產(chǎn)品,其特征在于,所述負(fù)載平衡指令用來從第一節(jié)點遷移第一虛擬服務(wù)器和第二虛擬服務(wù)器,所述第一虛擬服務(wù)器遷移到所述系統(tǒng)的第二節(jié)點并且所述第二虛擬服務(wù)器遷移到所述系統(tǒng)的一個不同的第三節(jié)點。
34.一種計算機(jī)程序產(chǎn)品,實際存儲在計算機(jī)可讀介質(zhì)或傳播信號上,用于在文件服務(wù)器系統(tǒng)集群的節(jié)點中執(zhí)行,其中,虛擬服務(wù)器具有與物理端口相關(guān)的虛擬IP地址,所述產(chǎn)品包括使可編程處理器執(zhí)行下述操作的指令檢測所述集群的第一節(jié)點上的物理端口的故障;確定所述第一節(jié)點上的任何其他物理端口是否是好的;如果第一節(jié)點上有這種好的端口,則將與故障物理端口相關(guān)的所有虛擬IP地址遷移到所述第一節(jié)點上的好的物理端口;以及如果第一節(jié)點上沒有這種好的端口,則將與故障物理端口相關(guān)的所有虛擬IP地址連同連接到這種虛擬IP地址的所有虛擬服務(wù)器一起遷移到一個不同的第二節(jié)點。
35.一種計算機(jī)程序產(chǎn)品,實際存儲在計算機(jī)可讀介質(zhì)或傳播信號上,用于在所述文件服務(wù)器節(jié)點中執(zhí)行,其中一個或多個虛擬服務(wù)器的每一個具有與物理端口相關(guān)的一個或多個虛擬IP地址,所述產(chǎn)品包括用來使可編程處理器執(zhí)行下述操作的指令檢測文件服務(wù)器節(jié)點上的物理端口的故障,所述節(jié)點具有兩個或多個物理端口,所述節(jié)點具有一個或多個虛擬服務(wù)器,每個虛擬服務(wù)器具有與物理端口相關(guān)的一個或多個IP地址;將所述文件服務(wù)器節(jié)點上的一個或多個其他物理端口識別為好的;以及將與故障物理端口相關(guān)的每個虛擬IP地址遷移到所述文件服務(wù)器節(jié)點上的好的物理端口。
36.如權(quán)利要求35所述的產(chǎn)品,進(jìn)一步包括用來執(zhí)行下述操作的指令確定所述第一節(jié)點上的每個物理端口的負(fù)載;以及當(dāng)將與故障物理端口相關(guān)的虛擬IP地址遷移到所述文件服務(wù)器節(jié)點的好的物理端口時,將所確定的負(fù)載用于好的物理端口上的負(fù)載平衡。
37.如權(quán)利要求35所述的產(chǎn)品,其特征在于所述文件服務(wù)器節(jié)點的每個物理端口位于多個子網(wǎng)的一個中;以及將虛擬IP地址優(yōu)先地遷移到與故障物理端口相同的子網(wǎng)中的好的物理端口。
38.一種文件服務(wù)器節(jié)點,包括兩個或多個物理端口;所述節(jié)點被配置成運行兩個或多個虛擬服務(wù)器,每個虛擬服務(wù)器具有到客戶機(jī)的虛擬接口和一個或多個文件系統(tǒng),作為獨占資源,每個虛擬接口包括虛擬IP地址;所述節(jié)點被進(jìn)一步配置成檢測第一物理端口的故障,確定所述節(jié)點的哪個或哪些其它物理端口是健康的,以及將與故障物理端口相關(guān)的所有虛擬IP地址遷移到所述第一節(jié)點的好的物理端口。
39.如權(quán)利要求38所述的文件服務(wù)器節(jié)點,進(jìn)一步配置成確定每個物理端口上的負(fù)載;以及當(dāng)將與故障物理端口相關(guān)的虛擬IP地址遷移到節(jié)點的好的物理端口時,將所確定的負(fù)載用于好的物理端口上的負(fù)載平衡。
40.如權(quán)利要求38所述的文件服務(wù)器節(jié)點,其特征在于所述文件服務(wù)器節(jié)點的每個物理端口位于多個子網(wǎng)的一個中;以及將虛擬IP地址優(yōu)先地遷移到與故障物理端口相同的子網(wǎng)中的好的物理端口。
全文摘要
在服務(wù)器系統(tǒng)中提供高可用性的系統(tǒng)和方法,包括計算機(jī)程序產(chǎn)品。在一種實現(xiàn)中,服務(wù)器系統(tǒng)是兩個或多個自主服務(wù)器節(jié)點的集群,每個運行一個或多個虛擬服務(wù)器。節(jié)點出故障時,將其虛擬服務(wù)器遷移到一個或多個其他節(jié)點上。節(jié)點和客戶機(jī)間的連接性基于虛擬IP地址,其中每個虛擬服務(wù)器具有一個或多個虛擬IP地址。虛擬服務(wù)器能被指定故障轉(zhuǎn)移優(yōu)先級,并在故障轉(zhuǎn)移中可在較低優(yōu)先級服務(wù)器前遷移較高優(yōu)先級的虛擬服務(wù)器。通過將虛擬服務(wù)器從故障節(jié)點分配到多個不同節(jié)點,能提供負(fù)載平衡。當(dāng)節(jié)點中的端口出故障時,節(jié)點能將虛擬IP地址從故障節(jié)點重新分配給節(jié)點上的其他端口直到不存在好的端口為止,僅在此時才將虛擬服務(wù)器遷移到另一節(jié)點或多個節(jié)點。
文檔編號G06F13/00GK1554055SQ02817657
公開日2004年12月8日 申請日期2002年7月22日 優(yōu)先權(quán)日2001年7月23日
發(fā)明者奧瑪·M.·A·加德, 奧瑪 M. A 加德, 蘇班納, 卡迪克·蘇班納, R 瓦亞拉, 安南達(dá)·R·瓦亞拉, 哈利普拉薩德·杉姆甘, 拉薩德 杉姆甘, P. 博達(dá)斯, 艾莫德·P.·博達(dá)斯, K. 特利帕斯, 塔倫·K.·特利帕斯, S. 因德卡, 拉維·S.·因德卡, H. 勞, 科瑪·H.·勞 申請人:網(wǎng)絡(luò)裝置公司