用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng)和方法
【專利摘要】應(yīng)用程序?qū)嵗軌蜻M行虛擬化并在服務(wù)器集群上以容錯和負載均衡的方式運行,同時仍然還維持對公共數(shù)據(jù)池的訪問。對各應(yīng)用程序?qū)嵗M行實例化,以便在處理不同的虛擬互聯(lián)網(wǎng)協(xié)議地址的虛擬主機上運行。服務(wù)器集群環(huán)境內(nèi)的各節(jié)點均可具備一個或多個虛擬主機,其中,在服務(wù)器發(fā)生故障轉(zhuǎn)移之后,在不干擾所述虛擬主機上的應(yīng)用程序?qū)嵗那闆r下,可以將所述虛擬主機及其相關(guān)的虛擬互聯(lián)網(wǎng)協(xié)議地址重新定位到另一個服務(wù)器上。
【專利說明】用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng)和方法
[0001]相關(guān)申請
本申請涉及并要求2012年I月18日提交的美國臨時專利申請案第61/588011號以及2013年I月16日提交的美國專利申請案第13/743007號的優(yōu)先權(quán)權(quán)益,其全部內(nèi)容以引用的方式并入本文以便實現(xiàn)充分陳述本文之目的。
【技術(shù)領(lǐng)域】
[0002]本發(fā)明實施例一般涉及軟件虛擬化,更特別地涉及服務(wù)器集群中多個節(jié)點上的集群服務(wù)器應(yīng)用程序的虛擬化。
【背景技術(shù)】
[0003]服務(wù)器是一種專用于運行一種或多種服務(wù)以滿足網(wǎng)絡(luò)上其它計算機用戶的需求的物理計算機。換句話說,就所有意圖和目的而言,任何將資源共享至一個或多個客戶端進程的計算機化過程都是服務(wù)器。例如,通過操作系統(tǒng)將文件共享至客戶端的設(shè)備是文件服務(wù)器。因此,根據(jù)服務(wù)器所提供的計算服務(wù),服務(wù)器可以是數(shù)據(jù)庫服務(wù)器、文件服務(wù)器、郵件服務(wù)器、打印服務(wù)器、網(wǎng)絡(luò)服務(wù)器、游戲服務(wù)器或者某些其它類型的基于所提供服務(wù)的服務(wù)器。從硬件意義上來講,措辭“服務(wù)器”通常指的是用于托管網(wǎng)絡(luò)環(huán)境中需求量較大的軟件應(yīng)用程序的計算機模型。在某些情況下,這些特定功能的硬件是專業(yè)化的。換言之,服務(wù)器計算機具備不同于通用個人計算機的性能。
[0004]服務(wù)器集群是一組數(shù)量至少為兩個的獨立服務(wù)器,它們通過網(wǎng)絡(luò)彼此連接并作為單一系統(tǒng)進行管理,以便為客戶端實現(xiàn)較高的服務(wù)可用性。圖1A是相關(guān)領(lǐng)域中適當(dāng)技術(shù)人員已知的服務(wù)器集群環(huán)境的概括說明。如圖示出的描述中,四個服務(wù)器構(gòu)成了服務(wù)器集群100。這種情況下,服務(wù)器A 110、服務(wù)器B 120、服務(wù)器C 130以及服務(wù)器D 140直接經(jīng)由負載均衡器/路由器150連接。路由器150還用作訪問互聯(lián)網(wǎng)170和防火墻160的通路。
[0005]服務(wù)器集群的設(shè)計是使得該集群內(nèi)的服務(wù)器能一起工作,以便保護數(shù)據(jù)、在該集群內(nèi)的一個或多個服務(wù)器發(fā)生故障之后維持應(yīng)用程序和服務(wù)繼續(xù)運行、以及維持集群配置的一致性。服務(wù)器的群集相對于獨立服務(wù)器來說實現(xiàn)了若干有益的效果。其中一種重要的有益效果就是:在集群內(nèi)各服務(wù)器上運行的集群軟件自動檢測出應(yīng)用程序的故障或者該集群內(nèi)另一服務(wù)器的故障。在檢測到這類故障后,可以在仍然能運轉(zhuǎn)的服務(wù)器上終止并重啟發(fā)生了故障的應(yīng)用程序。因此,當(dāng)集群內(nèi)的一個計算機發(fā)生故障時,資源會進行重新定向,而工作負載會重新分配到該集群內(nèi)的另一計算機處。
[0006]圖1B是對圖1A所示的服務(wù)器集群的進一步示出,在圖1A中,服務(wù)器C 130已經(jīng)發(fā)生了故障。正如相關(guān)領(lǐng)域中適當(dāng)技術(shù)人員已知的那樣,服務(wù)器集群內(nèi)服務(wù)器的移除是利用了現(xiàn)有的故障轉(zhuǎn)移技術(shù)來終止并重啟該服務(wù)器集群內(nèi)另一服務(wù)器上與服務(wù)器C 130相關(guān)聯(lián)的應(yīng)用程序。然而,這樣處理的結(jié)果卻是,與服務(wù)器C相關(guān)聯(lián)的應(yīng)用程序必須采用新的主機和新的互聯(lián)網(wǎng)協(xié)議地址來進行重新實例化。
[0007]服務(wù)器集群的其它有益效果包括管理員檢查集群資源的狀態(tài)并相應(yīng)地平衡該集群內(nèi)不同服務(wù)器之間的工作負載以提高性能的能力。這種可管理性也為管理員提供了在不讓重要數(shù)據(jù)和應(yīng)用程序離線的情況下對集群內(nèi)的一個服務(wù)器進行更新的能力。可以理解的是,服務(wù)器集群是用于關(guān)鍵數(shù)據(jù)庫管理、文件與內(nèi)聯(lián)網(wǎng)數(shù)據(jù)共享、消息發(fā)送和一般業(yè)務(wù)應(yīng)用坐寸O
[0008]服務(wù)器集群具有各種形狀和大小,但是通常是非對稱集群或?qū)ΨQ集群。在非對稱集群中,備用服務(wù)器的存在僅僅是在另一服務(wù)器發(fā)生故障時接替該服務(wù)器。這種類型的集群實現(xiàn)了較高的服務(wù)可用性和服務(wù)可靠性,但是卻是以具有冗余和未使用容量為代價。備用服務(wù)器并未執(zhí)行有用的工作,而且能力上也是與主服務(wù)器相當(dāng)或者是更弱。在對稱服務(wù)器集群中,該集群內(nèi)的每個服務(wù)器都執(zhí)行了有用的工作,而且該集群內(nèi)的每個服務(wù)器對于特定應(yīng)用程序組來說都是主要主機。如果服務(wù)器發(fā)生了故障,那么剩余的服務(wù)器將繼續(xù)處理分配的應(yīng)用程序組并且從發(fā)生故障的服務(wù)器中挑選出新的應(yīng)用程序。對稱服務(wù)器集群的性價比更高,但是當(dāng)發(fā)生故障時,工作服務(wù)器上的附加負載同樣能夠使它們出現(xiàn)故障。
[0009]在各個服務(wù)器上均存在有各應(yīng)用程序的一個或多個實例。這些應(yīng)用程序的底層為數(shù)據(jù)庫引擎,如微軟處理結(jié)構(gòu)化查詢語言或T-SQL。T-SQL是一種專用編程語言,其設(shè)計來管理相關(guān)數(shù)據(jù)庫管理系統(tǒng)中的數(shù)據(jù)。T-SQL最初是建立在關(guān)系代數(shù)和元組關(guān)系演算的基礎(chǔ)上,其范圍包括數(shù)據(jù)插入、查詢、更新和刪除功能、模式創(chuàng)建與修改、以及數(shù)據(jù)存取控制。SQL的其它關(guān)系替代方案包括.QL、4D查詢語言、Datalog、基于URL的查詢方法、IBM業(yè)務(wù)系統(tǒng)
12、ISBL, JPQL、對象查詢語言、UnQL以及QBE等。
[0010]SQL是一種服務(wù)器將其用作為許多較大的自定義應(yīng)用程序的構(gòu)件的流行數(shù)據(jù)庫引擎。采用SQL服務(wù)器(或其它)所構(gòu)建的各應(yīng)用程序通常利用服務(wù)器名稱和互聯(lián)網(wǎng)協(xié)議地址與該數(shù)據(jù)庫引擎的單個實例進行通信。這樣,具有許多基于SQL服務(wù)器來訪問數(shù)據(jù)庫的應(yīng)用程序的服務(wù)器通常情況下必須運行相等數(shù)量的SQL服務(wù)器的實例。在大多數(shù)情況下,SQL服務(wù)器的各實例在服務(wù)器集群內(nèi)的單個節(jié)點上運行,同時各節(jié)點具有自己的名稱和地址。如果節(jié)點(服務(wù)器)發(fā)生故障,數(shù)據(jù)庫就無法再使用,直到系統(tǒng)在具有新地址與新名稱的新節(jié)點上恢復(fù)為止。如果該節(jié)點由于一個或多個應(yīng)用程序而承受較大負載時,那么數(shù)據(jù)庫與其它應(yīng)用程序的性能便會降低。
[0011]一般來說,存在有三種類型的服務(wù)器集群故障。第一種是應(yīng)用程序或服務(wù)故障。當(dāng)服務(wù)器上運行的應(yīng)用軟件不能正確執(zhí)行時,這類故障便會出現(xiàn)。第二種是系統(tǒng)或硬件故障。正如所揭示的那樣,這類故障與一個或多個服務(wù)器的硬件組件有關(guān)。例如,一個或多個CPU、驅(qū)動器、存儲器或電源發(fā)生故障。最后,在整個站點由于暴風(fēng)雨等自然事件或停電而不能如預(yù)期一樣運轉(zhuǎn)時,就會發(fā)生站點故障。處理各類故障的能力是服務(wù)器集群可靠性的關(guān)鍵所在。
[0012]因此,應(yīng)用程序從集群內(nèi)的一個服務(wù)器(S卩,機器)到另一服務(wù)器的故障轉(zhuǎn)移可以是對第一機器上的軟件或硬件故障做出的自動響應(yīng),或者,也可以由管理員手動發(fā)起。然而,除非應(yīng)用程序是“集群感知的”(即,設(shè)計有可以在集群環(huán)境中運行的知識),否則,故障轉(zhuǎn)移過程中就會出現(xiàn)問題。
[0013]現(xiàn)有的非集群感知型虛擬應(yīng)用程序(S卩,如SQL服務(wù)器的遺留應(yīng)用程序)的一個問題是:這類應(yīng)用程序假設(shè)當(dāng)前機器名稱是唯一的計算機名稱。因此,如果應(yīng)用程序?qū)C器名稱透露給了客戶端或?qū)⒃摍C器名稱寫入了其持久性配置信息中,那么,當(dāng)該應(yīng)用程序的故障轉(zhuǎn)移到具有不同機器名稱的機器上并在該機器上運行時,系統(tǒng)將不能正確運轉(zhuǎn)。舉例來說,電子郵件應(yīng)用程序?qū)⒆约旱臋C器名稱提供給網(wǎng)絡(luò)中與其相連的其它機器。如果應(yīng)用程序正在集群中運行并且服務(wù)器故障轉(zhuǎn)移至了另一機器,那么這個其它機器的名稱將不會是已經(jīng)提供給其它網(wǎng)絡(luò)機器的名稱,而且該電子郵件應(yīng)用程序也不會正確運行。
[0014]為了解決該缺陷,在現(xiàn)有技術(shù)中,傳統(tǒng)的應(yīng)用程序虛擬化平臺采用故障轉(zhuǎn)移集群技術(shù)。例如,Microsoft Windows?采用微軟故障轉(zhuǎn)移集群技術(shù)(“MSCS”)?。MSCS以及其他類似MSCS的產(chǎn)品使得一個或多個計算機能夠結(jié)合在一起,從而形成集群。然后,便能使得應(yīng)用程序經(jīng)由集群主機名稱或互聯(lián)網(wǎng)協(xié)議(“IP”)地址(而不是單獨的計算機名稱)來收聽并提供數(shù)據(jù)給客戶端。如果活動節(jié)點(計算機)發(fā)生故障,那么MSCS會將應(yīng)用程序重新定位到該集群內(nèi)的下一個可用節(jié)點上,以保持該應(yīng)用程序的功能。為了避免數(shù)據(jù)損壞并保證整個集群內(nèi)只有一個節(jié)點可以訪問文件系統(tǒng),采用的是新技術(shù)文件系統(tǒng)(“NTFS”)和小型計算機系統(tǒng)接口(“SCSI”)預(yù)留。然而,所缺乏的是在不采用MSCS與SCSI預(yù)留的情況下對集群環(huán)境中的應(yīng)用程序(比如,SQL服務(wù)器)進行虛擬化的能力。
[0015]相關(guān)領(lǐng)域內(nèi)的適當(dāng)技術(shù)人員將認識到的是,廣義的虛擬化是指對軟件和/或其上運行有其它軟件的硬件的模擬。這種模擬的環(huán)境常常稱為虛擬機(VM)。因此,虛擬機是對通常不同于目標(biāo)(真實)機器(其正在被模擬的位置)的機器(抽象的或真實的)的模擬。虛擬機可基于假想計算機的規(guī)格或者可以仿效真實世界計算機的計算機結(jié)構(gòu)和功能。目前存在有許多形式的虛擬化,主要由計算架構(gòu)層和虛擬化的組件來進行區(qū)分。這些虛擬化的組件可包括硬件平臺、操作系統(tǒng)(OS)、存儲裝置、網(wǎng)絡(luò)裝置或其它資源。
[0016]應(yīng)用程序或進程虛擬化可以視為是包括自動計算在內(nèi)的企業(yè)IT的總體趨勢的一部分。自動計算是一種IT環(huán)境能夠基于感知到的活動及效用計算來管理自身的場景,而在效用計算中,計算機處理能力被視為是客戶端可以僅在需要時付費使用的效用。虛擬化的通常目標(biāo)是在提高可擴展性和整體硬件資源利用的同時集中管理任務(wù)。這樣的并行度有助于減少開銷成本,而且也與涉及在同一 OS (組件)上運行若干程序的多任務(wù)處理有所區(qū)別。
[0017]硬件虛擬化或平臺虛擬化是指創(chuàng)建像具有操作系統(tǒng)的真實計算機一樣動作的虛擬機。這些虛擬機上所執(zhí)行的軟件與底層的硬件資源分開。例如,正在運行MicrosoftWindows的計算機可以作為看上去像具有Ubuntu Linux操作系統(tǒng)的計算機的虛擬機的主機;基于Ubuntu的軟件可以在該虛擬機上運行。
[0018]在硬件虛擬化中,主機是進行虛擬化的實際機器,而客機是虛擬機。措辭“主”和“客”用于將在物理機上運行的軟件與在虛擬機上運行的軟件加以區(qū)分。在主機硬件上創(chuàng)建虛擬機的軟件或固件有時稱為管理程序。
[0019]服務(wù)器集群環(huán)境的一個主要限制是不能在故障轉(zhuǎn)移期間對單獨的應(yīng)用程序進行管理。因此,所需要的是一種在不需要使用MSCS等技術(shù)的情況下對集群環(huán)境中的應(yīng)用程序(如SQL服務(wù)器)進行虛擬化的方法和系統(tǒng)。這也需要建立共享集群系統(tǒng),并且,在該共享集群系統(tǒng)中,集群內(nèi)的每個節(jié)點均具有連續(xù)的全讀和全寫權(quán)限,從而消除了對MSCS或SCSI預(yù)留的需要?,F(xiàn)有技術(shù)的這些和其它缺陷通過本發(fā)明的一個或多個實施例得以解決。
[0020]本發(fā)明的其他優(yōu)點和新穎特點將在下面的描述中部分地進行陳述,并在理解下面的說明書之后對于本發(fā)明的技術(shù)人員而言部分地變得更加明顯,或者可以從本發(fā)明的實施中獲知。本發(fā)明的優(yōu)點可以通過所附權(quán)利要求中特別指出的手段、組合、組成部分以及方法來實現(xiàn)和獲得。
【發(fā)明內(nèi)容】
[0021]下文通過舉例的方式公開了一種系統(tǒng)以及相關(guān)方法,該方法使得應(yīng)用程序?qū)嵗軌驅(qū)崿F(xiàn)虛擬化,并且能夠在服務(wù)器集群上以容錯和負載均衡的方式運行,但是仍然可以訪問公共數(shù)據(jù)池。服務(wù)器集群上應(yīng)用程序的虛擬化使得系統(tǒng)無論是托管在哪個物理節(jié)點上都能夠無縫并透明地運轉(zhuǎn)。一旦被虛擬化,應(yīng)用程序便通過“虛擬”端點(不同于本地主機名稱或互聯(lián)網(wǎng)協(xié)議地址的虛擬主機名稱或互聯(lián)網(wǎng)協(xié)議地址)來作出應(yīng)答并提供自己的數(shù)據(jù)。實例化的虛擬化應(yīng)用程序猶如是在獨立模式下運行一樣進行運轉(zhuǎn)和發(fā)揮作用。然而,盡管如此,該應(yīng)用程序仍然能夠從集群中的一個節(jié)點過渡到另一節(jié)點并繼續(xù)無縫運轉(zhuǎn)。
[0022]根據(jù)本發(fā)明的一個實施例,一種用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng)包括多個配置為服務(wù)器集群場的服務(wù)器。此外,集群內(nèi)的各個服務(wù)器包括本地監(jiān)控引擎、集群監(jiān)控引擎、主機引擎以及應(yīng)用程序引擎。而且,所述主機引擎還可操作地用以形成至少一個虛擬主機以及相關(guān)聯(lián)的虛擬互聯(lián)網(wǎng)協(xié)議地址。此外,所述用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng)包括應(yīng)用程序的至少一個實例,其配置為在各服務(wù)器處的一個或多個虛擬主機的其中一個虛擬主機上運行。
[0023]根據(jù)本發(fā)明的另一實施例,描述了一種虛擬化服務(wù)器集群應(yīng)用程序的方法。所述方法首先在服務(wù)器集群中形成至少一個虛擬主機。該虛擬主機存在于所述集群內(nèi)的節(jié)點上,而該節(jié)點包括有節(jié)點互聯(lián)網(wǎng)協(xié)議地址、本地監(jiān)控引擎、集群監(jiān)控引擎、主機引擎以及應(yīng)用程序引擎。緊接著是以下過程:對所述虛擬主機上的應(yīng)用程序進行實例化,其中,所述應(yīng)用程序與不同于所述節(jié)點互聯(lián)網(wǎng)協(xié)議地址的虛擬互聯(lián)網(wǎng)協(xié)議地址相關(guān)聯(lián)。
[0024]根據(jù)本發(fā)明的另一實施例,一種計算機可讀取存儲介質(zhì)實際包含的是由服務(wù)器集群內(nèi)的服務(wù)器所執(zhí)行的指令程序,其中,所述指令程序包括多個用于服務(wù)器集群應(yīng)用程序虛擬化的程序代碼。所述指令程序包括用于對從所述服務(wù)器集群內(nèi)其它節(jié)點處接收的請求進行管理的程序代碼,以及用于從用戶界面接收請求的程序代碼。所述指令程序還包括在所述服務(wù)器集群的各節(jié)點處建立一個或多個虛擬主機的代碼,其中,各虛擬主機包括虛擬互聯(lián)網(wǎng)協(xié)議地址。最后,所述指令程序還包括對所述一個或多個虛擬主機上的應(yīng)用程序進行實例化的代碼。
[0025]本公開中描述的以及以下詳述的特點和優(yōu)點并不是詳盡的。對相關(guān)領(lǐng)域的普通技術(shù)人員而言,許多其他的特點和優(yōu)點結(jié)合本文的附圖、說明書及其權(quán)利要求書將變得更加顯而易見。此外,應(yīng)注意的是,本說明書中所使用的語言主要是出于可讀性和指導(dǎo)性之目的來選擇的,并非用于描繪或限制本發(fā)明的主題。本發(fā)明主題的確定必須參考權(quán)利要求書進行。
【專利附圖】
【附圖說明】
[0026]參考以下結(jié)合附圖描述的一個或多個實施例,本發(fā)明上述的和其它的特點和目的以及取得方式將變得更加顯而易見,并且,也將更好地理解本發(fā)明,其中:
圖1A是現(xiàn)有技術(shù)中已知的服務(wù)器集群環(huán)境的概括框圖。
[0027]圖1B是圖1A中描述服務(wù)器故障和系統(tǒng)故障轉(zhuǎn)移的服務(wù)器集群環(huán)境的概括框圖。
[0028]圖2是根據(jù)本發(fā)明一個實施例的服務(wù)器集群應(yīng)用程序虛擬化框架的系統(tǒng)原理圖。
[0029]圖3是根據(jù)本發(fā)明的用于對服務(wù)器集群應(yīng)用程序進行虛擬化的一個方法實施例的流程圖。
[0030]圖4A-D示出了根據(jù)本發(fā)明一個實施例的服務(wù)器集群應(yīng)用程序虛擬化的進展性應(yīng)用。
[0031]這些附圖僅僅出于圖示的目的對本發(fā)明的實施例進行了說明。從下面的論述中,本領(lǐng)域的技術(shù)人員容易明白的是,在不脫離本文所述的本發(fā)明原理的情況下,可以采用本文所述的結(jié)構(gòu)和方法的替代實施例。
【具體實施方式】
[0032]下文將以舉例的方式對用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng)以及相關(guān)方法進行描述。計算機或服務(wù)器集群是指一組松散連接且共同工作的計算機。在許多方面,“集群”可視為單個機器。通常情況下,如圖1A所示,單獨的組件經(jīng)由本地網(wǎng)絡(luò)相互連接,而在本地網(wǎng)絡(luò)中,各計算機或節(jié)點運行自身的文件系統(tǒng)實例。這些文件系統(tǒng)和數(shù)據(jù)庫引擎充當(dāng)較大的自定義應(yīng)用程序的構(gòu)件,然而,如先前所述,各應(yīng)用程序通常與底層文件系統(tǒng)的單個實例進行通信。因此,具有多個應(yīng)用程序的環(huán)境必須維持系統(tǒng)文件的多個對應(yīng)實例,或者作為替代方案,將各實例化服務(wù)器限制至單個應(yīng)用程序。如果服務(wù)器(系統(tǒng))發(fā)生故障,那么必須重新創(chuàng)建各應(yīng)用程序及其對應(yīng)的底層文件系統(tǒng)的實例,并且,直到恢復(fù)完成之前,該應(yīng)用程序及其相關(guān)數(shù)據(jù)都不可用。同樣地,由單個應(yīng)用程序分配了較重任務(wù)的服務(wù)器可導(dǎo)致該應(yīng)用程序以及存在于底層文件系統(tǒng)的平行實例上的其他應(yīng)用程序的性能出現(xiàn)降低。本發(fā)明虛擬化或形成一個或多個虛擬主機,以提供容錯和負載均衡平臺,而借由該容錯和負載平臺訪問服務(wù)器集群上的公共數(shù)據(jù)池。虛擬主機上運行的虛擬應(yīng)用程序能夠使應(yīng)用程序在系統(tǒng)上進行無縫且透明地運行,無論該應(yīng)用程序的實際(物理)主機是在何處。根據(jù)本發(fā)明,一旦被虛擬化之后,應(yīng)用程序會通過不同于本地主機名稱或物理互聯(lián)網(wǎng)協(xié)議地址的虛擬端點(虛擬主機名稱和虛擬互聯(lián)網(wǎng)協(xié)議地址)進行通信。虛擬化的應(yīng)用程序猶如是在獨立模式下運行一樣在物理服務(wù)器上運轉(zhuǎn)和發(fā)揮作用,但仍然能夠從一個節(jié)點過渡到另一節(jié)點處并繼續(xù)運轉(zhuǎn)。
[0033]下面將結(jié)合附圖對本發(fā)明的實施例進行詳細描述。盡管已經(jīng)以一定的特殊性來描述并圖示了本發(fā)明,但是應(yīng)理解的是,本公開只是示例性的,在不脫離本發(fā)明的精神和范圍的前提下,本領(lǐng)域的技術(shù)人員能夠?qū)M件的組合和設(shè)置做出若干變化。本公開包括各種具體細節(jié)以幫助理解,但是這些具體細節(jié)都被視為只是示例性的。因此,本領(lǐng)域的技術(shù)人員應(yīng)該明白的是,在不脫離本發(fā)明的精神和范圍的前提下,能夠?qū)Ρ疚拿枋龅膶嵤├龀龈鞣N變化和修改。同樣,出于清楚和簡潔起見,省略了對已知功能和構(gòu)造的說明。
[0034]以下說明與權(quán)利要求書中所使用的術(shù)語和措辭并不限于書目含義,相反,其僅由發(fā)明人用于實現(xiàn)對本發(fā)明的清楚和一致的理解。因此,對本領(lǐng)域的技術(shù)人員而言應(yīng)顯而易見的是,下面說明的本發(fā)明的示例性實施例僅出于說明的目的,而不用于限制本發(fā)明,本發(fā)明應(yīng)由所附權(quán)利要求書及其等效物來進行限定。
[0035]如本文所用,任何對“一個實施例”或“實施例”的引用都是指,結(jié)合該實施例所述的特定元件、特點、結(jié)構(gòu)或特征包括在至少一個實施例中。在說明書不同地方出現(xiàn)的短語“在一個實施例中”并不一定都指同一個實施例。術(shù)語“大體上”是指所述的特征、參數(shù)或數(shù)值不必是精確獲得的,相反,可以在數(shù)量上出現(xiàn)偏差或變化,只要該數(shù)量不會對特征旨在實現(xiàn)的效果產(chǎn)生影響即可,其中包括:例如,本領(lǐng)域的技術(shù)人員已知的容錯、測量誤差、測量精度限制等其它因素。
[0036]本文使用的術(shù)語只是為了描述特定實施例,并不旨在對本發(fā)明加以限制。除非上下文另有明確說明,否則本文使用的單數(shù)形式“一”、“一個”和“所述”也旨在包括復(fù)數(shù)形式。因此,例如,“一個組件表面”包括一個或多個這種表面。
[0037]本文使用的術(shù)語“包括”、“包含”、“具有”或其任何其它變形旨在涵蓋非排他性的包含。例如,包括一系列元素的過程、方法、物品或設(shè)備并不一定只限于這些元素,也可以包括沒有清楚列出的其它元素或該過程、方法、物品或設(shè)備固有的其他元素。進一步地,除非另有明確說明,否則“或者”指的是包含性的“或者”,并非排他性的“或者”。例如,下列任意一項滿足條件A或B:A為真(或存在),且B為假(或不存在);A為假(或不存在),且B為真(或存在);以及A和B都為真(或存在)。
[0038]除非另有限定,否則本文使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語)具有與本發(fā)明所屬領(lǐng)域中普通技術(shù)人員的一般理解相同的意義。還應(yīng)理解的是,諸如常用字典中所定義的那些術(shù)語應(yīng)被理解為具有與本說明書的上下文和相關(guān)領(lǐng)域中的意義相一致的意義,并且除非像本文這樣定義,否則不會用理想化的或過于正式的含義來對這些術(shù)語進行解釋。出于簡潔和/或清楚的目的,公知的功能或構(gòu)造可以不用詳細說明。
[0039]還應(yīng)理解的是,當(dāng)一個元件被稱為“在……上”、“附接”至、“連接”至、“耦接”至、“接觸”或“安裝”在另一元件上時,該元件可以是直接在、附接至、連接至、耦接至另一元件上或接觸另一元件,或者,也可以存在中間元件。反之,當(dāng)一個元件被稱為,例如,“直接在……上”、“直接附接”至、“直接連接”至、“直接耦接”至或“直接接觸”另一元件時,則不存在中間元件。本領(lǐng)域的技術(shù)人員還將理解的是,對與另一特點“相鄰”設(shè)置的結(jié)構(gòu)或特點的引用可以具有與該相鄰特點重疊或置于該相鄰特點之下的部分。
[0040]為了實現(xiàn)本發(fā)明的目的,定義了下面的術(shù)語,以便更加清楚并避免任何混淆或誤解。
[0041]互聯(lián)網(wǎng)協(xié)議(IP)是主要的通信協(xié)議,用于采用該組通信協(xié)議在網(wǎng)絡(luò)上轉(zhuǎn)播數(shù)據(jù)報(也稱為網(wǎng)絡(luò)包)。它是普遍認為的最流行的廣域網(wǎng)協(xié)議棧,而且也因其最重要的協(xié)議通常被稱為TCP/IP。IP負責(zé)將數(shù)據(jù)包路由穿過網(wǎng)絡(luò)邊界,而且IP是互聯(lián)網(wǎng)協(xié)議組的互聯(lián)網(wǎng)層中的主要協(xié)議。為此,IP限定了對需要傳送的數(shù)據(jù)進行封裝的數(shù)據(jù)報結(jié)構(gòu),也限定了用于標(biāo)記數(shù)據(jù)報來源和目的地的尋址方法。
[0042]新技術(shù)文件系統(tǒng)(NTFS)是由微軟公司為操作系統(tǒng)的Windows系列(包括,例如Windows NT、Windows XP以及Windows Server)開發(fā)的標(biāo)準(zhǔn)專有文件系統(tǒng)。
[0043]小型計算機系統(tǒng)接口(SCSI)是一套在計算機與外圍設(shè)備之間進行物理連接并傳送數(shù)據(jù)的標(biāo)準(zhǔn)。SCSI標(biāo)準(zhǔn)定義了命令、協(xié)議以及電氣與光學(xué)接口。SCSI最常用于硬盤和磁帶驅(qū)動器。雖然并非所有的控制器都能操作所有的設(shè)備,但是SCSI能夠連接其它各種不同的設(shè)備,包括掃描器和CD驅(qū)動器。SCSI標(biāo)準(zhǔn)定義了用于特定外圍設(shè)備類型的命令集。作為這些類型中的其中一種,“未知”的存在是指,理論上它可以用作幾乎所有裝置的接口,但是其標(biāo)準(zhǔn)是非常實際的并且偏向商務(wù)需求。
[0044]微軟集群服務(wù)器軟件(MSCS)是一種軟件,其設(shè)計來使得服務(wù)器能夠作為計算機集群一起運行,并且能提供故障轉(zhuǎn)移和增強的應(yīng)用程序可用性,或者,在高性能計算(HPC)集群(在超級運算時)的情況下,提供能使服務(wù)器作為計算機集群一起運行的并行計算能力。
[0045]在面向?qū)ο蟮某绦蛟O(shè)計中,無論當(dāng)前是否執(zhí)行,實例(或?qū)嵗?都是指一個對象的出現(xiàn)或拷貝。同一類的實例共享相同的屬性集,但是,它們通常的區(qū)別在于那些屬性所包含的內(nèi)容。例如,“雇員”類別會描述該雇員類別的所有實例共有的屬性。為了正確完成任務(wù),雇員對象可以大體上都相似,但區(qū)別是在于如“名字”和“薪資”等屬性。對類別的描述會詳細說明這類屬性并且限定與該類別相關(guān)的操作或動作,比如“增加薪資”或“變更電話號碼”。之后,就可以用名字=“ Jane Doe”來談?wù)撛摴蛦T對象的一個實例,而用名字=“ JohnDoe”來談?wù)撛摴蛦T對象的另一個實例。
[0046]同樣,在面向?qū)ο蟮某绦蛟O(shè)計中,類別是一種用作創(chuàng)建自身實例的藍圖的概念一稱為類別實例、類別對象、實例對象或者簡稱為對象。類別限定了能使這些類別實例具有狀態(tài)和行為的組成成員。數(shù)據(jù)域成員(成員變量或?qū)嵗兞?能使類別對象保持狀態(tài)。其它種類的成員,尤其是方法,能實現(xiàn)類別對象的行為。類別實例具有相關(guān)類別的類型。
[0047]本發(fā)明的一個方面包括框架,在該框架上,在不使用現(xiàn)有故障轉(zhuǎn)移集群技術(shù)或類似產(chǎn)品的情況下,能夠?qū)?jié)點上存在的應(yīng)用程序的實例進行虛擬化。根據(jù)本發(fā)明的一個實施例,框架建立在始終為集群中每個節(jié)點提供全讀和全寫權(quán)限的共享集群文件系統(tǒng)上。此夕卜,不需要MSCS (或類似產(chǎn)品)和SCSI預(yù)留來管理對文件系統(tǒng)的訪問。因此,應(yīng)用程序可以進行虛擬化,并且可以在集群內(nèi)的任意節(jié)點上快速地實現(xiàn)上線。
[0048]圖2是根據(jù)本發(fā)明一個實施例的能實現(xiàn)集群感知應(yīng)用程序虛擬化的服務(wù)器集群的各節(jié)點上的組件的概況邏輯圖。除此之外,根據(jù)本發(fā)明的一個實施例,服務(wù)器集群內(nèi)的各節(jié)點包括集群監(jiān)控引擎220、本地監(jiān)控引擎210、主機引擎230以及應(yīng)用程序引擎240。在本發(fā)明的其它實施例中,各節(jié)點上還包括其他的組件,比如健康監(jiān)控器250、注冊表監(jiān)控器260和應(yīng)用程序安裝器280。各節(jié)點還包括故障轉(zhuǎn)移策略270以及各種用戶界面285或客戶端,借由用戶界面285或客戶端,解決方案圖示軟件可以獲取服務(wù)器集群的狀態(tài)并做出配置變化。如圖2所示,客戶端285經(jīng)由用于發(fā)送命令、響應(yīng)和事件的線路協(xié)議與本地監(jiān)控引擎210進行通信。
[0049]根據(jù)本發(fā)明的一個實施例,本地監(jiān)控引擎210負責(zé)接收來自用戶界面285的請求并將請求轉(zhuǎn)發(fā)至主機引擎230和集群監(jiān)控引擎220。本地監(jiān)控引擎210還包括客戶端管理器,其處理進入的客戶端請求并將這些請求傳送到處理引擎以便保持客戶端連接。處理引擎通過將請求轉(zhuǎn)發(fā)至主機引擎230和/或集群監(jiān)控引擎220來解析并執(zhí)行客戶端請求。本地監(jiān)控引擎210還包括同步管理器,其保持整個集群上的狀態(tài)和配置文件的同步。因此,當(dāng)用戶界面285接收到命令而添加或形成虛擬主機時,同步管理器將該信息轉(zhuǎn)播至集群監(jiān)控引擎,從而可以更新其它節(jié)點上的配置文件。
[0050]集群監(jiān)控引擎220是服務(wù)器集群內(nèi)其它節(jié)點之間通信的主要裝置。集群監(jiān)控引擎負責(zé)接收來自其它集群監(jiān)控器的請求并將其轉(zhuǎn)發(fā)至各節(jié)點處的本地監(jiān)控引擎。集群監(jiān)控引擎還負責(zé)在節(jié)點加入或離開服務(wù)器集群時發(fā)起并管理故障轉(zhuǎn)移和故障轉(zhuǎn)移策略。在本發(fā)明的一個實施例中,集群監(jiān)控引擎通過寫下系統(tǒng)服務(wù)守護進程來完成該任務(wù)。此外,還要求集群監(jiān)控引擎通過采用集群協(xié)調(diào)器來協(xié)調(diào)集群內(nèi)所有可用節(jié)點之間的所有動作。集群監(jiān)控引擎還包括同步管理器,其保持集群上的狀態(tài)和配置文件的同步并且與本地監(jiān)控引擎210的同步管理器一起工作。存儲管理器與集群共享文件系統(tǒng)進行界面連接并維持集群成員列表,從而使各節(jié)點維持整個服務(wù)器集群的最新文件列表。最后,集群監(jiān)控引擎220包括執(zhí)行故障轉(zhuǎn)移和故障恢復(fù)策略的策略管理器。
[0051]服務(wù)器集群的各節(jié)點還包括主機引擎230,其負責(zé)建立并維持虛擬主機和虛擬互聯(lián)網(wǎng)協(xié)議地址。主機引擎230由本地監(jiān)控引擎210調(diào)用后,對特定請求加以處理以創(chuàng)建虛擬主機,并在創(chuàng)建完成之時退出。由此,主機引擎230包括維持并管理虛擬主機列表的虛擬主機管理器以及管理虛擬互聯(lián)網(wǎng)協(xié)議地址訂閱的互聯(lián)網(wǎng)地址管理器。
[0052]本地監(jiān)控引擎210還與應(yīng)用程序引擎240通信。應(yīng)用程序引擎240負責(zé)建立并管理應(yīng)用程序,如SQL服務(wù)器(或其它虛擬化的應(yīng)用程序)。與主機引擎230 —樣,應(yīng)用程序引擎240響應(yīng)于請求而被本地監(jiān)控引擎210調(diào)用。一旦應(yīng)用程序被實例化,應(yīng)用程序引擎240便退出。如圖2所示,應(yīng)用程序引擎包括維持并管理各實例的數(shù)據(jù)庫文件的數(shù)據(jù)庫管理器。注冊表管理器還維持并管理各虛擬化實例的注冊表值,而管理并維持實例配置的實例管理器存儲在各磁盤上。最后,集成管理器利用注冊表監(jiān)控引擎和健康監(jiān)控引擎來處理實例注
ΠΠ
/ttr O
[0053]在本發(fā)明的另一實施例中,服務(wù)器集群的各節(jié)點還包括健康監(jiān)控器250和注冊表監(jiān)控器260。健康監(jiān)控器負責(zé)監(jiān)控應(yīng)用程序的各實例的健康并發(fā)送故障轉(zhuǎn)移或故障恢復(fù)事件的信號。健康監(jiān)控器作為系統(tǒng)服務(wù)守護進程運行,并且在用于遠程程序請求的特定通信協(xié)議上進行監(jiān)聽。健康監(jiān)控引擎250包括處理來自本地監(jiān)控引擎210的進入請求并維持這些請求的注冊列表的進程管理器。它還包括基于注冊策略對服務(wù)健康和其它事件進行監(jiān)控的服務(wù)監(jiān)視器。當(dāng)需要時,健康監(jiān)控引擎250在需要重新配置集群時調(diào)用故障轉(zhuǎn)移工具270。故障轉(zhuǎn)移工具和策略存在于故障轉(zhuǎn)移儲存庫270內(nèi),而該故障轉(zhuǎn)移儲存庫270與本地監(jiān)控引擎210進行通信并相應(yīng)地與集群監(jiān)控引擎220進行通信。
[0054]與應(yīng)用程序引擎240通信的注冊表監(jiān)控器260監(jiān)控注冊表的變化,并且維持這些變化到非易失性存儲器。注冊表監(jiān)控器也作為用于其他遠程過程請求的系統(tǒng)服務(wù)守護進程來運行。注冊表監(jiān)控器的職責(zé)包括:處理進入請求并維持注冊列表、以及基于所建立的注冊策略執(zhí)行注冊表注冊請求和事件。
[0055]通過連接監(jiān)控器引擎,特別是連接監(jiān)控器守護進程,客戶端應(yīng)用程序下發(fā)管理命令給后端組件,并且發(fā)送具體格式化的命令給各節(jié)點的其它組件和服務(wù)器集群內(nèi)的其它節(jié)點。此類客戶端應(yīng)用程序也可接收命令回復(fù),并且,通過相同連接命令的異步狀態(tài)消息通常是作為類似于互聯(lián)網(wǎng)RFC 1832中描述的XDR格式的二進制數(shù)據(jù)流來進行傳送的。本發(fā)明的另一個特點是能夠發(fā)送并接收集群環(huán)境的狀態(tài)性警報。狀態(tài)性警報表示集群內(nèi)某一處正在發(fā)生的狀態(tài),例如,可訪問節(jié)點或不工作節(jié)點。通過發(fā)送單個狀態(tài)消息給集群能夠增強、修改或降低警報。由于能夠連接組件(節(jié)點)并斷開組件(節(jié)點)的連接,因此,可以突出若干警報以作為連接集群的新節(jié)點。例如,如果一個節(jié)點崩潰,那么增強無法訪問節(jié)點警報。如果是新節(jié)點連接幾秒鐘之后,那么,將不會從該無法訪問節(jié)點警報處接收狀態(tài)消息,也不能在屏幕上顯示該消息或?qū)⒃撓魉徒o用戶。為了解決該問題,狀態(tài)中繼網(wǎng)絡(luò)內(nèi)的各組件必須以內(nèi)存中小型警報數(shù)據(jù)庫的形式保留住最近的狀態(tài)性增強警報。當(dāng)新計算機與狀態(tài)中繼網(wǎng)絡(luò)連接時,將整個警報數(shù)據(jù)庫轉(zhuǎn)播到新的對等數(shù)據(jù)庫,正如剛剛產(chǎn)生警報一樣。健康監(jiān)控器的一個作用是接收并分析警報?;谒邮盏降木瘓螅】当O(jiān)控器可配置為執(zhí)行特定的動作。這些動作通過策略進行配置,而這些策略通常是針對各個類型的警報。通常,具體的細節(jié)包括一組建立為在警報增強時發(fā)生的預(yù)定行動。
[0056]本發(fā)明(通常參考圖2)建立了用于應(yīng)用程序虛擬化的系統(tǒng)。除此之外,在服務(wù)器集群的各節(jié)點上,本地監(jiān)控引擎與集群監(jiān)控引擎和主機引擎進行通信,以形成一個或多個環(huán)境,而在該一個或多個環(huán)境上可以形成虛擬版本的應(yīng)用程序。各虛擬應(yīng)用程序均位于具有唯一主機名稱和IP地址的虛擬主機上。在發(fā)生故障轉(zhuǎn)移或故障恢復(fù)這些情況后,基于建立的故障轉(zhuǎn)移策略將虛擬主機及其相關(guān)虛擬應(yīng)用程序重新定位到新節(jié)點上。一旦重新定位,虛擬主機的新實例具有與先前版本相同的名稱和IP地址,因而,從應(yīng)用程序的角度來看,對系統(tǒng)的訪問是無縫的。
[0057]本發(fā)明利用了集群共享文件系統(tǒng),其中,集群內(nèi)的每個服務(wù)器都可以從磁盤的相同區(qū)塊處進行讀取或?qū)懭?。在沒有SCSI預(yù)留強加的約束的情況下,可以快速、輕易并有效地實現(xiàn)虛擬化應(yīng)用程序在集群內(nèi)任意服務(wù)器上的上線。而且,對于任何支持“共享一切”架構(gòu)的應(yīng)用程序來說,本發(fā)明可以擴展為:為應(yīng)用程序提供更便宜且更有效的負載均衡平臺。
[0058]為了更好地理解本發(fā)明的復(fù)雜性,將對下列示例加以考慮。在一個示例(通常參考圖2)中,本地監(jiān)控引擎210與主機引擎230進行通信,以建立虛擬主機和虛擬IP地址并將其與本地服務(wù)器綁定。然后主機引擎230與應(yīng)用程序引擎240進行通信以便對選擇的應(yīng)用程序的實例(在本示例中)處理并轉(zhuǎn)換成與虛擬主機綁定的集群應(yīng)用程序。在本發(fā)明的上下文中,集群應(yīng)用程序是一種與僅僅知曉其底層主機的應(yīng)用程序截然相反的集群感知型應(yīng)用程序?;氐竭@個示例中,本地監(jiān)控引擎210也與集群監(jiān)控引擎220進行通信,以確保集群內(nèi)所有服務(wù)器都知道新的集群應(yīng)用程序,從而使得它們能正確地加入集群仲裁。相似地,集群監(jiān)控器220監(jiān)控在該集群內(nèi)其它節(jié)點處進行實例化的其它應(yīng)用程序。為了給應(yīng)用程序提供高可用性,應(yīng)用程序引擎240利用注冊表監(jiān)控器260和健康監(jiān)控270注冊應(yīng)用程序。
[0059]當(dāng)應(yīng)用程序的本地注冊碼發(fā)生變化時,注冊表監(jiān)控器260會保留對共享磁盤的改變。這樣就保證了整個集群將會一直具有注冊表單元的最新圖像。如果應(yīng)用程序服務(wù)發(fā)生故障或在集群內(nèi)的其中一個活動服務(wù)器上離線(即,節(jié)點發(fā)生故障)時,健康監(jiān)控器250利用本地監(jiān)控引擎210結(jié)合故障轉(zhuǎn)移策略儲存庫270發(fā)送故障轉(zhuǎn)移信號。根據(jù)本發(fā)明的一個實施例,故障轉(zhuǎn)移策略指出在發(fā)生節(jié)點故障時應(yīng)用程序的特定示例的位置。一旦標(biāo)識了目標(biāo)節(jié)點,便可啟動請求。
[0060]本地監(jiān)控引擎210與集群監(jiān)控引擎220進行通信,以便將請求轉(zhuǎn)發(fā)至其它遠程集群監(jiān)控引擎。各遠程集群監(jiān)控引擎依次將該請求轉(zhuǎn)發(fā)給它們各自的本地監(jiān)控引擎。遠程本地監(jiān)控引擎然后將該請求傳到主機引擎和應(yīng)用程序引擎處。如果該遠程服務(wù)器是虛擬主機的下一個可用服務(wù)器(由故障轉(zhuǎn)移策略來指定),那么遠程主機引擎開始將之前的虛擬主機和虛擬IP與其新的網(wǎng)絡(luò)接口相綁定,而遠程應(yīng)用程序引擎開始處理該應(yīng)用程序并利用遠程注冊表和健康監(jiān)控器對其進行注冊。
[0061]本公開中所述的以及以下詳述的特征和優(yōu)點并不是詳盡的。對相關(guān)領(lǐng)域的普通技術(shù)人員來說,許多其他的特征和優(yōu)點結(jié)合本文的附圖、說明書以及權(quán)利要求書將會變得更加明顯。此外,應(yīng)該注意的是,本說明書中所使用的語言主要是出于可讀性和指導(dǎo)性目的來選擇的,可以不用于描述或限制本發(fā)明的主題。對本發(fā)明主題的確定必須參考權(quán)利要求書。
[0062]根據(jù)本發(fā)明的一個或多個實施例對應(yīng)用程序進行虛擬化可使得應(yīng)用程序無縫并透明地工作,不管該應(yīng)用程序?qū)嶋H的主機在何處或在哪個系統(tǒng)上(即在物理或虛擬服務(wù)器上)。虛擬化應(yīng)用程序(如SQL服務(wù)器)猶如在獨立模式下運行一樣進行運轉(zhuǎn)和發(fā)揮作用。根據(jù)本發(fā)明,利用建立在集群共享文件系統(tǒng)上的合適的故障轉(zhuǎn)移引擎,虛擬化的應(yīng)用能續(xù)能夠在集群/云端基礎(chǔ)架構(gòu)內(nèi)的節(jié)點間過渡并繼續(xù)運轉(zhuǎn)。此外,多個應(yīng)用程序共享單個存儲池,從而消除了預(yù)先為各集群應(yīng)用程序分配單獨存儲仲裁的需要。本發(fā)明提供一種應(yīng)用程序整合平臺,其中,應(yīng)用程序的多個實例能夠堆疊在單個服務(wù)器上。
[0063]以下還對流程圖進行了說明,這些流程圖示出了可用于形成服務(wù)器集群應(yīng)用程序虛擬化的方法的示例。在以下描述中,將會理解的是,流程圖的各個框以及流程圖的框的組合能夠通過計算機程序指令來實現(xiàn)。這些計算機程序指令可以加載在計算機或其它可編程設(shè)備上以產(chǎn)生機器,從而使得在計算機或其它可編程設(shè)備上執(zhí)行的指令建立起用于實現(xiàn)流程圖框或者框內(nèi)指明的功能的裝置。這些計算機程序指令也可以儲存在能夠指導(dǎo)計算機或其它可編程設(shè)備以特定方式運轉(zhuǎn)的計算機可讀取存儲器中,從而使得存儲在該計算機可讀取存儲器的指令產(chǎn)生包括實現(xiàn)流程圖框或者框內(nèi)指明的功能的指令裝置的制品。計算機程序指令也可以加載在計算機或其它可編程設(shè)備上,以使得一系列可操作步驟在計算機內(nèi)或其它可編程設(shè)備上執(zhí)行,進而產(chǎn)生計算機實施進程,從而使得在計算機或其它可編程設(shè)備上執(zhí)行的指令提供實現(xiàn)流程圖框或者框內(nèi)指明的功能的步驟。
[0064]因此,流程圖的框支持用于實施指定功能的裝置的組合以及用于實施指定功能的步驟的組合。還將理解的是,流程圖的各個框和流程圖的框的組合能夠通過專用的基于硬件的計算機系統(tǒng)來實施。該專用的基于硬件的計算機系統(tǒng)用于實施指定功能或步驟,或者實施專用硬件與計算機指令的組合。
[0065]現(xiàn)在轉(zhuǎn)向圖3,可以看到根據(jù)本發(fā)明一個實施例的對服務(wù)器集群中的應(yīng)用程序進行虛擬化的流程圖。該過程以請求對應(yīng)用程序的實例進行虛擬化310作為開始305。該請求不僅在接收節(jié)點的組件中傳送,而且還轉(zhuǎn)發(fā)315至服務(wù)器集群內(nèi)的其它各個集群監(jiān)控器/節(jié)點。對應(yīng)用程序的實例進行虛擬化的請求同時發(fā)送到應(yīng)用程序引擎和主機引擎。在到達主機引擎之后,該請求引起虛擬主機的增加330以及虛擬互聯(lián)網(wǎng)協(xié)議地址的增加335。因此,應(yīng)用程序引擎增加了應(yīng)用程序的實例320,并發(fā)起查詢340,以確定該節(jié)點是否是應(yīng)用程序?qū)嵗闹饕?jié)點。
[0066]如果接收該請求的節(jié)點是主要節(jié)點340,那么將與該應(yīng)用程序相關(guān)聯(lián)的數(shù)據(jù)庫復(fù)制到存儲區(qū)網(wǎng)絡(luò)上350。其后,更新實例的注冊表355,并且在整個集群環(huán)境內(nèi)更新實例服務(wù)360。對實例服務(wù)器名進行更新365以與虛擬主機的名稱相匹配,而該名稱正是與該實例相關(guān)聯(lián)的互聯(lián)網(wǎng)協(xié)議地址;創(chuàng)建該實例的別名370,并將該別名向健康監(jiān)控器注冊375。同時也向注冊表監(jiān)控器進行注冊380,并且啟動應(yīng)用程序?qū)嵗?5,而且,在實例化完全的情況下,更新應(yīng)用程序配置345,并將新應(yīng)用程序的存在傳達給剩余的服務(wù)器集群,結(jié)束該過程 395。
[0067]相關(guān)領(lǐng)域的技術(shù)人員將知道的是,本說明書的某些部分是以對數(shù)據(jù)進行運算的算法或符號表示來呈現(xiàn)的,而這些數(shù)據(jù)是作為比特或二進制數(shù)字信號存儲在機器存儲器匕如,計算機存儲器)上。這些算法或符號表示是數(shù)據(jù)處理領(lǐng)域內(nèi)普通技術(shù)人員用于將他們工作內(nèi)容傳遞給本領(lǐng)域其它技術(shù)人員的技術(shù)示例。本文所使用的“算法”或“過程”是一系列通向預(yù)期結(jié)果的前后一致的運算或類似處理。在本文的上下文中,算法和操作涉及對信息元素的處理。通常,但并非必要,這類元素可采取能夠由機器進行存儲、存取、傳輸、結(jié)合、t匕較等操作的電信號、磁信號或光信號的形式。有時候,主要是出于共同使用的目的,采用措辭“數(shù)據(jù)”、“內(nèi)容”、“比特”、“數(shù)值”、“元素”、“符號”、“字符”、“術(shù)語”、“數(shù)字”、“數(shù)詞”、“字”等來指代這類信號是比較方便的。但是,這些特定的措辭只是為了方便標(biāo)記,并且也與適當(dāng)?shù)男畔⒃仃P(guān)聯(lián)。
[0068]除非另有特別說明,否則,這里使用“處理”、“運算”、“計算”、“確定”、“表示”、“顯示”等措辭所進行的論述可能指的是對在一個或多個存儲器(如易失性存儲器、非易失性存儲器或其組合)、寄存器或其它接收、存儲、發(fā)送或顯示信息的機器組件內(nèi)以物理(如電子的、磁性的或光學(xué)的)量來表示的數(shù)據(jù)進行操作或轉(zhuǎn)換的機器的動作或過程。
[0069]同樣地,模塊、管理器、功能、系統(tǒng)、引擎、圖層、特點、屬性、方法等其它方面的特定命名和劃分并不是強制性的或有意義的,并且,實施本發(fā)明或其特點的機制可以有不同的名稱、劃分和/或格式。此外,對于相關(guān)領(lǐng)域的普通技術(shù)人員來說應(yīng)該顯而易見的是,本發(fā)明的模塊、管理器、功能、系統(tǒng)、引擎、圖層、特點、屬性、方法等其它方面能夠作為軟件、硬件、固件或三者的任意組合來實現(xiàn)。當(dāng)然,無論本發(fā)明的組件是在何處作為軟件來實現(xiàn),該組件都能作為腳本、單獨的程序、較大程序的一部分、多個單獨腳本和/或程序、靜態(tài)或動態(tài)鏈接的程序庫、內(nèi)核可加載模塊、裝置驅(qū)動程序來實現(xiàn),和/或以任何計算機程序設(shè)計領(lǐng)域的技術(shù)人員現(xiàn)在或?qū)硎熘娜魏纹渌绞絹韺崿F(xiàn)。此外,本發(fā)明決不限于任何特定編程語言的實施,或者限于任何特定操作系統(tǒng)或環(huán)境。
[0070]為了更好地理解本公開中所呈現(xiàn)的概念以及明白本發(fā)明在服務(wù)器集群中的應(yīng)用,將對下列示例加以考慮。圖4A至4D呈現(xiàn)了根據(jù)本發(fā)明實施例的對服務(wù)器集群環(huán)境所進行的一系列描述,其中,在該服務(wù)器集群環(huán)境中,虛擬化的應(yīng)用程序處于一個或多個服務(wù)器上?,F(xiàn)在參考圖4A,其示出了一種集群服務(wù)器環(huán)境,該集群服務(wù)器環(huán)境包括多個以通信方式耦合在一起并進一步與整合的共享文件系統(tǒng)410進行通信的服務(wù)器421。服務(wù)器集群420通過集群管理器430來管理,并且依次與多個客戶端或用戶界面440進行通信。在本描述中,共享數(shù)據(jù)或整合的共享文件系統(tǒng)410由一系列存儲介質(zhì)415組成,比如存儲區(qū)域網(wǎng)或類似的系統(tǒng)。的確,存儲池可以是單個存儲陣列,或者可以由來自各第三方供應(yīng)商的存儲區(qū)域網(wǎng)絡(luò)陣列的組合組成。具有結(jié)束服務(wù)器集群420的各服務(wù)器可以是虛擬化服務(wù)器或者物理服務(wù)器。在本描述中,描述了 15個服務(wù)器,分別是42(^-420^要注意的是,由于本發(fā)明支持異構(gòu)服務(wù)器集群,所以本發(fā)明同樣適用于各種不同的服務(wù)器尺寸和類型。
[0071]圖4B示出了相同的服務(wù)器集群環(huán)境,其中,至少一個應(yīng)用程序與服務(wù)器集群內(nèi)的各個服務(wù)器相關(guān)聯(lián)。例如,服務(wù)器4201與3(^ I應(yīng)用程序4501相關(guān)聯(lián)。同理,服務(wù)器4205與交換應(yīng)用程序4505相關(guān)聯(lián)。由此可以看出整個服務(wù)器集群中應(yīng)用程序服務(wù)器的相似對應(yīng)關(guān)系。圖4B描繪出了一種典型的服務(wù)器集群環(huán)境,其中,各應(yīng)用程序位于每個服務(wù)器應(yīng)用程序的單個實例上。
[0072]根據(jù)本發(fā)明,服務(wù)器集群內(nèi)的各節(jié)點均包括各種組件,其中包括集群監(jiān)控引擎、本地監(jiān)控引擎以及主機引擎。這些組件與其他組件(如健康監(jiān)控器和注冊表監(jiān)控器)一起工作,以對特定節(jié)點以及集群環(huán)境內(nèi)的其它節(jié)點的整體健康狀況進行評估。通過構(gòu)建虛擬主機以及針對該主機的虛擬互聯(lián)網(wǎng)地址,能夠?qū)⒍鄠€應(yīng)用程序?qū)嵗胖迷趩蝹€物理服務(wù)器上,而不是出現(xiàn)單個實例必須存在于單個服務(wù)器上的典型情況。如果特定節(jié)點的健康狀況出現(xiàn)問題時,虛擬主機處理其自身互聯(lián)網(wǎng)協(xié)議地址并變得服務(wù)器集群感知以便自由地從整合的共享文件系統(tǒng)中存取數(shù)據(jù)的能力使得虛擬主機能夠從一個物理節(jié)點重新定位到另一個物理節(jié)點。
[0073]圖4C是服務(wù)器集群環(huán)境中一個或多個節(jié)點發(fā)生故障的示例。在這個具體示例中,有兩個服務(wù)器已經(jīng)認定是發(fā)生故障了的。出于維修目的,已經(jīng)故意將第一個服務(wù)器42013取下,正如覆蓋服務(wù)器的圖像的扳手465所示。同樣地,第二個服務(wù)器42014已經(jīng)通過健康監(jiān)控器認定是發(fā)生了故障460.在這兩種情況中,各服務(wù)器上的應(yīng)用程序?qū)嵗辉龠\行。根據(jù)本發(fā)明的一個實施例,存在有如下的故障轉(zhuǎn)移策略:在服務(wù)器發(fā)生故障的情況下,指定特定應(yīng)用程序的實例重新定位到另一節(jié)點上。針對本示例,考慮在第一個服務(wù)器42013上的SQL5應(yīng)用程序和SP 5應(yīng)用程序具有重新定位到4201(|上的故障轉(zhuǎn)移策略。同理,在發(fā)生故障的服務(wù)器42014上進行實例化的應(yīng)用程序EXCH 2具有重新定位到服務(wù)器42015上的故障轉(zhuǎn)移策略。
[0074]圖4D示出了根據(jù)預(yù)定故障轉(zhuǎn)移策略,已經(jīng)對位于正在維修的服務(wù)器上以及位于正處于故障中的服務(wù)器上的應(yīng)用程序?qū)嵗M行了重新定位。按照類似的方式,IT專業(yè)人士可以將某些服務(wù)器和服務(wù)器集群指定為處于閑置狀態(tài)或處于人為導(dǎo)致應(yīng)用程序故障的狀態(tài)下,該應(yīng)用程序可以在該服務(wù)器上進行實例化以遵循其預(yù)定的故障轉(zhuǎn)移策略。這樣處理可以將應(yīng)用程序?qū)嵗匦露ㄎ坏狡渌?wù)器上,以便更有效地利用服務(wù)器容量。根據(jù)本發(fā)明的一個實施例,這是通過對虛擬主機上的應(yīng)用程序進行實例化來實現(xiàn)的,同時,該虛擬主機帶有自身唯一的虛擬互聯(lián)網(wǎng)協(xié)議地址。通過這樣做,無論處于哪個物理服務(wù)器上,應(yīng)用程序的實例都保持了與整合的共享文件系統(tǒng)的無縫傳導(dǎo)。因此,圖4D示出了已經(jīng)對與許多物理服務(wù)器相關(guān)聯(lián)的應(yīng)用程序?qū)嵗M行了重新定位,以便在一個或多個服務(wù)器上堆疊多個應(yīng)用程序。如圖4D所示,通過這樣的處理,原來由十五個分別處于應(yīng)用程序中的物理服務(wù)器組成的服務(wù)器集群能夠整合成七個物理服務(wù)器,其中,應(yīng)用程序的多個實例堆疊在一個或多個服務(wù)器上。這樣,這種服務(wù)器集群應(yīng)用程序虛擬化使得IT專業(yè)人士能夠更有效地且更高性價比地管理服務(wù)器集群,并且,在從一個服務(wù)器移到另一個服務(wù)器時,避免或者最大程度地減少了因維修或計算機故障而引起的應(yīng)用程序再實例化的昂貴的故障停機時間。
[0075]下面概述了本發(fā)明的優(yōu)選實施例。在一個實施例中,一種用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng)包括:
多個配置為服務(wù)器集群的服務(wù)器,其中,該服務(wù)器集群內(nèi)的各服務(wù)器均包括本地監(jiān)控引擎、集群監(jiān)控引擎、主機引擎以及應(yīng)用程序引擎,其中,主機引擎可操作來形成一個或多個虛擬主機;以及
應(yīng)用程序的至少一個實例,其配置為在各服務(wù)器處的一個或多個虛擬主機的其中一個虛擬主機上運行。
[0076]一種用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng)的其它特征可包括:
其中,監(jiān)控引擎可操作來管理來自用戶界面和/或集群監(jiān)控引擎的進入請求;
其中,監(jiān)控引擎使得來自用戶界面的請求與集群監(jiān)控引擎同步;
其中,集群監(jiān)控引擎以通信方式耦合至服務(wù)器集群內(nèi)的各服務(wù)器,并且可操作來管理從服務(wù)器集群中的其它服務(wù)器處接收的請求; 其中,集群監(jiān)控引擎維持并執(zhí)行故障轉(zhuǎn)移策略;
其中,主機引擎可操作來為各虛擬主機創(chuàng)建虛擬互聯(lián)網(wǎng)協(xié)議地址;
其中,應(yīng)用程序引擎可操作來在虛擬主機上創(chuàng)建并維持應(yīng)用程序的至少一個實例;其中,應(yīng)用程序引擎將物理服務(wù)器上的應(yīng)用程序的至少一個實例轉(zhuǎn)換為與虛擬主機綁定的集群應(yīng)用程序;
其中,服務(wù)器集群內(nèi)的各服務(wù)器均還包括健康監(jiān)控器;
其中,健康監(jiān)控器可操作來監(jiān)控一組預(yù)定的應(yīng)用程序性能與系統(tǒng)需求;
其中,服務(wù)器集群內(nèi)的各服務(wù)器均還包括注冊表監(jiān)控器;以及其中,服務(wù)器集群內(nèi)的各服務(wù)器均與多個虛擬主機相關(guān)聯(lián)。
[0077]在另一優(yōu)選實施例中,一種用于服務(wù)器集群應(yīng)用程序虛擬化的方法包括:
在服務(wù)器集群內(nèi)的各節(jié)點上形成至少一個虛擬主機,其中,各節(jié)點均包括節(jié)點互聯(lián)網(wǎng)協(xié)議地址、本地監(jiān)控引擎、集群監(jiān)控引擎、主機引擎以及應(yīng)用程序引擎;以及
對虛擬主機上的應(yīng)用程序進行實例化,其中,該應(yīng)用程序與不同于所述節(jié)點互聯(lián)網(wǎng)協(xié)議地址的虛擬互聯(lián)網(wǎng)協(xié)議地址相關(guān)聯(lián)。
[0078]用于服務(wù)器集群應(yīng)用程序虛擬化的方法的其它特征可包括:
其中,監(jiān)控引擎管理來自用戶界面和/或集群監(jiān)控引擎的進入請求;
其中,集群監(jiān)控引擎管理從服務(wù)器集群中的其它節(jié)點處接收的請求;
其中,主機引擎創(chuàng)建一個或多個虛擬主機以及一個或多個虛擬互聯(lián)網(wǎng)協(xié)議地址;以及還包括:將虛擬主機及其虛擬互聯(lián)網(wǎng)協(xié)議地址和應(yīng)用程序從該服務(wù)器集群內(nèi)的一個節(jié)點傳送到另一個節(jié)點。
[0079]本發(fā)明的另一特點是一種計算機可讀取存儲介質(zhì),其實際包含了可由服務(wù)器集群內(nèi)的服務(wù)器執(zhí)行的指令程序,其中,該指令程序包括多個用于服務(wù)器集群應(yīng)用程序虛擬化的程序代碼。該指令程序包括:
用于對從服務(wù)器集群內(nèi)的其它節(jié)點處接收的請求進行管理的程序代碼;
用于從用戶界面接收請求的程序代碼;
用于在服務(wù)器集群的各節(jié)點處建立一個或多個虛擬主機的程序代碼;以及用于對一個或多個虛擬主機上的應(yīng)用程序進行實例化的程序代碼。
[0080]該指令程序的其它特征可包括:
其中,該指令程序還包括用于利用一個或多個虛擬主機來維持并執(zhí)行故障轉(zhuǎn)移策略的程序代碼;
其中,該指令程序還包括用于創(chuàng)建與一個或多個虛擬主機中的各個虛擬主機相關(guān)聯(lián)的虛擬互聯(lián)網(wǎng)協(xié)議地址的程序代碼;以及
其中,該指令程序還包括用于將應(yīng)用程序的實例耦合至虛擬主機的程序代碼。
[0081]盡管以上已經(jīng)結(jié)合了用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng)與方法來對本發(fā)明的原理進行描述,但是,應(yīng)清楚理解的是,上述描述只是示例性的,并不構(gòu)成對本發(fā)明范圍的限制。尤其應(yīng)該明白的是,上述公開所給出的啟示是建議相關(guān)領(lǐng)域的技術(shù)人員做出其它修改。這些修改可以包含本身已知的其它特征,也可以用作本文中已經(jīng)描述的特征的替換或增加。雖然在本申請中已經(jīng)將權(quán)利要求書論述為特定的特征組合,但是應(yīng)理解的是,本公開的范圍也包括任何新穎的特征、或者明確或隱含公開的特征的任何新穎組合、或者對相關(guān)領(lǐng)域的技術(shù)人員來說顯而易見的任何概述或修改,無論這些是否涉及與任何權(quán)利要求中當(dāng)前要求的發(fā)明相同的發(fā)明,以及是否緩解了本發(fā)明所面對的任意或全部的相同技術(shù)問題。因此,在本申請或由此導(dǎo)出的任何進一步申請的起訴期間,本申請保留了對這些特征和/或這些特征的組合制定新權(quán)利要求的權(quán)利。
【權(quán)利要求】
1.一種用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),包括: 多個配置為服務(wù)器集群的服務(wù)器,其中,所述服務(wù)器集群內(nèi)的各個服務(wù)器均包括本地監(jiān)控引擎、集群監(jiān)控引擎、主機引擎以及應(yīng)用程序引擎,其中,所述主機引擎可操作來形成一個或多個虛擬主機;以及 應(yīng)用程序的至少一個實例,其配置為在各服務(wù)器處的所述一個或多個虛擬主機的其中一個虛擬主機上運行。
2.如權(quán)利要求1所述的用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),其中,所述監(jiān)控引擎可操作來管理來自用戶界面和/或所述集群監(jiān)控引擎的進入請求。
3.如權(quán)利要求2所述的用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),其中,所述監(jiān)控引擎使得來自所述用戶界面的請求與所述集群監(jiān)控引擎同步。
4.如權(quán)利要求1所述的用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),其中,所述集群監(jiān)控引擎以通信方式耦合至所述服務(wù)器集群內(nèi)的各個服務(wù)器,并且可操作來管理從所述服務(wù)器集群中的其它服務(wù)器處接收的請求。
5.如權(quán)利要求1所述的用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),其中,所述集群監(jiān)控引擎維持并執(zhí)行故障轉(zhuǎn)移策略。
6.如權(quán)利要求1所述的用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),其中,所述主機引擎可操作來為各虛擬主機創(chuàng)建虛擬互聯(lián)網(wǎng)協(xié)議地址。
7.如權(quán)利要求1所述的用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),其中,所述應(yīng)用程序引擎可操作來在所述虛擬主機上創(chuàng)建并維持應(yīng)用程序的至少一個實例。
8.如權(quán)利要求1所述的用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),其中,所述應(yīng)用程序引擎將物理服務(wù)器上的應(yīng)用程序的至少一個實例轉(zhuǎn)換為與虛擬主機綁定的集群應(yīng)用程序。
9.如權(quán)利要求1所述的用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),其中,所述服務(wù)器集群內(nèi)的各服務(wù)器均還包括健康監(jiān)控器。
10.如權(quán)利要求9所述的用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),其中,所述健康監(jiān)控器可操作來監(jiān)控一組預(yù)定的應(yīng)用程序性能與系統(tǒng)需求。
11.如權(quán)利要求1所述的用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),其中,所述服務(wù)器集群內(nèi)的各服務(wù)器均還包括注冊表監(jiān)控器。
12.如權(quán)利要求1所述的用于服務(wù)器集群應(yīng)用程序虛擬化的系統(tǒng),其中,所述服務(wù)器集群內(nèi)的各服務(wù)器均與多個虛擬主機相關(guān)聯(lián)。
13.一種用于服務(wù)器集群應(yīng)用程序虛擬化的方法,包括: 在服務(wù)器集群內(nèi)的各節(jié)點上形成至少一個虛擬主機,其中,各節(jié)點均包括節(jié)點互聯(lián)網(wǎng)協(xié)議地址、本地監(jiān)控引擎、集群監(jiān)控引擎、主機引擎以及應(yīng)用程序引擎;以及 對所述虛擬主機上的應(yīng)用程序進行實例化,其中,所述應(yīng)用程序與不同于所述節(jié)點互聯(lián)網(wǎng)協(xié)議地址的虛擬互聯(lián)網(wǎng)協(xié)議地址相關(guān)聯(lián)。
14.如權(quán)利要求13所述的用于服務(wù)器集群應(yīng)用程序虛擬化的方法,其中,所述監(jiān)控引擎對來自用戶界面和/或所述集群監(jiān)控引擎的進入請求進行管理。
15.如權(quán)利要求13所述的用于服務(wù)器集群應(yīng)用程序虛擬化的方法,其中,所述集群監(jiān)控引擎管理從所述服務(wù)器集群中的其它節(jié)點處接收的請求。
16.如權(quán)利要求13所述的用于服務(wù)器集群應(yīng)用程序虛擬化的方法,其中,所述主機引擎創(chuàng)建一個或多個虛擬主機以及一個或多個虛擬互聯(lián)網(wǎng)協(xié)議地址。
17.如權(quán)利要求13所述的用于服務(wù)器集群應(yīng)用程序虛擬化的方法,還包括:將虛擬主機及其虛擬互聯(lián)網(wǎng)協(xié)議地址和應(yīng)用程序從所述服務(wù)器集群內(nèi)的一個節(jié)點傳送到另一個節(jié)點。
18.一種實際包含可由服務(wù)器集群內(nèi)的服務(wù)器執(zhí)行的指令程序的計算機可讀取存儲介質(zhì),其中,所述指令程序包括多個用于服務(wù)器集群應(yīng)用程序虛擬化的程序代碼,所述指令程序包括: 用于對從所述服務(wù)器集群內(nèi)的其它節(jié)點處接收的請求進行管理的程序代碼; 用于從用戶界面接收請求的程序代碼; 用于在所述服務(wù)器集群的各節(jié)點處建立一個或多個虛擬主機的程序代碼;以及 用于對所述一個或多個虛擬主機上的應(yīng)用程序進行實例化的程序代碼。
19.如權(quán)利要求18所述的包含指令程序的計算機可讀取存儲介質(zhì),其中,所述指令程序還包括用于利用一個或多個虛擬主機來維持并執(zhí)行故障轉(zhuǎn)移策略的程序代碼。
20.如權(quán)利要求18所述的包含指令程序的計算機可讀取存儲介質(zhì),其中,所述指令程序還包括用于創(chuàng)建與所述一個或多個虛擬主機中的各個虛擬主機相關(guān)聯(lián)的虛擬互聯(lián)網(wǎng)協(xié)議地址的程序代碼。
21.如權(quán)利要求18所述的包含指令程序的計算機可讀取存儲介質(zhì),其中,所述指令程序還包括用于將所述應(yīng)用程序的實例耦合至所述虛擬主機的程序代碼。
【文檔編號】G06F9/50GK104169881SQ201380005537
【公開日】2014年11月26日 申請日期:2013年1月17日 優(yōu)先權(quán)日:2012年1月18日
【發(fā)明者】吳光青 申請人:Dh2I公司