控制網(wǎng)絡(luò)利用的制作方法
【專利摘要】任意應(yīng)用的網(wǎng)絡(luò)利用通過跟蹤虛擬機(VM)(至少包括主存該應(yīng)用的各部分的VM)的網(wǎng)絡(luò)使用統(tǒng)計來控制。對于網(wǎng)絡(luò)利用控制,VM用作該應(yīng)用的各元素的網(wǎng)絡(luò)代理。對照網(wǎng)絡(luò)使用統(tǒng)計來評估該應(yīng)用的網(wǎng)絡(luò)要求的規(guī)范。在去往/始自/穿過該應(yīng)用的一元素的網(wǎng)絡(luò)容量要求未被滿足時,可適應(yīng)一個或多個VM來滿足該要求。例如,VM可從具有過量網(wǎng)絡(luò)帶寬的主機或網(wǎng)絡(luò)位置遷移?;蛘?,例如,不滿足要求的VM的網(wǎng)絡(luò)帶寬可用性可被增加并且在適當(dāng)?shù)闹鳈C或網(wǎng)絡(luò)位置處的VM的帶寬可用性可被降低。因而,可以使用VM適應(yīng)來滿足應(yīng)用級通信路徑要求。
【專利說明】控制網(wǎng)絡(luò)利用
[0001]背景
[0002]在現(xiàn)代計算環(huán)境中,分布式應(yīng)用可包括在不同的主機上執(zhí)行、經(jīng)由網(wǎng)絡(luò)來合作、與諸如瀏覽器等客戶機對接、訪問數(shù)據(jù)庫服務(wù)器等的多個自動單元。對等應(yīng)用、多層web應(yīng)用、分布式散列表、服務(wù)器池或集群是分布式應(yīng)用的示例。這樣的分布式應(yīng)用可在云、數(shù)據(jù)中心等中執(zhí)行。
[0003]網(wǎng)絡(luò)通信對于這樣的應(yīng)用的有效操作而言是必要的。在一些情況下,對于應(yīng)用來說具有各種網(wǎng)絡(luò)性能特性是合乎需要的,例如各組件之間的帶寬、到因特網(wǎng)或其上的客戶機的平均吞吐量、每應(yīng)用實例的平均帶寬,等等。換言之,具有應(yīng)用級網(wǎng)絡(luò)性能保證是合乎需要的。
[0004]然而,至今,這樣的保證尚未成為可能。網(wǎng)絡(luò)性能保證已在網(wǎng)絡(luò)級提供。路由器已被用來提供服務(wù)質(zhì)量(QoS)保證,但這些保證總體上尚未面向分布式應(yīng)用。換言之,用于確保帶寬或容量水平的典型手段是針對數(shù)據(jù)網(wǎng)絡(luò)本身的,而非針對應(yīng)用的。此外,在其中可執(zhí)行分布式應(yīng)用的環(huán)境中,諸如不同應(yīng)用之間的資源共享等問題使得難以保證沿穿過分布式應(yīng)用的通信路徑的網(wǎng)絡(luò)資源。
[0005]甚至在網(wǎng)絡(luò)資源供應(yīng)已在應(yīng)用級提供的情況下,用來獲得或維護網(wǎng)絡(luò)資源要求的技術(shù)已涉及諸如傳輸速率控制、扼流、以及其他面向網(wǎng)絡(luò)的通信量控制機制等技術(shù)。雖然分布式應(yīng)用元素通常被主存在虛擬機(VM)中,但VM技術(shù)尚未被用來幫助保證應(yīng)用級網(wǎng)絡(luò)要求。
[0006]以下討論了與使用虛擬機(VM)技術(shù)來控制分布式應(yīng)用的網(wǎng)絡(luò)資源相關(guān)的技術(shù)。
[0007]概述
[0008]以下概述僅是為了介紹在以下詳細(xì)描述中討論的某些概念而被包括的。本概述并不是全面的,并且不旨在描繪所要求保護的主題的范圍,該范圍由所附的權(quán)利要求書來闡明。
[0009]任意應(yīng)用的網(wǎng)絡(luò)利用通過跟蹤虛擬機(VM)(至少包括主存該應(yīng)用的各部分的VM)的網(wǎng)絡(luò)使用統(tǒng)計來控制。對于網(wǎng)絡(luò)利用控制,VM用作該應(yīng)用的各元素的網(wǎng)絡(luò)代理。對照網(wǎng)絡(luò)使用統(tǒng)計來評估該應(yīng)用的網(wǎng)絡(luò)要求的規(guī)范。在去往/始自/穿過該應(yīng)用的一元素的網(wǎng)絡(luò)容量要求未被滿足時,可適應(yīng)一個或多個VM來滿足該要求。例如,VM可從具有過量網(wǎng)絡(luò)帶寬的主機或網(wǎng)絡(luò)位置遷移?;蛘?,例如,不滿足要求的VM的網(wǎng)絡(luò)帶寬可用性可被增加并且適當(dāng)?shù)闹鳈C或網(wǎng)絡(luò)位置處的VM的帶寬可用性可被降低。因而,可以使用VM適應(yīng)來滿足應(yīng)用級通信路徑要求。
[0010]許多附帶特征將參考以下的詳細(xì)描述并結(jié)合附圖考慮以在下文解釋。
【專利附圖】
【附圖說明】
[0011]根據(jù)附圖閱讀以下詳細(xì)描述,將更好地理解本發(fā)明,其中在所附描述中使用相同的附圖標(biāo)記來指代相同的部分。
[0012]圖1示出示例虛擬化層。[0013]圖2示出關(guān)于虛擬機和虛擬機映像的虛擬化層的過程和交互。
[0014]圖3示出分布式應(yīng)用的示例。
[0015]圖4示出另一示例分布式應(yīng)用。
[0016]圖5示出用于指定分布式應(yīng)用的網(wǎng)絡(luò)容量并使用虛擬機(VM)適應(yīng)來供應(yīng)網(wǎng)絡(luò)容量的系統(tǒng)。
[0017]圖6示出具有虛擬化增強以便于VM網(wǎng)絡(luò)報告和網(wǎng)絡(luò)使用操縱的主機的示例。
[0018]圖7不出與圖3中的不例分布式應(yīng)用相關(guān)的圖5的系統(tǒng)。
[0019]圖8示出主存在VM中執(zhí)行的分布式應(yīng)用的主機。
[0020]圖9示出了圖8的一部分的詳細(xì)視圖。
[0021]圖10和11示出了示例應(yīng)用網(wǎng)絡(luò)規(guī)范。
【具體實施方式】
[0022]概覽和虛擬化
[0023]下文討論的各實施例涉及使用VM技術(shù)來在存在動態(tài)網(wǎng)絡(luò)條件的情況下提供網(wǎng)絡(luò)容量。討論將從包括諸如系統(tǒng)管理程序等虛擬化組件的虛擬化技術(shù)的概覽開始。接著將討論分布式應(yīng)用及其示例。將描述使用VM技術(shù)來進行網(wǎng)絡(luò)供應(yīng)的概覽,此后討論相關(guān)VM增強和如何使用這些增強的詳細(xì)解釋。
[0024]圖1示出示例虛擬化層100。計算機102具有硬件104,該硬件104包括中央處理單元(CPU) 106、存儲器108、網(wǎng)絡(luò)接口 110、非易失性存儲112以及沒有示出的其他組件,諸如總線、顯示適配器等。虛擬化層100管理和促進虛擬機114的執(zhí)行。盡管圖1中未示出,每個虛擬機114通常具有相關(guān)聯(lián)的虛擬盤鏡像和客操作系統(tǒng)。為簡明起見,虛擬機114的操作系統(tǒng)和可能的應(yīng)用軟件有時會被稱作客機,客機存儲在與虛擬機114相關(guān)聯(lián)的虛擬盤鏡像中并且從與虛擬機114相關(guān)聯(lián)的虛擬盤鏡像中執(zhí)行。為方便起見,術(shù)語“系統(tǒng)管理程序”在本文中將被用來指各種形式的虛擬化層。此外,如下文將討論的,虛擬機114被用來主存分布式應(yīng)用的各元素。
[0025]虛擬化層100可以是任何各種已知或未來的實現(xiàn),諸如Hyper-V服務(wù)器(TM)、VMWare ESX服務(wù)器(TM)、Xen、Oracle VM (TM)等。虛擬化層的體系結(jié)構(gòu)可以是帶有在主機操作系統(tǒng)上運行的虛擬機監(jiān)視器(VMM)的被主存類型,或者是帶有直接在計算機102的硬件104上運行的系統(tǒng)管理程序等的裸金屬類型。如本文中所使用的,術(shù)語“虛擬機”是指模擬任何特定的硬件架構(gòu)(例如,x86)(該硬件架構(gòu)能夠運行用于該硬件架構(gòu)的本機代碼)的系統(tǒng)型虛擬機;對于客機而言,幾乎無法把虛擬機與硬件機器區(qū)分開。在本文中所討論的虛擬機不是諸如Java虛擬機等抽象或進程型的虛擬機。
[0026]虛擬化層100執(zhí)行以下基本功能:管理虛擬機114以及由其本身和各虛擬機114二者共享硬件104。可以使用各種技術(shù)中的任何一種把虛擬機114和硬件104隔離開。在一個實施例中,虛擬化層可以提供對應(yīng)于虛擬機114的不同的隔離開的環(huán)境(即,分區(qū)或域)。虛擬化層100中的一些,諸如共享虛擬設(shè)備驅(qū)動程序、虛擬機內(nèi)通信設(shè)施以及虛擬機管理API (應(yīng)用編程接口),可以運行在一個特殊的特權(quán)分區(qū)或域中,從而允許緊湊且高效的系統(tǒng)管理程序。在其他實施例中,用于虛擬機管理和對硬件104的一致共享的功能性可以駐留在單片電路金屬上(on-the-metal)系統(tǒng)管理程序中。[0027]圖2示出關(guān)于虛擬機114和虛擬機鏡像140的虛擬化層100的過程和交互。虛擬化層100可能根據(jù)虛擬機配置參數(shù)執(zhí)行用于啟動并執(zhí)行相應(yīng)虛擬機114的過程142。當(dāng)虛擬機(VM) 114被啟動時,虛擬化層標(biāo)識相關(guān)聯(lián)的虛擬機鏡像140。在實踐中,任何虛擬機114可以使用任何虛擬機鏡像140。虛擬機鏡像140可以是虛擬化層100的文件系統(tǒng)141上的特殊格式的文件(如,VHD) ο虛擬化層100加載所標(biāo)識的虛擬機鏡像140。啟動的虛擬機114也許為了尋求主引導(dǎo)記錄或其他引導(dǎo)信息來安裝和讀取虛擬機鏡像140,并且引導(dǎo)開始執(zhí)行的客操作系統(tǒng)。
[0028]虛擬化層100管理虛擬機114的執(zhí)行,處理對客機的內(nèi)核的特定調(diào)用、超級調(diào)用等,以及協(xié)調(diào)虛擬機114對底層硬件104的訪問。隨著客機及其軟件運行,虛擬化層100可以維護虛擬盤鏡像140上的客機的狀態(tài);當(dāng)客機或由客機運行的應(yīng)用向“盤”寫數(shù)據(jù)時,虛擬化層100將該數(shù)據(jù)轉(zhuǎn)換成虛擬盤鏡像140的格式并寫入到該鏡像。
[0029]虛擬化層100可以執(zhí)行用于關(guān)閉虛擬機114的過程144。當(dāng)接收到停止虛擬機114的指令時,虛擬機114及其客機的狀態(tài)被保存到虛擬盤鏡像140,并且正在執(zhí)行的虛擬機114進程(或分區(qū))被刪除??梢员A籼摂M機114的規(guī)范以用于虛擬機114的稍后重啟。
[0030]分布式應(yīng)用
[0031]圖3示出分布式應(yīng)用160的示例。圖3中的示例是具有呈現(xiàn)層162、應(yīng)用層164、以及數(shù)據(jù)層166的多層應(yīng)用。雖然未示出,但分布式應(yīng)用在其中各元素經(jīng)由諸如路由器、橋接器、交換機、網(wǎng)關(guān)、負(fù)載平衡器等通信節(jié)點進行通信的數(shù)據(jù)網(wǎng)絡(luò)中執(zhí)行。呈現(xiàn)層162包括與使用分布式應(yīng)用160的客戶機對接的web服務(wù)器實例168或者其他服務(wù)器或應(yīng)用。中間層164由各應(yīng)用實例170形成,應(yīng)用實例170可實現(xiàn)分布式應(yīng)用160的主邏輯、在對象與數(shù)據(jù)庫中的數(shù)據(jù)之間進行轉(zhuǎn)換、將客戶機請求轉(zhuǎn)換成數(shù)據(jù)庫查詢,等等。數(shù)據(jù)層164可具有多個數(shù)據(jù)庫服務(wù)器172、數(shù)據(jù)庫接口、數(shù)據(jù)存儲、或其他形式的持久且高效的數(shù)據(jù)存儲。負(fù)載平衡器174可平衡跨每一層處的各元素之間的負(fù)載。在每一層處的各元素(例如各web服務(wù)器實例168)是具有不同的執(zhí)行狀態(tài)的重復(fù)可執(zhí)行代碼或軟件棧。
[0032]在操作中,分布式應(yīng)用160接收請求,例如從客戶機、其他應(yīng)用、服務(wù),等等。請求由web服務(wù)器實例168來處理,web服務(wù)器實例168可啟動事務(wù)或以其他方式與應(yīng)用實例170進行通信。進而,應(yīng)用實例170可具有與數(shù)據(jù)庫服務(wù)器172的交互。
[0033]圖3中的每一條實線表示可能的網(wǎng)絡(luò)通信路徑。關(guān)于分布式應(yīng)用160的網(wǎng)絡(luò)要求,實線中的任一個(例如,路徑176)、或相似元素之間的任意各種線的集合(例如,路徑集合178)(例如,web服務(wù)器168與負(fù)載平衡器174之間的所有線)、或者其組合是可指定、評估、以及供應(yīng)網(wǎng)絡(luò)要求的潛在點。
[0034]圖4示出了另一示例分布式應(yīng)用;對等應(yīng)用200。各對等體202在不同的主機(或在不同的客機)上執(zhí)行。每一對等體202 —般相同地運作并且執(zhí)行相同功能,但具有不同的操作狀態(tài)。對等應(yīng)用200可以是分布式散列表、分布式存儲系統(tǒng)、網(wǎng)絡(luò)服務(wù),等等。對等應(yīng)用可具有各對等體202之間的連接。對等體202可經(jīng)由因特網(wǎng)204與外部實體進行通信。對等體202還可使用各種服務(wù),如提供關(guān)系數(shù)據(jù)庫208的數(shù)據(jù)庫服務(wù)器206對等體202可以為了外部請求的實質(zhì)服務(wù),以及為了對等體級互連性的內(nèi)部維護而進行通信。外部請求可由一對等體202直接處理,或該對等體可具有允許它將該請求傳遞給對該請求進行服務(wù)并返回響應(yīng)的其他對等體202的信息。[0035]如圖3中所示,實線表示各元素之間的網(wǎng)絡(luò)路徑。對等體202之間的線表示對等體內(nèi)網(wǎng)絡(luò)路徑,且到對等應(yīng)用200的線表示到任何或多個對等體202的路徑。如圖3所示,線(例如,路徑210、212)中的任一個或線集合(例如,路徑214)可以是用于指定網(wǎng)絡(luò)容量或帶寬要求、對照測量到的條件評估該要求、以及調(diào)整VM以滿足該要求的候選目標(biāo)。
[0036]應(yīng)用級網(wǎng)絡(luò)供應(yīng)
[0037]圖5示出用于指定分布式應(yīng)用230的網(wǎng)絡(luò)容量并使用虛擬機(VM)適應(yīng)來供應(yīng)網(wǎng)絡(luò)容量的系統(tǒng)。網(wǎng)絡(luò)控制器232執(zhí)行稍后描述的用于評估分布式應(yīng)用232的網(wǎng)絡(luò)狀況和需求的各過程。提供指定分布式應(yīng)用230的網(wǎng)絡(luò)要求(或偏好)的網(wǎng)絡(luò)規(guī)范234。網(wǎng)絡(luò)規(guī)范234包括分布式應(yīng)用230的網(wǎng)絡(luò)要求236。
[0038]網(wǎng)絡(luò)要求236可以標(biāo)識分布式應(yīng)用230的各元素之間的應(yīng)用級網(wǎng)絡(luò)路徑或連接(例如,各元素之間的連接性而不管提供連接性的底層路由器等)。例如,在圖3的示例中,網(wǎng)絡(luò)要求236可以指定路徑176或路徑集合178。在圖4的示例中,網(wǎng)絡(luò)要求可以標(biāo)識路徑210,212或各路徑214。這些路徑或連接理論上按照分布式應(yīng)用的各應(yīng)用元素238和/或與分布式應(yīng)用230連接的外部元素240來標(biāo)識(應(yīng)用元素可以是分布式應(yīng)用230的在不同的主機或VM客機上執(zhí)行的各部分,如對等體202、web服務(wù)器168、網(wǎng)絡(luò)服務(wù),等等)。在圖5的示例中,路徑242和244具有對應(yīng)的網(wǎng)絡(luò)要求236。網(wǎng)絡(luò)要求236還指定與其路徑(或各路徑,或路徑類)相對應(yīng)的網(wǎng)絡(luò)資源要求。例如,路徑242的網(wǎng)絡(luò)要求236可以指定特定(或動態(tài)地計算的)帶寬要求,如50千字節(jié)每秒(KBS)。網(wǎng)絡(luò)規(guī)范的細(xì)節(jié)稍后參考圖10和11描述。
[0039]圖5還示出了網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)246。網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)246存儲從各應(yīng)用元素238和/或網(wǎng)絡(luò)通信節(jié)點(例如,路由器、聚合器、網(wǎng)關(guān),等等)報告的網(wǎng)絡(luò)統(tǒng)計248。網(wǎng)絡(luò)統(tǒng)計還可包括網(wǎng)絡(luò)控制器232用來構(gòu)造底層數(shù)據(jù)網(wǎng)絡(luò)的當(dāng)前拓?fù)浣Y(jié)構(gòu)的模型的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息。這樣的拓?fù)浣Y(jié)構(gòu)信息可從所收集的BGP (邊界網(wǎng)關(guān)協(xié)議)路由數(shù)據(jù)或OSPF (開放最短路徑優(yōu)先)路由數(shù)據(jù)中導(dǎo)出。注意,不要求網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息和拓?fù)浣Y(jié)構(gòu)模型來用于網(wǎng)絡(luò)供應(yīng)。
[0040]更具體地,網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)246可包括與各應(yīng)用元素238、主存各應(yīng)用元素的主機、主存各應(yīng)用元素的VM等等所使用的當(dāng)前或歷史網(wǎng)絡(luò)帶寬有關(guān)的信息。在一個實施例中,管理VM (各應(yīng)用元素238在其中執(zhí)行)的系統(tǒng)管理程序可具有監(jiān)視并報告各單獨的VM的網(wǎng)絡(luò)使用的組件(參見圖6中的計量器270),該網(wǎng)絡(luò)使用可能包括將該使用(例如,帶寬值)與VM的身份進行關(guān)聯(lián)的信息。在一個實施例中,主存分布式應(yīng)用230的一兀素的每一 VM的網(wǎng)絡(luò)活動或消費被報告和跟蹤。在這種情況下,該系統(tǒng)跟蹤哪些VM主存了哪些應(yīng)用元素238。實際上,VM擔(dān)當(dāng)各應(yīng)用元素238的網(wǎng)絡(luò)跟蹤代理。網(wǎng)絡(luò)統(tǒng)計248和網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)246的細(xì)節(jié)和進一步示例稍后討論。
[0041]返回圖5,網(wǎng)絡(luò)控制器232對照分布式應(yīng)用230的網(wǎng)絡(luò)要求236來評估網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)246。網(wǎng)絡(luò)控制器232可以確定是否網(wǎng)絡(luò)要求236中指定的一些路徑或者路徑集合或類(或其組合)沒有被滿足(或?qū)⒖赡懿槐粷M足)。網(wǎng)絡(luò)控制器232進而確定它向主存各應(yīng)用元素238在其中執(zhí)行的各VM的一個或多個主機發(fā)出的VM適應(yīng)250。
[0042]VM適應(yīng)250可以是針對一個或多個VM管理組件(參見圖6中的管理組件274)的用于將VM (或多個VM)從第一主機遷移到第二主機的指令,該遷移是如下進行的:在第一主機上停止該VM,將該VM的盤鏡像轉(zhuǎn)移到第二主機(如有必要),并在該第二主機上啟動它。VM適應(yīng)250可以是針對系統(tǒng)管理程序的用于提高或降低該系統(tǒng)管理系統(tǒng)所管理的VM中的一個或多個的網(wǎng)絡(luò)容量的指令。在一個實施例中,系統(tǒng)管理程序具有用于控制各單獨的VM的網(wǎng)絡(luò)吞吐量的邏輯(參見圖6中的調(diào)節(jié)器272)。盡管扼流和遷移是用于控制網(wǎng)絡(luò)使用的有效且直接的技術(shù),但可以使用其他技術(shù)。例如,在一個實施例中,可通過降低應(yīng)用層中的實例的數(shù)量來降低全局帶寬。在另一個實施例中,向客操作系統(tǒng)發(fā)信號以調(diào)整網(wǎng)絡(luò)使用,例如,通過向客操作系統(tǒng)的TCP (傳輸控制協(xié)議)速率控制算法哄騙網(wǎng)絡(luò)飽和條件。
[0043]關(guān)于網(wǎng)絡(luò)控制器232的實現(xiàn),網(wǎng)絡(luò)控制器232可被實現(xiàn)在各種計算機中。在一個實施例中,網(wǎng)絡(luò)控制器232被包括在對網(wǎng)絡(luò)上的各VM進行管理的虛擬機管理系統(tǒng)中。例如,系統(tǒng)中心虛擬機管理器(TM)、VMWare、VirtualCenter (TM)等等。在另一實施例中,網(wǎng)絡(luò)控制器232是在具有網(wǎng)絡(luò)連接的任何主機上執(zhí)行的獨立應(yīng)用。在又一實施例中,網(wǎng)絡(luò)控制器232本身是分布式應(yīng)用。網(wǎng)絡(luò)控制器232可被實現(xiàn)成分布式應(yīng)用230的一部分(具有對與可如何管理帶寬有關(guān)的可能限制)。在一個實施例中,網(wǎng)絡(luò)控制器232管理共享同一網(wǎng)絡(luò)的許多不同的分布式應(yīng)用和主機。在這種情況下,它可具有提高或降低一個應(yīng)用可用的帶寬以幫助滿足另一應(yīng)用的要求的能力。
[0044]圖6示出具有虛擬化增強以便于VM網(wǎng)絡(luò)報告和網(wǎng)絡(luò)使用操縱的主機268的示例。系統(tǒng)管理程序274執(zhí)行用于執(zhí)行VM276、278的已知虛擬化功能,如上所述。另外,系統(tǒng)管理程序274具有調(diào)節(jié)器272和計量器270。計量器270收集與發(fā)送到/發(fā)送自主機268上的VM的網(wǎng)絡(luò)數(shù)據(jù)的量(和/或速率)有關(guān)的統(tǒng)計。在一個實施例中,系統(tǒng)管理程序可具有用于每一 VM的虛擬NIC (網(wǎng)絡(luò)接口卡)設(shè)備并且統(tǒng)計是通過該虛擬NIC設(shè)備生成的。
[0045]調(diào)節(jié)器272允許系統(tǒng)管理程序274控制它所管理的VM的網(wǎng)絡(luò)吞吐量。可以使用各種控制算法??梢允褂靡阎W(wǎng)絡(luò)速率控制算法(例如,通過在傳輸之前延遲排隊分組)。在一些情況下,可降低一些VM (例如,并非分布式應(yīng)用的一部分的VM278)的帶寬以允許提高主存應(yīng)用元素238的VM276的帶寬。注意,系統(tǒng)管理程序或虛擬NIC可以在各分組穿過時調(diào)查它們,以理解對應(yīng)的實際網(wǎng)絡(luò)路徑并決定要對哪些網(wǎng)絡(luò)會話進行扼流。
[0046]主機268還可具有用于便于網(wǎng)絡(luò)管理的管理組件280。在一個實施例中,管理組件280從計量器270收集統(tǒng)計并傳送該統(tǒng)計以供儲存在網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)246中。管理組件280還可根據(jù)來自網(wǎng)絡(luò)控制器232的指令來控制調(diào)節(jié)器272。管理組件280還可執(zhí)行用于響應(yīng)于來自網(wǎng)絡(luò)控制器232的各VM適應(yīng)來遷移各VM的指令。
[0047]管理組件280還可以是允許網(wǎng)絡(luò)控制器232與不同的虛擬化實現(xiàn)進行對接的方便手段;不同的管理組件280實現(xiàn)可被提供用于相應(yīng)的虛擬化實現(xiàn)。每一個管理組件可以實現(xiàn)相同的面向控制器的API (應(yīng)用編程接口)并可具有適用于不同的虛擬化實現(xiàn)的不同的面向虛擬化的邏輯。
[0048]管理組件280、調(diào)節(jié)器272、以及計量器270的功能可被包括在虛擬化層中的適于所使用的特定虛擬化實現(xiàn)的任何位置處。此外,這些組件不被作為實際分立的單元來存在;對應(yīng)的功能可以用各種設(shè)計來執(zhí)行。
[0049]圖7示出與圖3中的示例分布式應(yīng)用160相關(guān)的圖5的系統(tǒng)。主機268具有上述VM276,VM276可主存各應(yīng)用元素,如web服務(wù)器168、應(yīng)用實例170、以及數(shù)據(jù)庫服務(wù)器172。計量器270和調(diào)節(jié)器272被假定但未示出。主機268的較小版本與主機268的較大版本相同。較大版本示出了在圖8中示出的主機268的細(xì)節(jié)。圖8示出主存在VM276中執(zhí)行的分布式應(yīng)用160的主機268。主機中的一些駐留在子網(wǎng)300中,它可以是指定路徑的一個組成部分。網(wǎng)絡(luò)控制器232維護將VM276映射到諸如數(shù)據(jù)庫服務(wù)器172、應(yīng)用實例170等應(yīng)用元素的信息。VM276的網(wǎng)絡(luò)統(tǒng)計被累積在網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)存儲246中。在一個實施例中,網(wǎng)絡(luò)通信節(jié)點302 (例如,路由器、網(wǎng)關(guān)、聚合器)向VM276提供網(wǎng)絡(luò)通信。
[0050]圖9示出了圖8的任意部分的詳細(xì)視圖。主機268B的計量器270累積被傳送并儲存在網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)246中的VM276計量統(tǒng)計320。網(wǎng)絡(luò)通信節(jié)點302還可以或可以不提交網(wǎng)絡(luò)統(tǒng)計,例如鏈路帶寬速率、接口靜態(tài)等。網(wǎng)絡(luò)控制器332可以執(zhí)行用于存儲任何網(wǎng)絡(luò)統(tǒng)計的過程334,這可涉及接收統(tǒng)計并將它們儲存在網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)246中。
[0051]網(wǎng)絡(luò)控制器232執(zhí)行用于轉(zhuǎn)移網(wǎng)絡(luò)內(nèi)的網(wǎng)絡(luò)通信量負(fù)載的過程。網(wǎng)絡(luò)控制器232從網(wǎng)絡(luò)規(guī)范的集合336中選擇與分布式應(yīng)用相對應(yīng)的網(wǎng)絡(luò)規(guī)范234A。該規(guī)范隨后對照與該分布式應(yīng)用相關(guān)的網(wǎng)絡(luò)統(tǒng)計被重復(fù)評估。每當(dāng)網(wǎng)絡(luò)控制器232確定需要調(diào)整以使得實際狀況將符合該分布式應(yīng)用的要求或偏好時(根據(jù)網(wǎng)絡(luò)規(guī)范234A),網(wǎng)絡(luò)控制器分析來自網(wǎng)絡(luò)的當(dāng)前或最近通信量統(tǒng)計以標(biāo)識用于轉(zhuǎn)移網(wǎng)絡(luò)通信量負(fù)載的一個或多個目標(biāo),可能考慮哪些VM主機主存該應(yīng)用的哪些元素。因此,網(wǎng)絡(luò)控制器232對各目標(biāo)執(zhí)行VM適應(yīng)。
[0052]關(guān)于VM適應(yīng),在一個實現(xiàn)中,將主機268A上的VM276A標(biāo)識為目標(biāo)的網(wǎng)絡(luò)控制器232傳送“執(zhí)行遷移”指令338,該指令可標(biāo)識VM172A、源主機268A、以及目的地主機268B。作為響應(yīng),主機268A、268B將VM172A遷移到主機268B。用于VM遷移的技術(shù)是已知的并且在其他部分中描述。一般而言,VM276A在主機268A上停止,將已停止的VM的盤鏡像338傳送到主機268B或使得對主機268B可用,并且主機268B的虛擬化組件隨后從接收到的/所訪問的盤鏡像338重啟VM276A。
[0053]在同一實施例或其他實施例中,網(wǎng)絡(luò)控制器232可以確定網(wǎng)絡(luò)通信量要通過調(diào)整目標(biāo)VM的網(wǎng)絡(luò)容量(例如,降低和提高各VM傳輸速率)進行轉(zhuǎn)移。例如,控制器232可以確定指定路徑要求(例如,包括VM276B的路徑)未被滿足。網(wǎng)絡(luò)控制器232隨后可標(biāo)識當(dāng)前可降低帶寬的合適主機處的一個或多個VM (例如,另一應(yīng)用的VM340,它通??梢栽谂c主機268B不同的主機上),并隨后將提高/降低網(wǎng)絡(luò)速率或帶寬分配的指令342傳送給目標(biāo)VM。接收者主機(在該示例中是主機268B)的調(diào)節(jié)器272隨后通過改變目標(biāo)VM的分配來進行響應(yīng)。
[0054]在又一實施例中,網(wǎng)絡(luò)控制器通過監(jiān)視不同負(fù)載下的傳輸?shù)却龝r間來推斷主機外的網(wǎng)絡(luò)元素(例如,路由器)的性能容量。例如,等待時間是帶寬的函數(shù),并且如果隨時間構(gòu)造了等待時間/帶寬的曲線,則可能使用該曲線(或與等待時間和帶寬有關(guān)的其他信息)來將各調(diào)整通知給各VM布置。還可能在虛擬NIC處注入額外分組以探測網(wǎng)絡(luò)性能。這樣的探測分組將在源處被注入并在目的地處除去。
[0055]將明白,可以使用VM速率調(diào)節(jié)和VM遷移(或者創(chuàng)建、刪除、或掛起)中的任一個或兩者。網(wǎng)絡(luò)通信節(jié)點302所報告的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)或統(tǒng)計可以或可以不通知網(wǎng)絡(luò)控制器232的決策做出過程。將明白,網(wǎng)絡(luò)規(guī)范和供應(yīng)實際上發(fā)生在應(yīng)用級,因為該規(guī)范按照應(yīng)用元素來指定路徑、網(wǎng)絡(luò)統(tǒng)計是針對這些元素來報告的并且與這些元素相關(guān)、并且分析和調(diào)整是相對于應(yīng)用元素來執(zhí)行的。因而,不必到達(dá)網(wǎng)絡(luò)級(并且無需這樣做的特別待遇),嘗試保證穿過(并且可能去往/來自)分布式應(yīng)用的路徑的速率/帶寬是可能的。即,在一個實施例中,網(wǎng)絡(luò)控制器232還可向網(wǎng)絡(luò)通信節(jié)點302發(fā)出指令作為用于將網(wǎng)絡(luò)容量轉(zhuǎn)移到需要其的位置的附加手段。在一些云或數(shù)據(jù)中心中,網(wǎng)絡(luò)帶寬在不同的時間(例如,一天中的時間、一星期中的一天,等等)可具有不同的成本,并且該系統(tǒng)可被配置成調(diào)整網(wǎng)絡(luò)使用以滿足全局成本限制或最小化函數(shù)。
[0056]圖10和11示出了示例應(yīng)用網(wǎng)絡(luò)規(guī)范234A、234B。網(wǎng)絡(luò)規(guī)范234A、234B可以用XML(可擴展標(biāo)記語言)來編寫。在該示例中的XML元素是自解釋的??紤]對應(yīng)的分布式應(yīng)用的各組件和元素可被定義,例如,“Internet Gateway (因特網(wǎng)網(wǎng)關(guān))”、“TierlApp (層I應(yīng)用)”等等。各路徑的容量規(guī)范隨后按照這些組件來定義。例如,在網(wǎng)絡(luò)規(guī)范234A中,容量規(guī)范指示從各TierlApp (并隱含地,它們的VM)到InternetGateway的路徑的平均帶寬應(yīng)當(dāng)是1.5MBS (兆字節(jié)每秒)。另一規(guī)范指示所有Tierl-Tier2 (層1-層2)路徑的總和必須超過.5MBS。在一個實施例中。規(guī)范可以是方向敏感的;如規(guī)范語句中參數(shù)的順序所示。網(wǎng)絡(luò)規(guī)范可以定義豐富的表達(dá)式語言,從而允許指定復(fù)雜路徑和條件??梢灾付◤?fù)雜條件。還可以指定校正動作。例如,要求可以指定第一路徑條件和要作為目標(biāo)以滿足該條件的另一路徑。要求可以指定路徑中的多個元素。例如,穿過組件C從組件A到B的帶寬。
[0057]結(jié)論
[0058]以上討論的實施例和特征都可用儲存在易失性或非易失性計算機或設(shè)備可讀介質(zhì)中的信息的形式來實現(xiàn)。這被認(rèn)為至少包括諸如光學(xué)存儲(例如,緊致盤只讀存儲器(CD-ROM))、磁介質(zhì)、閃速只讀存儲器(ROM)、或存儲數(shù)字信息的任何現(xiàn)有或未來手段等介質(zhì)。所存儲的信息可采用機器可執(zhí)行指令(例如,經(jīng)編譯的可執(zhí)行二進制代碼)、源代碼、字節(jié)代碼、或可用于允許或配置計算機設(shè)備來執(zhí)行上述各實施例的信息的任何其它形式。這還被認(rèn)為至少包括諸如隨機存取存儲器(RAM)和/或在程序的執(zhí)行以實現(xiàn)一實施例的期間存儲諸如中央處理單元(CPU)指令等信息的虛擬存儲器等易失性存儲器,以及存儲允許程序或可執(zhí)行代碼被加載和執(zhí)行的信息的非易失性介質(zhì)。實施例和特征可在任何類型的計算設(shè)備上執(zhí)行,這些計算設(shè)備包括便攜設(shè)備、工作站、服務(wù)器、移動無線設(shè)備等。
【權(quán)利要求】
1.一種為分布式應(yīng)用指定并分配網(wǎng)絡(luò)帶寬的方法,所述分布式應(yīng)用在網(wǎng)絡(luò)中在所述網(wǎng)絡(luò)中的主機上執(zhí)行的虛擬機(VM)上執(zhí)行,所述方法包括: 存儲應(yīng)用網(wǎng)絡(luò)規(guī)范,每一應(yīng)用網(wǎng)絡(luò)規(guī)范指定具有在多個主機上的多個VM上執(zhí)行的各應(yīng)用元素的分布式應(yīng)用的網(wǎng)絡(luò)要求; 監(jiān)視所述網(wǎng)絡(luò)中的網(wǎng)絡(luò)使用; 基于所述應(yīng)用網(wǎng)絡(luò)規(guī)范和所述監(jiān)視,確定網(wǎng)絡(luò)帶寬要求;以及 通過遷移所述網(wǎng)絡(luò)中的各VM中的一個或多個和/或通過所述主機之一上的系統(tǒng)管理程序提高或降低由此管理的VM的網(wǎng)絡(luò)傳輸,來滿足所述網(wǎng)絡(luò)帶寬要求。
2.如權(quán)利要求1所述的方法,其特征在于,應(yīng)用網(wǎng)絡(luò)規(guī)范指定穿過對應(yīng)的分布式應(yīng)用的各元素的多個通信路徑,并且所述方法還包括將VM從第一主機遷移到第二主機以滿足所述路徑之一的網(wǎng)絡(luò)要求。
3.如權(quán)利要求1所述的方法,其特征在于,所述監(jiān)視包括在所述主機的系統(tǒng)管理程序處捕捉VM的網(wǎng)絡(luò)統(tǒng)計并傳送所述網(wǎng)絡(luò)統(tǒng)計以供存儲。
4.如權(quán)利要求3所述的方法,其特征在于,所述監(jiān)視還包括接收所述網(wǎng)絡(luò)的一個或多個路由器、交換機、或負(fù)載平衡器所報告的網(wǎng)絡(luò)統(tǒng)計。
5.如權(quán)利要求3所述的方法,其特征在于,所述監(jiān)視還包括系統(tǒng)管理程序生成并插入探測分組以供傳輸,接收所述探測分組, 根據(jù)所述探測分組測量網(wǎng)絡(luò)統(tǒng)計,并除去所述探測分組以使得它們不被傳遞給虛擬機。
6.如權(quán)利要求1所述的方法,其特征在于,還包括基于成本最小化函數(shù)來動態(tài)地計算所述網(wǎng)絡(luò)帶寬要求,其中根據(jù)所述成本最小化函數(shù),帶寬成本作為時間的函數(shù)而變化。
7.—種在主存虛擬機(VM)的經(jīng)由網(wǎng)絡(luò)進行通信的多個主機之間分發(fā)網(wǎng)絡(luò)使用的方法,其中每一主機具有管理在其上執(zhí)行的VM的系統(tǒng)管理程序,所述方法包括: 訪問一個或多個計算機所存儲的網(wǎng)絡(luò)信息,所述網(wǎng)絡(luò)信息包括指定在所述VM上運行的相應(yīng)分布式應(yīng)用的網(wǎng)絡(luò)要求的信息,其中每一分布式應(yīng)用在多個VM上執(zhí)行;以及 通過在所述主機之間遷移VM或通過所述系統(tǒng)管理程序提高或降低所述系統(tǒng)管理程序所管理的VM可用的網(wǎng)絡(luò)容量,來嘗試滿足所述應(yīng)用的網(wǎng)絡(luò)要求。
8.如權(quán)利要求7所述的方法,其特征在于,所述網(wǎng)絡(luò)包括路由器、交換機、以及負(fù)載平衡器,并且所述保證還包括提高或降低所述路由器、交換機或負(fù)載平衡器處的網(wǎng)絡(luò)分配。
9.如權(quán)利要求8所述的方法,其特征在于,還包括構(gòu)建所述路由器、交換機以及負(fù)載平衡器的性能特征的模型,并使用所述模型來提高或降低網(wǎng)絡(luò)分配。
10.如權(quán)利要求7所述的方法,其特征在于,所述網(wǎng)絡(luò)信息包括給定分布式應(yīng)用的應(yīng)用規(guī)范,所述應(yīng)用規(guī)范指定包括表示所述分布式應(yīng)用的相應(yīng)應(yīng)用元素的兩個組件的網(wǎng)絡(luò)通信路徑,所述應(yīng)用規(guī)范還指定所述通信路徑的網(wǎng)絡(luò)要求。
11.如權(quán)利要求7所述的方法,其特征在于,所述分布式應(yīng)用包括與所述組件中的第一個相對應(yīng)的第一組應(yīng)用實例以及與所述組件中的第二個相對應(yīng)的第二組應(yīng)用實例。
12.如權(quán)利要求11所述的方法,其特征在于,還包括保證所述第一組中的各應(yīng)用實例中的一個或多個與所述第二組中的各應(yīng)用實例中的一個或多個之間的單個帶寬要求。
13.如權(quán)利要求7所述的方法,其特征在于,還包括存儲各單獨的VM的VM網(wǎng)絡(luò)使用統(tǒng)計并使用所述VM網(wǎng)絡(luò)使用統(tǒng)計來選擇要被遷移或者要被提高或降低可用網(wǎng)絡(luò)容量的一個或多個VM。
14.如權(quán)利要求13所述的方法,其特征在于,還包括通過掛起VM來降低所述VM的網(wǎng)絡(luò)容量。
15.如權(quán)利要求7所述的方法,其特征在于,還包括根據(jù)所述網(wǎng)絡(luò)要求之一來標(biāo)識特定VM,選擇主存所述特定VM的主機所報告的所述特定VM的網(wǎng)絡(luò)統(tǒng)計,以及對照所述網(wǎng)絡(luò)要求中的所述一個來比較所述網(wǎng)絡(luò)統(tǒng)計。
【文檔編號】G06F9/50GK103635882SQ201280032002
【公開日】2014年3月12日 申請日期:2012年5月30日 優(yōu)先權(quán)日:2011年6月29日
【發(fā)明者】R·弗萊爾斯 申請人:微軟公司