用于多節(jié)點應(yīng)用的部署系統(tǒng)的制作方法
【專利摘要】一種部署系統(tǒng)提供用于部署多節(jié)點分布式應(yīng)用、比如云計算平臺應(yīng)用的能力,該多節(jié)點分布式應(yīng)用具有執(zhí)行專門化作業(yè)的多個互連的節(jié)點。部署系統(tǒng)包括部署引導(dǎo)器,該部署引導(dǎo)器調(diào)配基礎(chǔ)設(shè)施,該基礎(chǔ)設(shè)施包括用于托管云計算平臺應(yīng)用的多個節(jié)點。部署引導(dǎo)器基于部署清單中的在基礎(chǔ)設(shè)施與將由云計算平臺應(yīng)用執(zhí)行的多個專門化作業(yè)之間的映射而向在調(diào)配的VM上執(zhí)行的部署代理分發(fā)多個作業(yè)(例如應(yīng)用包和配置)。部署代理將作業(yè)應(yīng)用于它們的相應(yīng)VM(例如起動應(yīng)用)、由此部署云計算平臺應(yīng)用。
【專利說明】用于多節(jié)點應(yīng)用的部署系統(tǒng)
[0001]有關(guān)申請的交叉引用
[0002]本申請要求對于2011年4月12日提交并且標題為"DEPLOYMENT FRAMEWORK FORCLOUD PLATFORM ARCHITECTURE"的第61/474,669號美國臨時專利申請的權(quán)益和優(yōu)先權(quán),該美國臨時專利申請通過引用而結(jié)合于此。本申請與標題為"Release Management Systemfor a Mult1-Node Application"(代理案號為 A703.02)的專利申請和標題為〃ReleaseLifecycle Management System for a Mult1-Node Application"(代理案號為 A703.03)的專利申請有關(guān),這些申請被轉(zhuǎn)讓給本申請的受讓人,并且已經(jīng)與本申請在同日提交。
【技術(shù)領(lǐng)域】
【背景技術(shù)】
[0003]“平臺即服務(wù)”(也常稱為“PaaS”)一般描述作為集成解決方案而由服務(wù)提供方提供的成套技術(shù),該集成解決方案使web開發(fā)者(或者任何其它應(yīng)用開發(fā)者)能夠構(gòu)建、部署和管理web應(yīng)用(或者任何其它類型的聯(lián)網(wǎng)應(yīng)用)的生命周期。PaaS的一個主要組成是“云計算平臺”,該云計算平臺是由服務(wù)提供方運行和維護的網(wǎng)絡(luò)(例如因特網(wǎng)等)基礎(chǔ)設(shè)施,可以在該網(wǎng)絡(luò)基礎(chǔ)設(shè)施上部署開發(fā)的web應(yīng)用。通過提供為了魯棒地運行web應(yīng)用而需要的硬件資源和軟件層,云計算平臺使開發(fā)者關(guān)注于web應(yīng)用開發(fā)本身,并且將可伸縮性以及其它計算和存儲資源要求(例如數(shù)據(jù)存儲、數(shù)據(jù)庫訪問、處理能力、設(shè)施、功率和帶寬等)的后勤留給云計算平臺(例如成本為服務(wù)提供方的收費)。服務(wù)提供方可以附加地向傳統(tǒng)IDE(即集成開發(fā)環(huán)境)提供插件部件,該插件部件輔助使用IDE來創(chuàng)建web應(yīng)用的開發(fā)者以與服務(wù)提供方的云計算平臺兼容的方式恰當構(gòu)造、開發(fā)和測試這樣的應(yīng)用。一旦開發(fā)者使用IDE來完成web應(yīng)用,插件部件輔助開發(fā)者將web應(yīng)用部署到云計算平臺中。
[0004]然而,由于在提供靈活和可縮放的云計算平臺中的復(fù)雜性,幾乎沒有服務(wù)提供方提供PaaS。云計算平臺的當前實現(xiàn)方式使用多個部件(例如云控制器、健康管理器、服務(wù)調(diào)配器、路由器和應(yīng)用執(zhí)行代理),這些部件執(zhí)行不同作用,并且相互協(xié)調(diào)以提供云計算服務(wù)。為了部署這樣的云計算平臺,系統(tǒng)管理員必須構(gòu)建、配置、部署和維護部件(例如云控制器、健康管理器、服務(wù)調(diào)配器、路由器和應(yīng)用執(zhí)行代理)中的每個部件。盡管可以在將所有部件安裝在單個系統(tǒng)(例如膝上型計算機、服務(wù)器)時人工執(zhí)行部署,但是在部件跨多個聯(lián)網(wǎng)系統(tǒng)安裝時,部署過程變得有挑戰(zhàn),這是因為在這樣的安裝中,每個系統(tǒng)必須用特定的計算資源來調(diào)配、用具體的聯(lián)網(wǎng)配置來建立、并且讓不同軟件應(yīng)用安裝有依賴庫和/或運行時間以執(zhí)行系統(tǒng)在云計算平臺內(nèi)的指派作用。此外,更新部件中的任何部件(例如用于庫或者操作系統(tǒng)的安全補丁)要求系統(tǒng)管理員必須為云計算平臺中的其它部件修改操作。例如在需要更新部件之一時,系統(tǒng)管理員可能必須掛起當前連接到部件的其它部件的操作,或者在另一示例中更新其它部件的設(shè)置以正確地連接到更新的部件。因而,用于多節(jié)點應(yīng)用、比如云計算平臺的部署過程可能過于復(fù)雜和耗時而無法讓系統(tǒng)管理員管理。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的一個或者多個實施例提供一種用于多節(jié)點分布式應(yīng)用(例如云計算平臺)的部署系統(tǒng),該多節(jié)點分布式應(yīng)用具有執(zhí)行專門化作用的任何數(shù)目的節(jié)點,以及針對每個專門化作用而利用的任何依賴軟件和/或聯(lián)網(wǎng)、存儲和服務(wù)配置??梢栽谠试S動態(tài)調(diào)配計算資源的硬件基礎(chǔ)設(shè)施、比如虛擬化基礎(chǔ)設(shè)施上面實施部署系統(tǒng)的實例。部署系統(tǒng)包括自動化框架,該自動化框架利用制定的部署清單以自動調(diào)配基礎(chǔ)設(shè)施(例如虛擬機),以及安裝和配置每個專門化作用所需要的應(yīng)用包。制定的部署清單簡化了對于具有可變要求的復(fù)雜多節(jié)點應(yīng)用的部署過程并且啟用可重復(fù)和可預(yù)測的部署。
[0006]根據(jù)一個實施例的一種用于部署具有在多個不同節(jié)點上執(zhí)行的多個功能部件的應(yīng)用的方法包括:由部署模塊接收用于應(yīng)用的規(guī)范。該規(guī)范指定(i)待部署的應(yīng)用的每個功能部件的實例數(shù)目;以及(ii)由執(zhí)行功能部件中的任何一個功能部件的任何節(jié)點所將需要的硬件屬性。該方法包括請求虛擬基礎(chǔ)設(shè)施平臺起動足以在單獨虛擬機(VM)中執(zhí)行功能部件的每個實例的多個VM。VM中的每個VM (i)被配置用于支持由功能部件中的至少一個功能部件所需要的硬件屬性;并且(ii)包括被配置用于與部署模塊通信的代理部件。該方法還包括弓丨導(dǎo)VM中的每個VM中的代理部件中的每個代理部件在VM中安裝代碼,該代碼實施功能部件中的與VM的硬件屬性兼容的功能部件,由此使VM作為應(yīng)用的功能部件的實例之一而執(zhí)行。
[0007]—種非瞬態(tài)計算機可讀存儲介質(zhì)包括指令,這些指令在計算設(shè)備中執(zhí)行時部署具有在多個不同節(jié)點上執(zhí)行的多個功能部件的應(yīng)用。根據(jù)一個實施例,非瞬態(tài)計算機可讀存儲介質(zhì)包括用于執(zhí)行由部署模塊接收用于應(yīng)用的規(guī)范的步驟的指令,其中規(guī)范指定(i)待部署的應(yīng)用的每個功能部件的實例數(shù)目;以及(ii)執(zhí)行功能部件中的任何一個功能部件的任何節(jié)點所將需要的硬件屬性。指令還執(zhí)行請求虛擬基礎(chǔ)設(shè)施平臺起動足以在單獨虛擬機(VM)中執(zhí)行功能部件的每個實例的多個VM的步驟。VM中的每個VM (i)被配置用于支持功能部件中的至少一個功能部件所需要的硬件屬性;并且(ii)包括被配置用于與部署模塊通信的代理部件。指令還執(zhí)行引導(dǎo)VM中的每個VM中的代理部件中的每個代理部件在VM中安裝代碼的步驟,該代碼實施功能部件中的、與VM的硬件屬性兼容的功能部件,由此使VM作為應(yīng)用的功能部件的實例之一而執(zhí)行。
[0008]根據(jù)一個實施例,一種用于部署具有在多個不同節(jié)點上執(zhí)行的多個功能部件的應(yīng)用的計算機系統(tǒng)包括系統(tǒng)存儲器和被編程用于執(zhí)行以下步驟的處理器:由部署模塊接收用于應(yīng)用的規(guī)范。規(guī)范指定(i)待部署的應(yīng)用的每個功能部件的實例數(shù)目;以及(ii)執(zhí)行功能部件中的任何一個功能部件的任何節(jié)點所將需要的硬件屬性。處理器被編程用于執(zhí)行以下步驟:請求虛擬基礎(chǔ)設(shè)施平臺起動足以在單獨虛擬機(VM)中執(zhí)行功能部件的每個實例的多個VM,其中VM中的每個VM (i)被配置用于支持功能部件中的至少一個功能部件所需要的硬件屬性;并且(ii)包括被配置用于與部署模塊通信的代理部件。處理器還被編程用于執(zhí)行以下步驟:引導(dǎo)VM中的每個VM中的代理部件中的每個代理部件在VM中安裝代碼,該代碼實施功能部件中的與VM的硬件屬性兼容的功能部件,由此使VM作為應(yīng)用的功能部件的實例之一而執(zhí)行。
【專利附圖】
【附圖說明】[0009]圖1描繪多節(jié)點分布式應(yīng)用的廣義示意圖。
[0010]圖2描繪圖1的多節(jié)點分布式應(yīng)用的一個示例、即云計算平臺應(yīng)用。
[0011]圖3描繪用于多節(jié)點分布式應(yīng)用的部署系統(tǒng)的一個實施例。
[0012]圖4描繪部署系統(tǒng)的部署引導(dǎo)器和代理的一個實施例。
[0013]圖5描繪用于由部署引導(dǎo)器來部署云計算平臺應(yīng)用的流程圖。
[0014]圖6描繪在部署云計算平臺應(yīng)用之后的圖4的部署系統(tǒng)。
【具體實施方式】
[0015]圖1描繪多節(jié)點分布式應(yīng)用100的廣義示意圖。多節(jié)點應(yīng)用100包括經(jīng)由消息總線104通信以向用戶106提供應(yīng)用服務(wù)的多個節(jié)點102 (例如前端和后端作業(yè))。每個節(jié)點102作為功能部件的實例執(zhí)行并且包括用于執(zhí)行功能部件在多節(jié)點應(yīng)用100內(nèi)的一個或者多個專門化任務(wù)的部件軟件應(yīng)用和/或庫。如以上描述的那樣,多節(jié)點應(yīng)用100的建立和部署可能是復(fù)雜的。例如由于多個節(jié)點102中的每個節(jié)點可以在多節(jié)點應(yīng)用100內(nèi)充當不同角色,所以節(jié)點102可以在不同網(wǎng)絡(luò)上、被連接到多個依賴服務(wù)108、使用不同部件軟件應(yīng)用、具有不同資源要求等等。
[0016]圖2描繪可以是多節(jié)點應(yīng)用100的一個示例的云計算平臺應(yīng)用200,該云計算平臺應(yīng)用動態(tài)提供將用來托管web應(yīng)用220的云計算服務(wù)。在于2010年4月26日提交并且標題為〃Cloud Platform Architecture〃的第12/767,010號美國專利申請中進一步描述云計算平臺應(yīng)用200的一個示例,該美國專利申請通過引用而整體結(jié)合于此。云計算平臺應(yīng)用200包括專門化功能部件、比如云控制器202、路由器204、應(yīng)用執(zhí)行代理206、健康管理器208、服務(wù)調(diào)配器210、服務(wù)212和消息總線214。這些功能部件以協(xié)調(diào)方式操作以提供web應(yīng)用220可以訪問的云計算服務(wù)、比如關(guān)系數(shù)據(jù)庫服務(wù)(例如MySQL等)、CRM (客戶關(guān)系管理)服務(wù)、web服務(wù)、應(yīng)用服務(wù)器服務(wù)(例如JBoSS、RailS等)、監(jiān)視服務(wù)、后臺任務(wù)調(diào)度器、記錄服務(wù)、消息服務(wù)、存儲器對象高速緩存服務(wù)和任何其它適當軟件服務(wù)。
[0017]在一個實施例中,云控制器202為開發(fā)者250提交的web應(yīng)用220編排部署過程。云控制器202與云計算平臺應(yīng)用200的其它功能部件交互以綁定提交的web應(yīng)用220需要的服務(wù)和用于向應(yīng)用執(zhí)行代理206傳輸用于部署的包web應(yīng)用。健康管理器208通過監(jiān)視由云計算平臺應(yīng)用200的其它功能部件在消息總線214上廣播的消息來跟蹤和維護云計算平臺應(yīng)用200的“健康”。Web應(yīng)用220訪問云計算平臺應(yīng)用200提供的服務(wù)集212、比如關(guān)系數(shù)據(jù)庫服務(wù)(例如MySQL等)、監(jiān)視服務(wù)、后臺任務(wù)調(diào)度器、記錄服務(wù)、消息服務(wù)、存儲器對象高速緩存服務(wù)等。服務(wù)調(diào)配器210作為在服務(wù)212與云計算平臺應(yīng)用200的其它功能部件(例如云控制器202、健康管理器208、路由器204等)之間的通信中介而服務(wù),并且輔助在web應(yīng)用部署過程期間向web應(yīng)用220調(diào)配或者綁定這種可用服務(wù)的任務(wù)。消息總線214提供公共接口,通過該公共接口,云計算平臺應(yīng)用200的功能部件、比如服務(wù)調(diào)配器210、云控制器202、健康管理器208、路由器204和應(yīng)用執(zhí)行代理206可以通信和接收通知。
[0018]一旦云控制器202成功編排web應(yīng)用220在一個或者多個應(yīng)用執(zhí)行代理206中的部署,終端用戶106可以例如通過在膝上型計算機或者一般為任何計算設(shè)備上駐留的web瀏覽器或者任何其它適當客戶端應(yīng)用訪問web應(yīng)用220。路由器204接收web瀏覽器的訪問請求(例如統(tǒng)一資源定位符或者URL)并且向托管web應(yīng)用220的對應(yīng)系統(tǒng)路由請求。[0019]如描述的那樣,每個部件在云計算平臺應(yīng)用200內(nèi)具有單獨角色——該角色具有單獨軟件應(yīng)用和庫依賴性(例如MySQL、Redis, MongoDB, Apache)——并且被特別構(gòu)建、配置、部署和維護用于云計算平臺應(yīng)用200作為整體工作。另外,由于通常在一個或者多個虛擬機(VM)中運行每個部件,所以每個VM也由系統(tǒng)管理員特別調(diào)配、配置、部署和維護。這樣,在其中部署web應(yīng)用220的云計算平臺應(yīng)用200本身具有繁瑣和復(fù)雜的部署過程。因而。實施例提供一種將自動化框架和工具化用于簡化、自動和可重復(fù)部署的用于云計算平臺應(yīng)用的部署技術(shù)。
[0020]圖3描繪具有用于部署多節(jié)點分布式應(yīng)用的部署系統(tǒng)306的多節(jié)點應(yīng)用平臺300的一個實施例。例如系統(tǒng)管理員302可以利用多節(jié)點應(yīng)用平臺300以部署圖2的其中可以部署web應(yīng)用220的云計算平臺應(yīng)用200。
[0021]在一個實施例中,系統(tǒng)管理員302通過通信地連接到部署系統(tǒng)306的管理客戶端304、例如通過管理客戶端304的命令行接口(CLI)或者其它用戶接口發(fā)出一個或者多個命令來指示部署系統(tǒng)306。除了發(fā)送系統(tǒng)管理員302發(fā)出的一個或者多個命令之外,管理客戶端304還可以如后文描述的那樣發(fā)送成捆應(yīng)用數(shù)據(jù)、配置文件和其它信息(統(tǒng)稱為“發(fā)布”),這些應(yīng)用數(shù)據(jù)、配置文件和其它信息由部署系統(tǒng)306解包、處理和/或分發(fā)以部署云計算平臺應(yīng)用200。除了發(fā)布之外,管理客戶端304還提供與發(fā)布關(guān)聯(lián)的部署清單(manifest),該部署清單描述云計算平臺應(yīng)用200在已經(jīng)部署云計算平臺應(yīng)用200之后的希望的計算環(huán)境。部署清單描述如后文將描述的希望的計算環(huán)境的特性、比如待利用的資源池(例如VM組)數(shù)目、待建立的網(wǎng)絡(luò)和其它設(shè)置并且在這一實施例中充當用于部署的規(guī)范。
[0022]多節(jié)點應(yīng)用平臺300包括在其上部署和執(zhí)行云計算平臺應(yīng)用200的基礎(chǔ)設(shè)施平臺308。在圖3的實施例中,基礎(chǔ)設(shè)施平臺308包括以提供虛擬化環(huán)境316的方式配置的硬件資源310如服務(wù)器312i至312n和一個或者多個存儲陣列網(wǎng)絡(luò)(SAN)如SAN314,該虛擬化環(huán)境支持跨服務(wù)器312i至3124丸行多個虛擬機(VM)。如以下進一步描述的那樣,這些VM提供虛擬計算資源——這些虛擬計算資源支持部署系統(tǒng)306執(zhí)行的服務(wù)和功能——以及用于托管云計算平臺應(yīng)用200的功能部件的虛擬計算資源。在一個實施例中,基礎(chǔ)設(shè)施平臺308被實施為提供計算機基礎(chǔ)設(shè)施作為服務(wù)的云基礎(chǔ)設(shè)施服務(wù)或者其它基礎(chǔ)設(shè)施即服務(wù)(“IaaS”)。
[0023]虛擬化環(huán)境316包括編排部件318 (例如在一個實施例中實施為在虛擬機中運行的過程),該編排部件監(jiān)視部署系統(tǒng)306的基礎(chǔ)設(shè)施資源消耗水平和要求(例如通過如以下進一步詳述的那樣監(jiān)視通過尋址和發(fā)現(xiàn)層334路由的通信),并且根據(jù)需要或者期望而向部署系統(tǒng)306提供附加基礎(chǔ)設(shè)施資源。例如,如果部署系統(tǒng)306要求附加VM來托管云計算平臺應(yīng)用200的新部署的功能部件并且縮放當前運行的多節(jié)點應(yīng)用以支持高峰需求,則編排部件318可以發(fā)起和管理在服務(wù)器312i至312n上虛擬機的實例化以支持這樣的需要。在與圖3的實施例相似的實施例的一個示例實現(xiàn)方式中,通過在服務(wù)器312i至312,上運行加利福尼亞帕羅奧多的VMware Inc.提供的基于VMware ESX?的管理程序技術(shù)來實施虛擬化環(huán)境316(但是應(yīng)當認識到可以利用與這里的教導(dǎo)一致的包括Xen?和Microsoft Hyper-V虛擬化技術(shù)的任何其它虛擬化技術(shù))。
[0024]在圖3的實施例中,部署系統(tǒng)306包括部署引導(dǎo)器320 (例如在一個或者多個VM上運行),該部署引導(dǎo)器根據(jù)已經(jīng)向部署系統(tǒng)306提交的部署清單編排用于云計算平臺應(yīng)用200的部署過程。部署引導(dǎo)器320接收部署清單的指令并且與部署系統(tǒng)306的其它部件交互以生成云計算平臺應(yīng)用200將被部署到其上的邏輯基礎(chǔ)設(shè)施350。在圖3中描繪的實施例中,部署引導(dǎo)器320暴露通信接口、比如代表狀態(tài)轉(zhuǎn)移(REST)架構(gòu),通過該通信接口,部署引導(dǎo)器320從客戶端(例如管理客戶端304)接收管理命令和其它部署數(shù)據(jù)(例如發(fā)布)。
[0025]部署引導(dǎo)器320可以調(diào)配VM (被標識為主干單元(stem cell) VM32+至324M)以托管云計算平臺應(yīng)用200的功能部件、比如云控制器202、應(yīng)用執(zhí)行代理206、健康管理器208、路由器204、服務(wù)調(diào)配器210等。在圖3的實施例中,部署引導(dǎo)器320請求基礎(chǔ)設(shè)施平臺308動態(tài)創(chuàng)建和刪除主干單元VM (例如主干單元VM321至324M)。主干單元VM32+至324m是基于預(yù)定義VM模板(被稱為“主干單元”)創(chuàng)建的VM,該VM模板包括基本操作系統(tǒng)、代理322以及支持庫、運行時間和/或應(yīng)用。代理322與部署引導(dǎo)器320協(xié)調(diào)配置主干單元VM321至324m以執(zhí)行云計算平臺應(yīng)用200的各種角色。代理322將特定作業(yè)應(yīng)用于在其上執(zhí)行的主干單元VM321,從而主干單元VM321在云計算平臺應(yīng)用200內(nèi)執(zhí)行特定管理角色(例如云控制器202、健康管理器208、應(yīng)用執(zhí)行代理206等之一的作業(yè))。 [0026]除了調(diào)配主干單元VM之外,部署引導(dǎo)器320可以請求基礎(chǔ)設(shè)施平臺308動態(tài)創(chuàng)建和刪除被稱為工作器330的臨時VM,這些臨時VM執(zhí)行有助于部署的一個或者多個處理任務(wù)。在一個實施例中,例如可以創(chuàng)建工作器330以執(zhí)行將要在主干單元VM321至324?上部署的部件應(yīng)用和/或庫的軟件編譯。用與主干單元VM321至324M相似的配置來配置工作器330 (例如具有相同虛擬硬件規(guī)范、架構(gòu)和/或配置),以使編譯的軟件能夠在主干單元VM321至324?上執(zhí)行。可以在用來保持在部署過程期間生成的非自然成分的對象存儲庫332 (例如團點(blob)存儲庫)中存儲處理任務(wù)(例如軟件編譯)的結(jié)果和其它高速緩存的數(shù)據(jù)。另外,部署引導(dǎo)器320可以利用(例如在一個或者多個VM中運行的)服務(wù)集328以有助于編排部署過程。例如關(guān)系數(shù)據(jù)庫服務(wù)(例如MySQL等)、監(jiān)視服務(wù)、后臺任務(wù)調(diào)度器、記錄服務(wù)、消息收發(fā)服務(wù)、存儲器對象高速緩存服務(wù)等可以包括服務(wù)328。
[0027]尋址和發(fā)現(xiàn)層334提供公共接口,通過該公共接口,部署系統(tǒng)306的部件、比如部署引導(dǎo)器320、健康監(jiān)視器336、服務(wù)328、工作器330和在主干單元VM324:至324M上執(zhí)行的一個或者多個代理322可以通信和接收通知。例如部署引導(dǎo)器320可以利用尋址和發(fā)現(xiàn)層334以請求從基礎(chǔ)設(shè)施平臺308調(diào)配VM并且在部署云計算平臺應(yīng)用200期間向代理322提供部署指令。類似地,主干單元VM321可以通過尋址和發(fā)現(xiàn)層334在部署云計算平臺應(yīng)用200期間通過尋址和發(fā)現(xiàn)層334與其它主干單元VM324m通信。在一個實施例中,實施尋址和發(fā)現(xiàn)層334為消息代理服務(wù)(例如在一個或者多個VM中運行),該消息代理服務(wù)定義公共協(xié)議和消息格式,通過該公共協(xié)議和消息格式,部署系統(tǒng)306的部件可以交換消息并且廣播通知和其它信息。在這樣的實施例中,部署系統(tǒng)306的部件例如通過已知認證技術(shù)(例如口令等)與消息代理服務(wù)建立連接(例如有時也被稱為“訂閱”消息代理服務(wù)),并且一旦連接到消息代理服務(wù)就可以向和從也已經(jīng)訂閱消息代理系統(tǒng)的其它部件提供、接收和請求消息、通知和其它相似信息??梢栽谝粋€實施例中使用的消息代理服務(wù)的一個示例是基于AMPQ (高級消息排隊協(xié)議)開放協(xié)議標準的RabbitMQ?。然而應(yīng)當理解,可以實施除了這樣的消息代理服務(wù)之外的備選接口和通信方案用于尋址和發(fā)現(xiàn)層334。
[0028]部署系統(tǒng)306還包括(例如在VM中運行的)健康監(jiān)視器336,該健康監(jiān)視器通過監(jiān)視部署系統(tǒng)306的其它部件在尋址和發(fā)現(xiàn)層334上廣播的消息來跟蹤和維護部署系統(tǒng)306的“健康”。例如健康監(jiān)視器336可以檢測缺乏來自(例如在主干單元VM上運行的)代理322的通信并且確定主干單元VM的故障(例如云計算平臺應(yīng)用200的部件的故障)。健康監(jiān)視器336可以向部署引導(dǎo)器320自動廣播請求以重啟有故障的主干單元W、或者提供替換的主干單元VM以執(zhí)行相同角色。健康監(jiān)視器336還可以被配置用于發(fā)起對有故障的可用服務(wù)或者部署系統(tǒng)306的其它部件(例如部署引導(dǎo)器320、對象存儲庫332、服務(wù)328、工作器330和在主干單元VM324至324M上執(zhí)行的一個或者多個代理322等)的重啟。
[0029]應(yīng)當認識到可以實施與這里的教導(dǎo)一致的除了圖3的實施例之外的部署系統(tǒng)架構(gòu)。例如盡管圖3在多節(jié)點應(yīng)用平臺300托管的基礎(chǔ)設(shè)施平臺308上實施部署系統(tǒng)306,但是應(yīng)當認識到部署系統(tǒng)306可以由除了多節(jié)點應(yīng)用平臺300之外的實體在任何類型的硬件基礎(chǔ)設(shè)施上面、比如在非虛擬化基礎(chǔ)設(shè)施平臺上實施為直接在硬件資源310上的進程或者守護進程(daemon)。還應(yīng)當認識到實施例可以用松耦合方式配置部署系統(tǒng)306和基礎(chǔ)設(shè)施平臺308,而在部署系統(tǒng)306與基礎(chǔ)設(shè)施平臺308之間的通信僅通過基礎(chǔ)設(shè)施308的編排部件318發(fā)生,該編排部件通過連接到尋址和發(fā)現(xiàn)層334來監(jiān)視硬件資源消耗。在這樣的松耦合實施例中,應(yīng)當認識到可以在任何基礎(chǔ)設(shè)施平臺上、包括在膝上型或者個人計算機上(例如在該情況下,部署系統(tǒng)306的每個部件在膝上型或者個人計算機上作為單獨進程或者后臺程序運行)實施部署系統(tǒng)306。
[0030]圖4描繪部署引導(dǎo)器320的一個實施例的更具體視圖。部署引導(dǎo)器320基于部署清單402管理云計算平臺應(yīng)用200的部署,該部署清單描述云計算平臺應(yīng)用200的希望的部署后計算環(huán)境。部署清單402例如按照名稱和/或版本號指定待部署的云計算平臺應(yīng)用200的發(fā)布。部署清單402提供云計算平臺應(yīng)用200的全規(guī)范,該規(guī)范包括具體功能部件(例如云控制器202、健康管理器208、應(yīng)用執(zhí)行代理206等)、基礎(chǔ)設(shè)施平臺308提供的邏輯基礎(chǔ)設(shè)施350 (例如主干單元VM324m)、功能部件的向邏輯基礎(chǔ)設(shè)施350上的映射。例如部署清單402可以指定應(yīng)當調(diào)配十個主干單元VM以托管組成云計算平臺應(yīng)用200的部件。系統(tǒng)管理員可以創(chuàng)建用于云計算平臺應(yīng)用200的初始部署的部署清單402、修改部署清單402以向上或者向下縮放已經(jīng)部署的云計算平臺應(yīng)用200或者升級部署的云計算平臺應(yīng)用200。在一個具體實現(xiàn)中,部署清單402是用結(jié)構(gòu)化文檔格式、比如YAML或者可擴展標記語言(XML)格式化的配置文件,該配置文件具有有助于部署系統(tǒng)306的部署過程的名稱-值對和/或名稱-值對的分級節(jié)段。結(jié)合下表I中所示樣本部署清單來描述部署清單402的細節(jié)。
[0031]
【權(quán)利要求】
1.一種用于部署應(yīng)用的方法,所述應(yīng)用具有在多個不同節(jié)點上執(zhí)行的多個功能部件,所述方法包括: 由部署模塊接收用于所述應(yīng)用的規(guī)范,其中所述規(guī)范指定(i)待部署的所述應(yīng)用的每個功能部件的實例數(shù)目;以及(ii)由執(zhí)行所述功能部件中的任何一個功能部件的任何節(jié)點所將需要的硬件屬性; 請求虛擬基礎(chǔ)設(shè)施平臺起動足以在單獨虛擬機(VM)中執(zhí)行功能部件的每個實例的多個VM,其中所述VM中的每個VM (i )被配置用于支持由所述功能部件中的至少一個功能部件所需要的硬件屬性;并且(ii)包括被配置用于與所述部署模塊通信的代理部件;以及 引導(dǎo)所述VM中的每個VM中的所述代理部件中的每個代理部件在所述VM中安裝代碼,所述代碼實施所述功能部件中的、與所述VM的所述硬件屬性兼容的功能部件,由此使所述VM作為所述應(yīng)用的所述功能部件的所述實例之一而執(zhí)行。
2.根據(jù)權(quán)利要求1所述的方法,其中所述引導(dǎo)所述代理部件中的每個代理部件安裝代碼還包括: 引導(dǎo)所述VM中的每個VM中的所述代理部件中的每個代理部件安裝計算機可執(zhí)行指令包,所述計算機可執(zhí)行指令包由所述規(guī)范針對每個功能部件而指定、并且被配置用于在由每個VM執(zhí)行時執(zhí)行所述功能部件的操作。
3.根據(jù)權(quán)利要求1所述的方法,其中用于待部署的所述應(yīng)用的所述規(guī)范指定由執(zhí)行所述功能部件中的任何一個功能部件的任何節(jié)點所將需要的網(wǎng)絡(luò)屬性;并且其中所述VM中的每個VM根據(jù)由所述功能部件中的至少一個功能部件所需要的所述網(wǎng)絡(luò)屬性而被配置。
4.根據(jù)權(quán)利要求1所述的方法,其中所述規(guī)范指定用于所述功能部件中的任何一個功能部件的多個配置設(shè)置;并且`其中引導(dǎo)所述代理部件中的每個代理部件安裝代碼還包括: 取回用于所述功能部件之一的配置文件,其中所述配置文件指定具有變量的至少一個配置設(shè)置,所述變量引用所述規(guī)范中的所述多個配置設(shè)置之一; 修改所述配置文件以用由所述規(guī)范提供的所述引用的配置設(shè)置的值替換所述變量;以及 向?qū)εc修改的所述配置文件對應(yīng)的所述功能部件的實例進行托管的所述VM中的每個VM中的所述代理部件中的每個代理部件提供修改的所述配置文件。
5.根據(jù)權(quán)利要求1所述的方法,還包括: 請求所述虛擬基礎(chǔ)設(shè)施平臺以根據(jù)由所述規(guī)范指定的輔助VM的數(shù)目起動多個輔助VM,其中所述輔助VM中的每個輔助VM被配置用于支持由所述功能部件中的至少一個功能部件所需要的所述硬件屬性; 引導(dǎo)所述輔助VM中的每個輔助VM以將獨立于機器架構(gòu)的代碼編譯成可由所述VM中的每個VM執(zhí)行以作為所述應(yīng)用的所述功能部件的所述實例之一執(zhí)行的代碼。
6.根據(jù)權(quán)利要求1所述的方法,其中所述請求所述虛擬基礎(chǔ)設(shè)施平臺以起動所述多個VM還包括: 請求使用指定盤映像的模板來調(diào)配所述VM中的每個VM,所述盤映像具有訪客操作系統(tǒng)和在其上安裝的所述代理部件。
7.根據(jù)權(quán)利要求1所述的方法,其中用于所述應(yīng)用的所述多個功能部件被配置用于協(xié)調(diào)以提供用于托管一個或者多個web應(yīng)用的云計算服務(wù)。
8.一種包括指令的非瞬態(tài)計算機可讀存儲介質(zhì),所述指令在計算設(shè)備中執(zhí)行時通過執(zhí)行以下步驟來部署具有在多個不同節(jié)點上執(zhí)行的多個功能部件的應(yīng)用: 由部署模塊接收用于所述應(yīng)用的規(guī)范,其中所述規(guī)范指定(i)待部署的所述應(yīng)用的每個功能部件的實例數(shù)目;以及和(ii)執(zhí)行所述功能部件中的任何一個功能部件的任何節(jié)點所將需要的硬件屬性; 請求虛擬基礎(chǔ)設(shè)施平臺起動足以在單獨虛擬機(VM)中執(zhí)行功能部件的每個實例的多個VM,其中所述VM中的每個VM (i)被配置用于支持所述功能部件中的至少一個功能部件所需要的硬件屬性;并且(ii)包括被配置用于與所述部署模塊通信的代理部件;以及 引導(dǎo)所述VM中的每個VM中的所述代理部件中的每個代理部件在所述VM中安裝代碼,所述代碼實施所述功能部件中的、與所述VM的所述硬件屬性兼容的功能部件,由此使所述VM作為所述應(yīng)用的所述功能部件的所述實例之一而執(zhí)行。
9.根據(jù)權(quán)利要求8所述的非瞬態(tài)計算機可讀存儲介質(zhì),其中所述用于引導(dǎo)所述代理部件中的每個代理部件安裝代碼的指令還包括用于以下步驟的指令: 引導(dǎo)所述VM中的每個VM中的所述代理部件中的每個代理部件安裝計算機可執(zhí)行指令包,所述計算機可執(zhí)行指令包由所述規(guī)范針對每個功能部件而指定、并且被配置用于在由每個VM執(zhí)行時執(zhí)行所述功能部件的操作。
10.根據(jù)權(quán)利要求8所述的非瞬態(tài)計算機可讀存儲介質(zhì),其中用于待部署的所述應(yīng)用的所述規(guī)范指定由執(zhí)行所述功能部件中的任何一個功能部件的任何節(jié)點所將需要的網(wǎng)絡(luò)屬性;并且其中所述VM中的每個VM根據(jù)所述功能部件中的至少一個功能部件所需要的所述網(wǎng)絡(luò)屬性而被配置。
11.根據(jù)權(quán)利要求8所述的非瞬態(tài)計算機可讀存儲介質(zhì),其中所述規(guī)范指定用于所述功能部件中的任何一個功能部件的多個配置設(shè)置;并且其中所述用于引導(dǎo)所述代理部件中的每個代理部件安裝代碼的指令還包括用于以下步驟的指令: 取回用于所述功能部件之一的配置文件,其中所述配置文件指定具有變量的至少一個配置設(shè)置,所述變量引用所述規(guī)范中的所述多個配置設(shè)置之一; 修改所述配置文件以用由所述規(guī)范提供的所述引用的配置設(shè)置的值替換所述變量;以及 向?qū)εc修改的所述配置文件對應(yīng)的所述功能部件的實例進行托管的所述VM中的每個VM中的所述代理部件中的每個代理部件提供修改的所述配置文件。
12.根據(jù)權(quán)利要求8所述的非瞬態(tài)計算機可讀存儲介質(zhì),還包括用于以下步驟的指令: 請求所述虛擬基礎(chǔ)設(shè)施平臺以根據(jù)由所述規(guī)范指定的輔助VM的數(shù)目起動多個輔助VM,其中所述輔助VM中的每個輔助VM被配置用于支持所述功能部件中的至少一個功能部件所需要的所述硬件屬性; 引導(dǎo)所述輔助VM中的每個輔助VM以將獨立于機器架構(gòu)的代碼編譯成可由所述VM中的每個VM執(zhí)行以作為所述應(yīng)用的所述功能部件的所述實例之一執(zhí)行的代碼。
13.根據(jù)權(quán)利要求8所述的非瞬態(tài)計算機可讀存儲介質(zhì),其中所述用于請求所述虛擬基礎(chǔ)設(shè)施平臺起動所述多個VM的指令還包括用于以下步驟的指令: 請求使用指定盤映像的模板來調(diào)配所述VM中的每個VM,所述盤映像具有訪客操作系統(tǒng)和在其上安裝的所述代理部件。
14.根據(jù)權(quán)利要求8所述的非瞬態(tài)計算機可讀存儲介質(zhì),其中用于所述應(yīng)用的所述多個功能部件被配置用于協(xié)調(diào)提供用于托管一個或者多個web應(yīng)用的云計算服務(wù)。
15.一種用于部署應(yīng)用的計算機系統(tǒng),所述應(yīng)用具有在多個不同節(jié)點上執(zhí)行的多個功能部件,所述計算機系統(tǒng)包括系統(tǒng)存儲器和被編程用于執(zhí)行以下步驟的處理器: 由部署模塊接收用于所述應(yīng)用的規(guī)范,其中所述規(guī)范指定(i)待部署的所述應(yīng)用的每個功能部件的實例數(shù)目;以及(ii)由執(zhí)行所述功能部件中的任何一個功能部件的任何節(jié)點所將需要的硬件屬性; 請求虛擬基礎(chǔ)設(shè)施平臺起動足以在單獨虛擬機(VM)中執(zhí)行功能部件的每個實例的多個VM,其中所述VM中的每個VM (i)被配置用于支持所述功能部件中的至少一個功能部件所需要的硬件屬性;并且(ii)包括被配置用于與所述部署模塊通信的代理部件;以及引導(dǎo)所述VM中的每個VM中的所述代理部件中的每個代理部件在所述VM中安裝代碼,所述代碼實施所述功能部件中的、與所述VM的所述硬件屬性兼容的功能部件,由此使所述VM作為所述應(yīng)用的所述功能部件的所述實例之一而執(zhí)行。
16.根據(jù)權(quán)利要求15所述的計算機系統(tǒng),其中所述處理器還被編程用于執(zhí)行以下步驟: 引導(dǎo)所述VM中的每個VM中的所述代理部件中的每個代理部件安裝計算機可執(zhí)行指令包,所述計算機可執(zhí)行指令包由所述規(guī)范針對每個功能部件而指定、并且被配置用于在由每個VM執(zhí)行時執(zhí)行所述功能部件的操作。
17.根據(jù)權(quán)利要求15所述的計算機系統(tǒng),其中用于待部署的所述應(yīng)用的所述規(guī)范指定執(zhí)行所述功能部件中的任何一個功能部件的任何節(jié)點所將需要的網(wǎng)絡(luò)屬性;并且其中所述VM中的每個VM根據(jù)所述功能`部件中的至少一個功能部件所需要的所述網(wǎng)絡(luò)屬性而被配置。
18.根據(jù)權(quán)利要求15所述的計算機系統(tǒng),其中所述規(guī)范指定用于所述功能部件中的任何一個功能部件的多個配置設(shè)置;并且其中所述處理器還被編程用于執(zhí)行以下步驟: 取回用于所述功能部件之一的配置文件,其中所述配置文件指定具有變量的至少一個配置設(shè)置,所述變量引用所述規(guī)范中的所述多個配置設(shè)置之一; 修改所述配置文件以用由所述規(guī)范提供的所述引用的配置設(shè)置的值替換所述變量;以及 向?qū)εc修改的所述配置文件對應(yīng)的所述功能部件的實例進行托管的所述VM中的每個VM中的所述代理部件中的每個代理部件提供修改的所述配置文件。
19.根據(jù)權(quán)利要求15所述的計算機系統(tǒng),其中所述處理器還被編程用于執(zhí)行以下步驟: 請求所述虛擬基礎(chǔ)設(shè)施平臺以根據(jù)由所述規(guī)范指定的輔助VM的數(shù)目起動多個輔助VM,其中所述輔助VM中的每個輔助VM被配置用于支持所述功能部件中的至少一個功能部件所需要的所述硬件屬性; 引導(dǎo)所述輔助VM中的每個輔助VM以將獨立于機器架構(gòu)的代碼編譯成可由所述VM中的每個VM執(zhí)行以作為所述應(yīng)用的所述功能部件的所述實例之一執(zhí)行的代碼。
20.根據(jù)權(quán)利要求15所述的計算機系統(tǒng),其中用于所述應(yīng)用的所述多個功能部件被配置用于協(xié)調(diào)提供用于托管一個或者多個web應(yīng)用的云計算服務(wù)。
【文檔編號】G06F9/455GK103608773SQ201280027619
【公開日】2014年2月26日 申請日期:2012年4月12日 優(yōu)先權(quán)日:2011年4月12日
【發(fā)明者】V·斯皮瓦克, K·斯卡爾, O·沙爾迪賓 申請人:威睿公司