專利名稱:計算機群集中的目標(biāo)狀態(tài)通信的制作方法
技術(shù)領(lǐng)域:
本申請涉及改進計算機群集中的通信。特別是改進計算機群集中的目標(biāo)狀態(tài)通
fn °
背景技術(shù):
許多計算活動正向著云計算環(huán)境,例如計算機群集,的方向進展。在此所使用的計算機群集包括一組真實的和/或虛擬的機器,該組機器通常由控制器實體來管理以執(zhí)行例如存儲和計算的動作。在此被稱為構(gòu)造控制器的控制器實體是一種分配計算機群集中的資源的計算模塊。構(gòu)造控制器可以主存在單個機器上或跨多個機器分布,并且它可以在計算機群集的內(nèi)部和/或外部。計算機群集的構(gòu)造控制器可以包括互連節(jié)點的網(wǎng)絡(luò),其中每個節(jié)點可以主存在一個或多個真實的和/或虛擬的機器上。構(gòu)造控制器可以與計算實例進行交互,所述實例可以執(zhí)行如構(gòu)造控制器所請求的計算,并且,構(gòu)造控制器的請求可以基于由請求使用計算機群集資源的客戶所提供的輸入。 計算實例可以是,例如,真實的機器或主存在真實的機器上的虛擬的機器。在計算實例中, 一個或多個角色可以運行。一個角色是部署的模塊,例如應(yīng)用程序,它在計算實例中運行以執(zhí)行計算。
發(fā)明內(nèi)容
無論先前的云計算工具和技術(shù)有何優(yōu)點,它們都未能認識到在此描述和主張的計算機群集的目標(biāo)狀態(tài)通信工具和技術(shù),也沒有認識到由這種工具和技術(shù)所產(chǎn)生的優(yōu)點。在一個實施例中,工具和技術(shù)能夠包括將目標(biāo)狀態(tài)指示符從計算機群集的構(gòu)造控制器傳遞到由計算機群集中的構(gòu)造控制器所管理的多個計算實例中的每個實例??梢愿鶕?jù)定義多個可能的目標(biāo)狀態(tài)的結(jié)構(gòu)化協(xié)議來格式化所述目標(biāo)狀態(tài)指示符。另外,可以從計算實例接收狀況報告。每個狀況報告可以指示相對于目標(biāo)狀態(tài)的計算實例之一的當(dāng)前狀態(tài), 所述目標(biāo)狀態(tài)已在傳遞到所述計算實例中的該計算實例的目標(biāo)狀態(tài)指示符中被指示過。如在此處所使用的,計算實例的目標(biāo)狀態(tài)是指計算實例期望達到的狀態(tài)。例如,目標(biāo)狀態(tài)可以是整個計算實例的狀態(tài)和/或在計算實例中的一個或多個角色的狀態(tài)。例如, 目標(biāo)狀態(tài)可以包括計算實例或計算實例中的一個或多個角色的已啟動或已停止?fàn)顟B(tài)。作為另一個示例,目標(biāo)狀態(tài)可以是已啟動狀態(tài),對處于該已啟動狀態(tài)的計算實例和/或角色應(yīng)用一個或多個配置。如在此所使用,狀況報告是指示計算實例的狀況(當(dāng)前的狀態(tài)和/或健康狀況) 的數(shù)據(jù)結(jié)構(gòu)(消息、文件等)。計算實例相對于目標(biāo)狀態(tài)的當(dāng)前狀態(tài)是相對于由目標(biāo)狀態(tài)所指定的參數(shù)的計算實例的當(dāng)前狀態(tài)。僅作為一個示例,如果目標(biāo)狀態(tài)角色處于已啟動狀態(tài), 則當(dāng)前狀態(tài)的示例可以包括該角色的下述項已停止;正在啟動;以及已啟動。計算實例的健康狀況是指計算實例的當(dāng)前健康屬性而不是相對于目標(biāo)狀態(tài)的計算實例的當(dāng)前狀態(tài)。在工具和技術(shù)的另一個實施例中,可以將目標(biāo)狀態(tài)指示符從計算機群集的構(gòu)造控制器傳遞到計算機群集中的計算實例。目標(biāo)狀態(tài)指示符可以指示用于計算實例的目標(biāo)狀態(tài)。響應(yīng)于在計算實例處接收到目標(biāo)狀態(tài)指示符,計算實例可以向著目標(biāo)狀態(tài)轉(zhuǎn)變。當(dāng)計算實例正向目標(biāo)狀態(tài)轉(zhuǎn)變時,可以將狀況報告從計算實例傳遞到構(gòu)造控制器。狀況報告可以指示相對于目標(biāo)狀態(tài)的計算實例的當(dāng)前狀態(tài)。在工具和技術(shù)的又另一個實施例中,可以將目標(biāo)狀態(tài)指示符從計算機群集的構(gòu)造控制器傳遞到計算機群集中的計算實例。這種通信可以包括將目標(biāo)狀態(tài)指示符傳遞到根據(jù)結(jié)構(gòu)化協(xié)議的不同版本格式化的不同計算實例??梢栽跇?gòu)造控制器處從計算實例接收狀況報告,并且,每個狀況報告可以包括相對于目標(biāo)狀態(tài)的計算實例之一的當(dāng)前狀態(tài),所述目標(biāo)狀態(tài)在先前傳遞到該計算實例的目標(biāo)狀態(tài)指示符中被指示。提供本發(fā)明內(nèi)容是為了以簡化的形式介紹一些概念。這些概念將在以下具體實施方式
中進一步描述。本概述并不旨在標(biāo)識所要求保護主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護主題的范圍。類似地,本發(fā)明不限于解決在背景技術(shù)具體實施方式
、或附圖中討論的特定技術(shù)、工具、環(huán)境、缺點、或優(yōu)點的實現(xiàn)。
圖1是其中可實現(xiàn)所描述的各實施例中的一個或多個實施例的合適的計算環(huán)境的框圖。圖2是一計算機群集的框圖;圖3是說明在計算機群集的構(gòu)造控制器和計算實例之間的通信的示意圖。圖4是計算機群集目標(biāo)狀態(tài)通信技術(shù)的流程圖。圖5是另一計算機群集目標(biāo)狀態(tài)通信技術(shù)的流程圖。圖6是又一計算機群集目標(biāo)狀態(tài)通信技術(shù)的流程圖。
具體實施例方式在此描述的實施例是針對用于在計算機群集的構(gòu)造控制器和計算機群集中的計算實例之間的狀態(tài)信息的改進通信的技術(shù)和工具。目標(biāo)狀態(tài)通信可以提供各種益處,例如, 允許計算機群集中的計算實例具有附加的獨立性,因為,它們驅(qū)動自身向?qū)崿F(xiàn)目標(biāo)狀態(tài)前進,而不是由計算機群集的構(gòu)造控制器主動驅(qū)動其向著目標(biāo)狀態(tài)。這樣的改善可源于分開或組合地使用各種技術(shù)和工具。這樣的技術(shù)和工具可以包括使用例如結(jié)構(gòu)化協(xié)議之類的協(xié)議來用計算實例的目標(biāo)狀態(tài)的指示呈現(xiàn)所述計算實例,以及從計算實例接收狀況報告,該狀況報告可以指示該計算實例的當(dāng)前狀態(tài),并且還可能指示計算實例的健康狀況。計算機群集的構(gòu)造控制器可以同時支持協(xié)議的多個版本,使得不同的計算實例可以使用協(xié)議的不同版本以與同一構(gòu)造控制器通信。例如,如果一個或多個計算實例能夠使用協(xié)議的較舊版本來通信,但不能使用正由構(gòu)造控制器所使用的協(xié)議的最近版本來通信的情況下是很有用的。如果狀況報告指示計算實例中的使得有正當(dāng)理由(warrant)執(zhí)行合適動作的缺陷,則構(gòu)造控制器可以響應(yīng)于來自計算實例的狀況報告來采取這樣的動作。例如,在實例中的角色可以是無響應(yīng)的,或者實例可以是有響應(yīng)的,但不能向先前傳遞給該實例的目標(biāo)狀態(tài)轉(zhuǎn)變。構(gòu)造控制器可以將特定計算實例中的問題告知用戶、重啟所述實例、將該計算實例中的角色從一個物理機器遷移到不同的物理機器上,或依據(jù)缺陷的本質(zhì)采取其它合適的動作??梢园床幌嘈乓粋€計算實例的報告的方式約束響應(yīng)損害其他計算實例。例如,構(gòu)造控制器可以發(fā)送通信以關(guān)閉虛擬機器的計算實例,但它可以避免關(guān)閉主存該虛擬機器的計算實例以及其它虛擬機器的計算實例的物理機器。因此,構(gòu)造控制器響應(yīng)可以影響該構(gòu)造控制器從其接收狀況報告的計算實例,但該響應(yīng)可以僅限于避免響應(yīng)于所述報告對其它計算實例造成不利影響。所附權(quán)利要求中定義的主題不必限于本文描述的益處。本發(fā)明的特定實現(xiàn)可提供本文描述的益處的全部、一些、或未提供本文描述的益處。盡管本文出于呈現(xiàn)的目的以特定的順序次序描述了用于各種技術(shù)的操作,但應(yīng)理解除非要求特定的排序,否則這種描述方式涵蓋了操作順序上的重新安排。例如,在某些情況下,可以重新安排或并發(fā)執(zhí)行順序地描述的操作。本文參照流程圖描述的技術(shù)可被用于本文描述的一個或多個系統(tǒng)和/或用于一個或多個其他系統(tǒng)。例如,在此描述的各種過程可用硬件或軟件、或兩者的組合來實現(xiàn)。此夕卜,為了簡單起見,流程圖可能未示出可結(jié)合其他技術(shù)來使用特定技術(shù)的各種方式。I.示例性計算環(huán)境圖1示出其中可實現(xiàn)所描述的各實施例中的一個或多個實施例的合適的計算環(huán)境(100)的一般化示例。例如,可將一個或多個此類計算環(huán)境用作計算機群集中的機器。例如,環(huán)境(100)可以被用作物理機器,該物理機器本身是計算實例,或者該物理機器主存一個或多個虛擬機器的計算實例。作為另一個示例,環(huán)境(100)可以被用于主存計算機群集的構(gòu)造控制器的至少一部分。一般而言,可使用各種不同的通用或?qū)S糜嬎阆到y(tǒng)配置。適用于此處所描述的工具和技術(shù)的公知計算系統(tǒng)配置的示例包括,但不限于,服務(wù)器場和服務(wù)器群集、個人計算機、服務(wù)器計算機、手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機、大型計算機、包括上述系統(tǒng)或設(shè)備中的任一個的分布式計算環(huán)境等。計算環(huán)境(100)不旨在對本發(fā)明的使用范圍或功能提出任何限制,因為本發(fā)明可以在完全不同的通用或?qū)S糜嬎悱h(huán)境中實現(xiàn)。參考圖1,計算環(huán)境(100)包括至少一個處理單元(110)和存儲器(120)。在圖1 中,這一最基本的配置(130)被包括在虛線內(nèi)。處理單元(110)執(zhí)行計算機可執(zhí)行指令,并且可以是真實或虛擬處理器。在多處理系統(tǒng)中,多個處理單元執(zhí)行計算機可執(zhí)行指令以提高處理能力。存儲器(120)可以是易失性存儲器(例如,寄存器、高速緩存、RAM)、非易失性存儲器(例如,R0M、EEPR0M、閃存)、或兩者的某種組合。存儲器(120)存儲實現(xiàn)計算機群集中的計算中的目標(biāo)狀態(tài)通信的軟件(180)。盡管為了清楚起見用線條示出了圖1的各框,但是,實際上,描繪各組件并不是那樣清楚,并且用比喻方法,圖1以及下文討論的其他附圖的線條更精確地將是灰色的和模糊的。例如,可以將諸如顯示設(shè)備等的呈現(xiàn)組件認為是I/O組件。而且,處理器具有存儲器。發(fā)明人關(guān)于此點認識到,這是本領(lǐng)域的特性,并且重申,圖1的圖示只是例示可結(jié)合本發(fā)明的一個或多個實施例來使用的示例性計算設(shè)備。諸如“工作站”、“服務(wù)器”、“膝上型計算機”、“手持式設(shè)備”等分類之間沒有區(qū)別,它們?nèi)慷急徽J為是在圖1的范圍之內(nèi)的并且被稱為“計算機”、“計算環(huán)境”、或“計算設(shè)備”。計算環(huán)境(100)可具有附加特征。在圖1中,計算環(huán)境(100)包括存儲(140)、一個或多個輸入設(shè)備(150)、一個或多個輸出設(shè)備(160)以及一個或多個通信連接(170)。諸
6如總線、控制器或網(wǎng)絡(luò)等互連機制(未示出)將計算環(huán)境(100)的各組件互連。通常,操作系統(tǒng)軟件(未示出)為在計算環(huán)境(100)中執(zhí)行的其它軟件提供操作環(huán)境,并協(xié)調(diào)計算環(huán)境(100)的各組件的活動。存儲(140)可以是可移動或不可移動的,并可包括諸如磁盤、磁帶或磁帶盒、 CD-R0M、CD-RW、DVD之類的非瞬態(tài)計算機可讀存儲介質(zhì),或者可用于儲存信息并可在計算環(huán)境(100)內(nèi)訪問的任何其它介質(zhì)。存儲(140)儲存用于軟件(180)的指令。輸入設(shè)備(150)可以是諸如鍵盤、鼠標(biāo)、筆或跟蹤球等觸摸輸入設(shè)備;語音輸入設(shè)備;掃描設(shè)備;網(wǎng)絡(luò)適配器;CD/DVD讀取器;或可向計算環(huán)境(100)提供輸入的另一設(shè)備。 輸出設(shè)備(160)可以是顯示器、打印機、揚聲器、CD/DVD刻錄機、網(wǎng)絡(luò)適配器、或從計算環(huán)境 (100)提供輸出的另一設(shè)備。通信連接(170)允許通過通信介質(zhì)與另一計算實體進行通信。因此,計算環(huán)境 (100)可使用通往諸如個人計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或另一常見網(wǎng)絡(luò)節(jié)點等一個或多個遠程計算設(shè)備的邏輯連接而工作在聯(lián)網(wǎng)環(huán)境中。通信介質(zhì)以已調(diào)制數(shù)據(jù)信號的形式傳達諸如數(shù)據(jù)或計算機可執(zhí)行指令或請求等信息。已調(diào)制數(shù)據(jù)信號是其一個或多個特征以在信號中編碼信息的方式設(shè)置或改變的信號。作為示例而非局限,通信介質(zhì)包括以電、光、RF、紅外、聲學(xué)或其他載波實現(xiàn)的有線或無線技術(shù)。各種工具和技術(shù)可以在計算機可讀存儲介質(zhì)的一般上下文中描述。計算機可讀存儲介質(zhì)可以是可在計算環(huán)境內(nèi)訪問的任何可用的非瞬態(tài)的存儲介質(zhì)。作為示例而非局限, 對于計算環(huán)境(100),結(jié)合計算環(huán)境(100),計算機可讀介質(zhì)包括存儲器(120)、存儲(140)、 和以上的組合。這些工具和技術(shù)可在諸如程序模塊中所包括的在目標(biāo)真實或虛擬處理器上的計算環(huán)境中執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、庫、對象、類、組件、數(shù)據(jù)結(jié)構(gòu)等。程序模塊的功能可以如各實施例中所需的組合或在程序模塊之間分離。用于程序模塊的計算機可執(zhí)行指令可以在本地或分布式計算環(huán)境中執(zhí)行。在分布式計算環(huán)境中,程序模塊可以位于本地和遠程計算機存儲介質(zhì)中。出于表示的目的,詳細描述使用了如“確定”、“選擇”、“調(diào)整”和“操作”等術(shù)語來描述計算環(huán)境中的計算機操作。這些以及其他類似術(shù)語是對計算機執(zhí)行的操作的高層抽象, 并且不應(yīng)混淆于人類執(zhí)行的動作,除非明確指出人類(諸如“用戶”)的動作執(zhí)行。對應(yīng)于這些術(shù)語的實際的計算機操作取決于實現(xiàn)而不同。II.計算機群集系統(tǒng)和環(huán)境圖2是結(jié)合使用其可實現(xiàn)所描述的各實施例中的一個或多個實施例的計算機群集(200)的框圖。計算機群集(200)可以包括構(gòu)造控制器O10),它可以包括管理器(220)。 或者,部分或全部的構(gòu)造控制器(210)可以是在計算機群集(200)之外。計算機群集O00) 還可以包括多個計算實例O30和M0),每個計算實例可以是真實的或虛擬的機器。每個計算實例Q30和M0)可以發(fā)送通信給構(gòu)造控制器010),并從構(gòu)造控制器(210)接收通信。 可以由管理器(220)對發(fā)送到構(gòu)造控制器O10)的通信進行分析。類似地,還可以從構(gòu)造控制器O10)向計算實例Q30和M0)發(fā)送通信。例如,可以從管理器O20)向計算實例 O30和M0)發(fā)送這樣的通信。
在管理器(220)和計算實例(230)之間的通信可以利用一個或多個代理來幫助通過計算機群集(200)轉(zhuǎn)發(fā)消息。例如,代表或主代理( 可以存在于物理機器上,該物理機器主存一個或多個計算實例O30和/或M0)作為在物理機器上運行的虛擬機器,或者用于計算實例的主代理可以存在于構(gòu)造控制器O10)的任何地方。構(gòu)造控制器(210)可以包括多個主代理045),例如用于計算機群集O00)中的每個物理機器的或者主存一個或多個計算實例O30和/或M0)的主代理045)。另外,計算實例Q30和M0)可以包含幫助通信的代理。例如,計算實例O30或M0)可以包括與構(gòu)造控制器O10)中的主代理 (245)通信的客代理。因此,主代理(M6)可以主存在物理機器上,而客代理可以主存在由該物理機器所主存的虛擬機器上?;蛘?,主代理(M6)和客代理可以在同一物理機器上運行。每個計算實例Q30和M0)可以運行一個或多個角色(250)。例如,角色可以是為 web應(yīng)用程序編程定制的web角色,用于概括開發(fā)的工作者角色或允許比web角色和工作者角色更加概括和獨立的使用計算實例O30和M0)的機器角色(例如虛擬機器角色)。角色(250)還可以是其它類型的角色。計算機群集(200)還可以包括附加的組件和模塊,例如存儲組件。作為示例,計算機群集(200)可以運行Windows hureTM云服務(wù)操作系統(tǒng),該系統(tǒng)包括對在此所述的計算機群集目標(biāo)狀態(tài)通信的支持。服務(wù)模塊可以被用于描述要在計算機群集(200)上運行的服務(wù)的構(gòu)成。這可以包括服務(wù)組成的應(yīng)用程序或角色以及它們各自的資源要求的描述。服務(wù)模塊可以是聲明性模塊,這樣,在定義之外的資源不會被所述服務(wù)使用。在計算機群集(200)中的服務(wù)實例化可以被稱為部署。服務(wù)模型還可以指示當(dāng)將服務(wù)實例化為部署時要滿足的約束。例如,具有一個前端的單個服務(wù)可以定義指示該服務(wù)包括前端和哪些前端將使用的資源的服務(wù)模型。 服務(wù)模型還可以以角色O50)的形式指示前端的實例。由前端使用的資源可以是,將對前端可用的例如,處理能力量、存儲資源的大小、網(wǎng)絡(luò)端點、存儲器大小等。另外,針對前端指定的配置能夠包括網(wǎng)頁的背景顏色、網(wǎng)頁的標(biāo)題等。這樣,在計算機群集(200)中運行的服務(wù)部署可以包括在一個或多個計算實例O30和M0)中運行的一個或多個角色050)。這可以包括在一個實例或多個實例中運行服務(wù)角色。管理器(220)可以是用于計算機群集O00)的操作系統(tǒng)的內(nèi)核。管理器(220)可以使用服務(wù)模型,所述服務(wù)模型提供了如上所述的靜態(tài)描述以在特定時間在不同的服務(wù)部署之間分配計算機群集(200)中的資源。計算機群集(200)的操作系統(tǒng)還包括展示服務(wù)管理API以控制服務(wù)部署的生命周期。III.目標(biāo)狀態(tài)通信不同的事件可以觸發(fā)在實例Q30和M0)的目標(biāo)狀態(tài)中的改變。這些事件可以包括服務(wù)模型更新、平臺更新、在計算實例O30和M0)中的硬件故障等。例如,可以提供用戶輸入,其中,所述輸入通過更新在服務(wù)模型中描述的配置指示對前端角色的背景顏色的更新。在另一個示例中,用戶可以提供指示運行該用戶的角色(250)的實例Q30和/或M0) 將被停止的用戶輸入。計算機群集(200)可以將這樣的目標(biāo)狀態(tài)傳遞給計算實例O30和 240),并能監(jiān)視在計算實例Q30和M0)向它們的目標(biāo)狀態(tài)Q30和M0)轉(zhuǎn)變時所述計算實例Q30和M0)的當(dāng)前狀態(tài)和健康狀況。
每個計算實例Q30和M0)可以了解將要在其中運行計算實例O30和M0)的目標(biāo)狀態(tài)。為了完成這個操作,每個計算實例O30和M0)可以建立與構(gòu)造控制器O10)的通信信道060)。這可以以各種方式來實現(xiàn),例如通過發(fā)布固定公共IP地址,計算機群集 (200)可以為其建立路由以便定向到該公共IP地址的通信將被重定向到正確的實體,所述實體可以用計算實例O30和M0)的期望的狀態(tài)來響應(yīng)。例如,到公共IP地址的通信可以轉(zhuǎn)發(fā)給主代理,主代理隨后將通信轉(zhuǎn)發(fā)給計算實例O30或M0)(例如給計算實例Q30 or 240)中的客代理)??梢愿鶕?jù)協(xié)議格式化通過通信信道O60)的通信,它可以將每個計算實例Q30和M0)作為黑盒子處理,目標(biāo)狀態(tài)指示被發(fā)送到該黑盒子,并從該黑盒子接收當(dāng)前狀況報告。協(xié)議可以是結(jié)構(gòu)化協(xié)議以便于跨通信信道Q60)的目標(biāo)狀態(tài)和相關(guān)信息的結(jié)構(gòu)化通信。因此,跨通信信道O60)的格式化協(xié)議的通信可以為每個計算實例Q30和M0) 提供用于在計算實例O30和M0)和構(gòu)造控制器(210)之間的通信的接口。協(xié)議可以是任意各種類型的協(xié)議。例如,協(xié)議可以是基于REST(代表性狀態(tài)轉(zhuǎn)移)的協(xié)議,該協(xié)議可以利用HTTP格式化的消息。基于REST的協(xié)議可以使用來自計算實例Q30和M0)的透視圖的拉模型,以便計算實例可以發(fā)起對構(gòu)造控制器O10)的請求。構(gòu)造控制器(210)可以處理所述請求并返回響應(yīng)。參照圖3,將討論在計算機群集(300)中的在構(gòu)造控制器(310)和計算實例(312) 之間使用基于REST協(xié)議的請求/響應(yīng)交換的一些示例。構(gòu)造控制器(310)和計算實例 (312)可以具有如上所述建立的通信信道(例如通過使得構(gòu)造控制器(310)供給IP地址、 使用DHCP選項并使得計算實例(312)在該IP地址上通信,或使得構(gòu)造控制器(310)公布構(gòu)造控制器(310)可將消息發(fā)送給其的公共IP地址)。計算機群集(300)可以同時支持協(xié)議的多個版本。因此,計算實例(31 可以發(fā)現(xiàn)當(dāng)前支持什么協(xié)議版本,并從這些協(xié)議版本中選擇一個用于與構(gòu)造控制器(310)通信。計算實例(312)可以發(fā)送版本信息查詢(320)給構(gòu)造控制器(310)。例如,版本信息查詢可以是如下格式化的HTTP GET請求。GET http//<hostip>/ ? comp = versions在本示例中,“<hostip>”是根據(jù)協(xié)議指定的整個資源的基礎(chǔ)URI的占位符,而 “/ ? comp = versions”指定了具有版本信息的子資源。響應(yīng)于所述版本信息查詢(320),構(gòu)造控制器(310)可以發(fā)送版本信息(322)。例如,版本信息(322)可以是具有如下所示的文本的XML文檔< xml version=" 1.0" encoding="utf-8" > <Versions>
〈Preferred〉
<Version>2010-03-31〈/Version〉 〈/Preferred〉 <Supported>
<Version>2010-03-31〈/Version〉 <Version>2009-l l-28</Version> 〈/Supported〉
〈/Versions〉在本示例中,“2010-03-31”版本指示作為協(xié)議的首選版本,如果計算實例(312) 能夠支持該首選版本,則該計算實例(312)就使用該首選版本。該示例還指示了構(gòu)造控制器(310)除了支持“2010-03-31”版本外,還支持“2009-11-28”版本。計算實例(312)可以選擇一個版本用于與構(gòu)造控制器(310)的將來通信。如果計算實例(312)支持首選版本,那么,計算實例(312)可以選擇該首選版本。如果計算實例不支持首選版本,那么,該計算實例可以使用作為在版本信息(322)中所支持的版本所列出的不同版本。對于構(gòu)造控制器(310)可以采取不同的途徑以支持協(xié)議的多個版本。例如,在構(gòu)造控制器(310)中的主代理可以用于轉(zhuǎn)換不同的協(xié)議版本之間的通信以便于同時使用多個協(xié)議版本與計算機群集(300)中的計算實例(312)的通信。因此,主代理可以轉(zhuǎn)換來自構(gòu)造控制器管理器的通信并將它們傳送給計算實例(312),并且反之亦然,因而,管理器可以在協(xié)議的最近版本中與主代理通信,并且,如果計算實例(312)不支持該最近版本,則主代理可以以協(xié)議的較早版本與計算實例(312)通信。在與構(gòu)造控制器(310)的通信信道上使用協(xié)議,計算實例(312)可以將查詢發(fā)給構(gòu)造控制器(310),并且回過來接收從構(gòu)造控制器(310)的觀點來看的計算實例(312)的目標(biāo)狀態(tài)的指示。該目標(biāo)狀態(tài)可以包括指示計算實例所期望的狀態(tài)的各種狀態(tài)參數(shù)中的一個或多個。例如,目標(biāo)狀態(tài)可以包括一個或多個下述項整個計算實例(312)的期望的運行時狀態(tài);要在計算實例(312)中運行的一個或多個角色的列表以及從構(gòu)造控制器(310)的觀點來看的它們所期望的運行時狀態(tài);用于特定角色的配置信息;用于計算實例(312)的配置信息,例如用于計算實例(312)的網(wǎng)絡(luò)配置;以及用于計算實例(312)和其角色的秘密 (例如證書或口令)(可以以安全方式被發(fā)送,例如通過利用公鑰和私鑰技術(shù)對證書和口令加密)。計算實例(312)可以接收目標(biāo)狀態(tài)指示符并向著實現(xiàn)所指示的目標(biāo)狀態(tài)工作。當(dāng)計算實例(312)通過執(zhí)行實現(xiàn)目標(biāo)狀態(tài)的動作而向著該狀態(tài)轉(zhuǎn)變時,所述計算實例(312) 可以繼續(xù)將狀況報告發(fā)送給構(gòu)造控制器(310)。狀況報告可以指示相對于目標(biāo)狀態(tài)的計算實例(312)的狀態(tài),所述狀態(tài)可以包括在計算實例(312)中運行的角色的狀態(tài)。狀況報告還可以指示整個計算實例(31 和其角色的健康狀況,這可以包括除了相對于目標(biāo)狀態(tài)的實例(312)的狀態(tài)之外的信息。構(gòu)造控制器(310)可以使用狀況報告以執(zhí)行操作作為響應(yīng) (例如繼續(xù)更新或暫停安置的事物)。來自狀況報告的信息還可以被展示給用戶以向用戶呈現(xiàn)它們的服務(wù)的部署的狀態(tài)的完整畫面(所述服務(wù)可以在一個計算實例(31 上運行或跨多個計算實例分散開)。協(xié)議可以提供一種結(jié)構(gòu)化的方式來展示供計算實例(312)報告其實例級狀況(例如整個計算實例(312)的健康狀況以及在計算實例上創(chuàng)建的帳戶的信息)以及在計算實例 (312)中的各個角色的狀況。當(dāng)計算實例(312)的狀況改變時,計算實例(312)可以繼續(xù)發(fā)送狀況報告以指示所述改變。如上所述,可以由所述計算實例以各種不同結(jié)構(gòu)化方式(例如不同的協(xié)議或協(xié)議的不同版本)中的一個或多個來提供查詢、響應(yīng)和報告。還是參照圖3,將討論在計算實例(312)和構(gòu)造控制器(310)之間的通信的一些示例。計算實例(312)可以將目標(biāo)狀態(tài)查詢(330)發(fā)送給構(gòu)造控制器(310),構(gòu)造控制器 (310)可以請求計算實例(312)的目標(biāo)狀態(tài)。例如,目標(biāo)狀態(tài)查詢(330)可以是針對計算實例(312)的目標(biāo)狀態(tài)的URI的HTTP GET請求。例如,目標(biāo)狀態(tài)查詢(330)可以如下被格式化
GET /machine comp=goalstate HTTP/1.1 Host: <host-ip>
x-ms-guest-agent-name=DevPlat-Agent-1.0
x-ms-version=2010-03-31在該示例中,"Host”字段指定了如上所述的基礎(chǔ)URI,而“GET”行中的文本“/machine ? comp = goalstate”指定了具有目標(biāo)狀態(tài)信息的子資源。另外, “x-ms-guest-agent-name”字段指定了在計算實例(312)中的代理的名字,該代理處理在計算實例(312)和構(gòu)造控制器(310)之間的通信,并且,“x-ms-version”指定了由計算實例(312)使用的協(xié)議的版本。響應(yīng)于所述目標(biāo)狀態(tài)查詢(330),構(gòu)造控制器(310)可以發(fā)送目標(biāo)狀態(tài)指示符 (332)。下面是具有XML格式的這樣的指示符的HTTP響應(yīng)的示例
Http/1.1 200 OKContent-Type: text/xml; charset=utf-8 Content-Length: <length> ETag: “358972498276402”
< xml version=" 1.0” encoding=“utf-8,’?> <GoalState
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="goalstate.xsd">
<Version>2010-03-31〈/Version〉
<Incarnation>l 2</Incarnation>
〈Machine〉
<ExpectedState>Started</ExpectedState> 〈/Machine〉 〈Container〉
<ContainerId>C 1 </ContainerId> <RoleInstanceList> <RoleInstance>
<InstanceId>Rl </IristanceId>
<State>Started</State>
<Configuration>
<HostingEnvironmentConfig>http://host-
ip/machine/Cl/Rl comp=config;type=hostingEnvironmentConfig; incarnation= 12</HostingEnvironmentConfig> <SharedConfig>http://host-
ip/machine/Cl/Rl comp=config;type=sharedConfig; incarnation= 12</SharedConfig> 〈/Configuration〉 </RoleInstance> </RoleInstanceList>
〈/Container〉 </GoalState> 目標(biāo)狀態(tài)指示符(33 可以指示正被使用的協(xié)議的版本 (“〈VerSion>2010-03-31〈/VerSion>,,),并且可以包括化身指示符(“〈Incarnation>12〈/
12Incarnation)") 0計算實例(312)可以隨后使用該化身指示符以確定目標(biāo)狀態(tài)指示符(332)的更新的化身是否可用,這將在下面進行討論。目標(biāo)狀態(tài)指示符(33 可以指示整個計算實例(312)中的目標(biāo)運行時狀態(tài),它被指示為“〈ExpectecKtateMtartecK/ ExpectedState〉”,它指示了整個計算實例(312)中的目標(biāo)狀態(tài)是該計算實例(312) 啟動。類似地,如果計算實例(312)的目標(biāo)運行時狀態(tài)是要停止,這可以被指示為 “<ExpectedState>Stopped</ExpectedState> 目標(biāo)狀態(tài)指示符還可以包括角色的列表, 可以由不同的實例ID來指定每個角色(例如‘‘a(chǎn)nstanceId>Rl</InstanceId>”)。另外, 對于每個角色,目標(biāo)狀態(tài)指示符(332)可以指示配置指示(在“〈Configuration〉· ··</ Configuration) “部分中為每個列出的角色指定),所述配置指示可用并可由計算實例請求。使用來自目標(biāo)狀態(tài)指示符(332)的配置指示,計算實例(31 可以發(fā)送配置查詢 (340)以請求可以指定所述配置的配置指示符(342)??捎酶鞣N方法來指定配置。一些或所有的配置可以不被構(gòu)造控制器(310)所理解,(例如主存環(huán)境配置信息),而其它信息可以被理解并由構(gòu)造控制器可使用(例如共享配置信息)。因此,配置信息的至少一部分可以是在計算實例(312)中運行的角色特有的??梢杂烧麄€計算機群集(300)中的許多角色共享其它配置信息。作為示例,為接收在上述示例中指定的主存環(huán)境配置指示符,計算實例(312)可以發(fā)送 URI i青求的 HTTP GET i青求 http://host-ip/machine/Cl/Rl ? comp = config&type = hostingEnvironmentConfig&inc arnation = 12。 口向應(yīng)可以包括,例如為該角色(R1,如在容器Cl中所指定)指定的XML內(nèi)容形式的配置指示符(34 ??梢詮挠嬎銓嵗?312)向構(gòu)造控制器(310)發(fā)送類似的配置查詢(340)以共享該角色的配置,并且如果在目標(biāo)狀態(tài)指示符(332)中指示了其它角色的配置也共享其它角色的配置。還是參照圖3,計算實例(312)還可以發(fā)送證書查詢(350),并且構(gòu)造控制器(310) 可以通過以安全方式,例如使用公共和私有密鑰,發(fā)送證書(352)來進行響應(yīng)。下面是證書查詢(350)的示例
Get http://<hostip>/machine/<contamer>/<role> comp=certificates&incarnation=12 HTTP/1.1 Host: <host-ip>
x-ms-guest-agent-public-x509-cert=E023 CS ADE141DACF....
x-ms-version=2010-03-31下面是對這樣的查詢的響應(yīng)的示例Http/1.1 200 OK
Content-Type: text/xml; charset=utf-8 Content-Length:〈Length〉
< xml version-'1.0" encoding="utf-8" > <CertificateFile
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="certificates.xsd">
<Incarnation> 12</Incarnation> <Version>2010-03-31〈/Version〉 <Format>Pkcs7BlobWithPfxContents</Format> <Data>E32BBB0B6A4049EA2CBB550AC7FF84FE9E78E6D0...</Data>
</CertificateFile>另外,計算實例(312)可以發(fā)送用戶帳戶細節(jié)查詢(360)以請求計算實例(312) 中的用戶帳戶的細節(jié)。構(gòu)造控制器(310)可以用所請求的用戶帳戶細節(jié)(362)進行響應(yīng)??梢砸园踩绞剑缡褂霉埠退接忻荑€,發(fā)送一些或所有的用戶帳戶細節(jié)(例如密碼)。除了發(fā)送如上所述的查詢之外,計算實例(312)可以發(fā)送狀況報告(370)給構(gòu)造控制器(310)。狀況報告(370)可以指示計算實例和其角色的當(dāng)前狀態(tài)和健康狀況。計算實例(312)可以以某個周期性間隔,例如每5秒或每15秒向構(gòu)造控制器(310)重復(fù)發(fā)送當(dāng)前的狀況報告(370)。這可以在計算實例(312)正向著其目標(biāo)狀態(tài)轉(zhuǎn)變時或已經(jīng)達到其目標(biāo)狀態(tài)時完成。因此,構(gòu)造控制器(310)可以繼續(xù)監(jiān)視計算實例(312)的狀態(tài),通過檢查狀況報告(370)或告知計算實例已經(jīng)在一指定時間周期中停止發(fā)送狀況報告,確定計算實例 (312)正向著其目標(biāo)狀態(tài)轉(zhuǎn)變還是已經(jīng)達到其目標(biāo)狀態(tài)。下面是一個狀況報告的示例,所述狀況報告指示了兩個角色(Rl以及R2)的狀態(tài),并且使用HTTP PUT消息發(fā)送所述狀況報
生
1=1 OPUT /machine comp=health HTTP/1.1 Host: <host-ip>
Content-Type: text/xml; charset=utf-8 Content-Length:〈length〉 x-ms-guest-agent-name 二 DevPlat-Agent-1.0 x-ms-version=2010-03-31
< xml version=" 1.0" encoding="utf-8" > <Health
xmlns :xsi="http://www. w3. org/2001 /XMLSchema-instance" xsi:noNamespaceSchemaLocation-'health.xsd"> <GoalStateIncarnation> 12</GoalStateIncarnation> 〈Container〉
<ContainerId>C 1 </ContainerId> <RoleInstanceList> <Role>
<InstanceId>R 1 </InstanceId> <Health>
<State>Ready</State> </Health> </Role><Role>
<InstanceId>R2</Instanceid> <Health>
<State>NotReady</State> <Details>
<SubStatus>RoleStartFailed</SubStatus>
<Description>0x80070005 - Failed to ACL endpoint.</ Description〉 </Details> </Health> </Role> </RoleInstanceList> 〈/Container〉 〈/Health〉如所見,角色Rl的狀態(tài)被指示為準(zhǔn)備好,而角色R2的狀態(tài)被指示為未準(zhǔn)備好。R2 的健康狀況的細節(jié)隨同其“未準(zhǔn)備好”的狀態(tài)被一起提供。特別的,存在角色啟動失敗的子狀況指示。其它子狀況指示可以包括,例如,角色正在初始化、繁忙、已停止、已中止、未響應(yīng)的或不健康的指示。對于這些狀況指示中的每個狀況指示,可以將附加細節(jié)作為“說明”字段中的字符串來提供。計算實例(31 還可以指示其整體的計算實例級狀態(tài)。例如,計算實例狀態(tài)可以被指示為“已啟動”或“已停止”、“健康”或“不健康”等等。狀況報告(370) 還可以指示是否成功執(zhí)行了特定配置改變。例如,狀況報告(370)可以指示特定的角色是否已經(jīng)執(zhí)行了已請求的配置改變(例如對前端web應(yīng)用程序的背景的顏色改變)??梢钥紤]將這樣的改變作為到不同狀態(tài)的過渡,并且可以在狀況報告(370)中報告它們的細節(jié)。響應(yīng)于狀況報告(370),構(gòu)造控制器(310)可以用當(dāng)前目標(biāo)狀態(tài)化身數(shù)目(372)進行響應(yīng)。計算實例(312)可以將接收到的目標(biāo)狀態(tài)化身數(shù)目(372)與由計算實例(312)最近收到的目標(biāo)狀態(tài)指示符(332)的化身數(shù)目進行比較。如果數(shù)目是不同的,那么,計算實例 (312)可以發(fā)送目標(biāo)狀態(tài)查詢(330)以檢索最近的目標(biāo)狀態(tài)指示符(332)以及其它相關(guān)的經(jīng)更新的信息(新的配置指示符(342)等)。將目標(biāo)狀態(tài)指示符(332)從構(gòu)造控制器(310)傳遞到計算實例(312)的細微問題可以是不同的。例如,可以使用不同的協(xié)議(例如使用標(biāo)準(zhǔn)web服務(wù)綁定的基于 WCF ( Windows 通信基礎(chǔ))協(xié)議或者構(gòu)造控制器將目標(biāo)狀態(tài)指示符和其它信息推入到計算實例中的基于HTTP的協(xié)議)。作為另一個示例,目標(biāo)狀態(tài)指示符還可以包括配置指示符、 證書、用戶帳戶細節(jié)和/或在單個消息中的其它信息。還是作為另一個替換例,目標(biāo)狀態(tài)指示符中的信息可以被分割成較小的片斷并在更多的消息中發(fā)送。另外,計算機群集(300) 中的請求/響應(yīng)交換可以從在圖3中所描述的和如上所述的內(nèi)容中重新排序。例如,可以重新排序查詢。而且,可以在由計算實例(31 響應(yīng)于一些或所有的查詢(330、340、350和/或360)接收信息之前,或者在發(fā)送一些或所有的查詢(330、340、350和/或360)之前,發(fā)送例如狀況報告(370)的一個或多個狀況報告。IV.用于在計算機群集中的目標(biāo)狀態(tài)通信的技術(shù)下面將討論幾種計算機群集目標(biāo)狀態(tài)通信技術(shù)。這些技術(shù)中的每種技術(shù)皆可在諸如圖1-3的環(huán)境之類的計算環(huán)境中執(zhí)行。例如,每種技術(shù)可在包括至少一個處理器和存儲器的計算機系統(tǒng)中執(zhí)行,該存儲器包括存儲于其上的、在由該至少一個處理器執(zhí)行時使該至少一個處理器執(zhí)行該技術(shù)的指令(存儲器存儲指令(例如,對象代碼),并且當(dāng)處理器執(zhí)行這些指令時,處理器執(zhí)行該技術(shù))。類似地,一個或多個計算機可讀存儲介質(zhì)可具有收錄于其上的計算機可執(zhí)行指令,該些指令在由至少一個處理器執(zhí)行時使該至少一個處理器執(zhí)行該技術(shù)。參考圖4,將要描述計算機群集目標(biāo)狀態(tài)通信技術(shù)。在一個技術(shù)中,將目標(biāo)狀態(tài)指示符從計算機群集的構(gòu)造控制器傳遞到G10)由計算機群集中的構(gòu)造控制器所管理的多個計算實例中的每個實例。例如,可以響應(yīng)于來自計算實例的請求來完成目標(biāo)狀態(tài)指示符的通信010)??梢愿鶕?jù)定義多個可能的目標(biāo)狀態(tài)的結(jié)構(gòu)化協(xié)議來格式化所述目標(biāo)狀態(tài)指示符。另外,可以從計算實例接收(420)狀況報告。每個狀況報告可以指示相對于目標(biāo)狀態(tài)的計算實例之一的當(dāng)前狀態(tài),所述目標(biāo)狀態(tài)先前已在傳遞到所述計算實例中的該計算實例的目標(biāo)狀態(tài)指示符中被指示過??梢愿鶕?jù)結(jié)構(gòu)化協(xié)議來格式化狀況報告。計算機群集可以在操作上通過根據(jù)結(jié)構(gòu)化協(xié)議的不同版本格式化的目標(biāo)狀態(tài)指示符,將該目標(biāo)狀態(tài)指示符傳遞給計算機群集中的不同的計算實例。圖4的技術(shù)可以進一步包括確定(430)狀況報告是否指示環(huán)境中的第一計算實例中的使得響應(yīng)有正當(dāng)理由的缺陷。如果是,則響應(yīng)于所指示的缺陷采取(440) —個或多個動作??梢詫⒁粋€或多個動作限定為避免對計算機群集中除第一計算實例外的一個或多個計算實例的不利影響。第一計算實例可以包括第一服務(wù)部署的至少一部分,并且除第一計算實例外的一個或多個計算實例可以包括除第一服務(wù)外的一個或多個服務(wù)的一個或多個部署的至少一部分。參考圖5,將要描述另一計算機群集目標(biāo)狀態(tài)通信技術(shù)。該技術(shù)可以包括將第一目標(biāo)狀態(tài)指示符從計算機群集的構(gòu)造控制器傳遞(510)到該計算機群集中的計算實例。例如,計算實例可以是虛擬機器。第一目標(biāo)狀態(tài)指示符可以指示用于計算實例的第一目標(biāo)狀態(tài)。響應(yīng)于在計算實例處接收到第一目標(biāo)狀態(tài)指示符,計算實例可以向著第一目標(biāo)狀態(tài)轉(zhuǎn)變(520)。計算實例可以向第一目標(biāo)狀態(tài)轉(zhuǎn)變(520),而不是被諸如構(gòu)造控制器或構(gòu)造控制器中的組件之類的外部模塊向著第一目標(biāo)狀態(tài)驅(qū)動。當(dāng)計算實例正向第一目標(biāo)狀態(tài)轉(zhuǎn)變 (520)時,可以將第一狀況報告從計算實例傳遞到構(gòu)造控制器。另外,可以將第二目標(biāo)狀態(tài)標(biāo)識符從構(gòu)造控制器傳遞(540)到計算實例。第二目標(biāo)狀態(tài)標(biāo)識符可以取代第一目標(biāo)狀態(tài)標(biāo)識符,并且能夠指示計算實例的第二目標(biāo)狀態(tài)??梢栽谟嬎銓嵗_到第一目標(biāo)狀態(tài)之前傳遞640)第二目標(biāo)狀態(tài)標(biāo)識符。響應(yīng)于在計算實例處接收到第二目標(biāo)狀態(tài)指示符,計算實例可以向著第二目標(biāo)狀態(tài)轉(zhuǎn)變(550)。當(dāng)計算實例正向第二目標(biāo)狀態(tài)轉(zhuǎn)變時,可以將第二狀況報告從計算實例傳遞(560)到構(gòu)造控制器。第二目標(biāo)狀態(tài)可以指示相對于第二目標(biāo)狀態(tài)的計算實例的當(dāng)前狀態(tài),并且還可以指示計算實例的當(dāng)前健康狀況。
可以響應(yīng)于來自計算實例的請求傳遞(530和/或560) —個或這兩個目標(biāo)狀態(tài)指示符。另外,可以在計算實例未接收來自構(gòu)造控制器的對狀況報告的請求的情況下,通信一個或這兩個狀況報告。而且,計算機群集可以在操作上生成目標(biāo)狀態(tài)指示符并將其傳遞給根據(jù)結(jié)構(gòu)化協(xié)議的不同版本格式化的不同計算實例??梢愿鶕?jù)結(jié)構(gòu)化協(xié)議,例如結(jié)構(gòu)化的基于REST的協(xié)議,來格式化目標(biāo)狀態(tài)指示符和狀況報告。可以從由啟動計算實例中指定的角色、停止計算實例中指定的角色以及它們的組合所組成的組中選擇第一和/或第二目標(biāo)狀態(tài)。當(dāng)計算實例正向著第二目標(biāo)狀態(tài)轉(zhuǎn)變(550)(并且也可能是計算實例正向著第一目標(biāo)狀態(tài)轉(zhuǎn)變(520))時,可以將附加狀況報告從計算實例傳遞(570)給構(gòu)造控制器。每個附加狀況報告可以指示相對于目標(biāo)狀態(tài)的計算實例的當(dāng)前狀態(tài)。而且,當(dāng)計算實例已經(jīng)到達目標(biāo)狀態(tài)時,可以將另一狀況報告從計算實例傳遞(580)到構(gòu)造控制器。該另一狀況報告可以將計算實例的當(dāng)前狀態(tài)指示為已經(jīng)達到目標(biāo)狀態(tài)。圖5的技術(shù)還可以包括確定一個或多個狀況報告是否指示使得響應(yīng)有正當(dāng)理由的缺陷。例如,確定缺陷是否使得響應(yīng)有正當(dāng)理由可以通過咨詢規(guī)則來完成,這些規(guī)則規(guī)定什么類型的缺陷使得響應(yīng)有正當(dāng)理由、在使得響應(yīng)有正當(dāng)理由之前允許缺陷存在多久以及針對指定類型的缺陷要采取什么響應(yīng)。另外,可以響應(yīng)于指示的缺陷由構(gòu)造控制器采取一個或多個響應(yīng)。例如,一個或多個動作可以包括從將計算實例中的角色的實例從第一物理機器移動到第二物理機器。這樣的響應(yīng)可以被限制于對計算機群集中的其它計算實例沒有不利影響的響應(yīng)?,F(xiàn)在參考圖6,將要描述另一計算機群集目標(biāo)狀態(tài)通信技術(shù)。該技術(shù)可以包括將目標(biāo)狀態(tài)指示符從計算機群集的構(gòu)造控制器傳遞(610)到該計算機群集中的計算實例。通信 (610)指示符可以包括將目標(biāo)狀態(tài)指示符傳遞到根據(jù)結(jié)構(gòu)化協(xié)議的不同版本所格式化的不同計算實例。另外,可以由構(gòu)造控制器從計算實例接收(620)狀況報告。每個狀況報告可以包括相對于目標(biāo)狀態(tài)的計算實例之一的當(dāng)前狀態(tài),所述目標(biāo)狀態(tài)先前已在傳遞到所述計算實例中的該計算實例的目標(biāo)狀態(tài)指示符中被指示過??梢詮膶?yīng)的計算實例接收(620) 每個狀況報告,并且可以根據(jù)用于將目標(biāo)狀態(tài)指示符傳遞到對應(yīng)的計算實例的協(xié)議的一個版本來格式化每個狀況報告。盡管用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動作。更確切而言,上述具體特征和動作是作為實現(xiàn)權(quán)利要求的示例形式公開的。
權(quán)利要求
1.一種計算機實現(xiàn)的方法,包括將目標(biāo)狀態(tài)指示符(33 從計算機群集(300)的構(gòu)造控制器(310)傳遞到所述計算機群集(300)中的多個計算實例(312)中的每一個,所述計算實例(312)由所述構(gòu)造控制器 (310)管理,所述目標(biāo)狀態(tài)指示符(33 根據(jù)定義多個可能的目標(biāo)狀態(tài)的結(jié)構(gòu)化協(xié)議來格式化;以及從所述計算實例(312)接收狀況報告(370),每個所述狀況報告(370)指示了相對于目標(biāo)狀態(tài)的所述計算實例(31 之一的當(dāng)前狀態(tài),所述目標(biāo)狀態(tài)先前在傳遞給所述計算實例 (312)中的該計算實例的目標(biāo)狀態(tài)指示符(332)中已被指示過。
2.如權(quán)利要求1所述的方法,其特征在于,所述計算機群集在操作上將目標(biāo)狀態(tài)指示符傳遞給所述計算機群集中的不同的計算實例,其中,所述目標(biāo)狀態(tài)指示符根據(jù)所述結(jié)構(gòu)化協(xié)議的不同版本來格式化。
3.如權(quán)利要求1所述的方法,其特征在于,還包括確定所述狀況報告之一是否指示第一計算實例中的使得響應(yīng)有正當(dāng)理由的缺陷;以及如果所述狀況報告之一指示了使得響應(yīng)有正當(dāng)理由的缺陷,則響應(yīng)于所述缺陷采取一個或多個動作,所述一個或多個動作被局限于避免對所述計算機群集中除所述第一計算實例之外的一個或多個計算實例的不利影響。
4.如權(quán)利要求3所述的方法,其特征在于,所述第一計算實例包括第一服務(wù)部署的至少一部分,并且除所述第一計算實例外的所述一個或多個計算實例包括除所述第一服務(wù)外的一個或多個服務(wù)的一個或多個部署的至少一部分。
5.一種計算機實現(xiàn)的方法,包括將目標(biāo)狀態(tài)指示符(33 從計算機群集(300)的構(gòu)造控制器(310)傳遞到所述計算機群集(300)中的一個計算實例(312),所述目標(biāo)狀態(tài)指示符(33 指示了所述計算實例 (312)的目標(biāo)狀態(tài);響應(yīng)于在所述計算實例(312)處接收到所述目標(biāo)狀態(tài)指示符(332),所述計算實例 (312)向著所述目標(biāo)狀態(tài)轉(zhuǎn)變;以及當(dāng)所述計算實例(312)正向著所述目標(biāo)狀態(tài)轉(zhuǎn)變時,將所述狀況報告(370)從所述計算實例(312)傳遞到所述構(gòu)造控制器(310),所述狀況報告(370)指示了相對于所述目標(biāo)狀態(tài)的計算實例(312)的當(dāng)前狀態(tài)。
6.如權(quán)利要求5所述的方法,其特征在于,響應(yīng)于來自所述計算實例的請求傳遞所述目標(biāo)狀態(tài)指示符,并且其中在所述計算實例未接收來自所述構(gòu)造控制器的對所述狀況報告的請求的情況下傳遞所述狀況報告。
7.如權(quán)利要求5所述的方法,其特征在于,所述目標(biāo)狀態(tài)選自由啟動所述計算實例中指定的角色、停止所述計算實例中指定的角色以及它們的組合所組成的組。
8.如權(quán)利要求5所述的方法,其特征在于,所述目標(biāo)狀態(tài)是第一目標(biāo)狀態(tài),其中,所述目標(biāo)狀態(tài)指示符是第一目標(biāo)狀態(tài)指示符,其中,所述狀況報告是第一狀況報告,并且其中所述方法進一步包括將第二目標(biāo)狀態(tài)指示符從所述構(gòu)造控制器傳遞到所述計算實例,所述第二目標(biāo)狀態(tài)指示符取代所述第一目標(biāo)狀態(tài)指示符并指示所述計算實例的第二目標(biāo)狀態(tài);響應(yīng)于在所述計算實例處接收到所述第二目標(biāo)狀態(tài)指示符,所述計算實例可以向著所述第二目標(biāo)狀態(tài)轉(zhuǎn)變;以及當(dāng)所述計算實例正向著所述第二目標(biāo)狀態(tài)轉(zhuǎn)變時,將第二狀況報告從所述計算實例傳遞到所述構(gòu)造控制器,所述第二狀況報告指示了相對于所述第二目標(biāo)狀態(tài)的所述計算實例的當(dāng)前狀態(tài)。
9.如權(quán)利要求8所述的方法,其特征在于 所述計算實例是虛擬機器;所述第一目標(biāo)狀態(tài)指示符、所述第二目標(biāo)狀態(tài)指示符、所述第一狀況報告以及所述第二狀況報告根據(jù)結(jié)構(gòu)化的基于REST的協(xié)議來格式化;所述第一狀況報告進一步指示所述計算實例的當(dāng)前健康狀況;所述計算機群集在操作上傳遞根據(jù)結(jié)構(gòu)化協(xié)議的不同版本被格式化的目標(biāo)狀態(tài)指示符;所述目標(biāo)狀態(tài)選自由啟動所述計算實例中指定的角色、停止所述計算實例中指定的角色以及它們的組合所組成的組;所述方法進一步包括當(dāng)所述計算實例正向著所述第二目標(biāo)狀態(tài)轉(zhuǎn)變時,將附加狀況報告從所述計算實例傳遞到所述構(gòu)造控制器,每個所述附加狀況報告指示了相對于所述第二目標(biāo)狀態(tài)的計算實例的當(dāng)前狀態(tài);并且所述方法進一步包括當(dāng)所述計算實例達到所述第二目標(biāo)狀態(tài)時,將另一狀況報告從所述計算實例傳遞到所述構(gòu)造控制器,所述另一狀況報告將所述計算實例的當(dāng)前狀態(tài)指示為已經(jīng)達到所述目標(biāo)狀態(tài)。
10.一種或多種其上包含計算機可執(zhí)行指令的計算機可讀存儲介質(zhì),所述指令在由至少一個處理器執(zhí)行時使所述至少一個處理器執(zhí)行以下動作將目標(biāo)狀態(tài)指示符(33 從計算機群集(300)的構(gòu)造控制器(310)傳遞到所述計算機群集(300)中的計算實例(312),包括將所述目標(biāo)狀態(tài)指示符(33 傳遞到根據(jù)結(jié)構(gòu)化協(xié)議的不同版本來格式化的不同計算實例(312);以及從所述計算實例(312)接收狀況報告(370),每個所述狀況報告(370)包括相對于目標(biāo)狀態(tài)的所述計算實例(31 之一的當(dāng)前狀態(tài),所述目標(biāo)狀態(tài)在先前傳遞給所述計算實例 (312)中的該計算實例的目標(biāo)狀態(tài)指示符(332)中已被指示過。
全文摘要
本申請涉及計算機群集中的目標(biāo)狀態(tài)通信。可以將目標(biāo)狀態(tài)指示符從計算機群集的構(gòu)造控制器傳遞到由構(gòu)造控制器所管理的在計算機群集中多個計算實例中的每個實例??梢愿鶕?jù)定義多個可能的目標(biāo)狀態(tài)的結(jié)構(gòu)化協(xié)議來格式化所述目標(biāo)狀態(tài)指示符。另外,可以從計算實例接收狀況報告。每個狀況報告可以指示相對于目標(biāo)狀態(tài)的計算實例之一的當(dāng)前狀態(tài),所述目標(biāo)狀態(tài)先前已在傳遞到所述計算實例中的該計算實例的目標(biāo)狀態(tài)指示符中被指示過。
文檔編號H04L29/08GK102523242SQ20111034054
公開日2012年6月27日 申請日期2011年10月20日 優(yōu)先權(quán)日2010年10月21日
發(fā)明者C·M·桑德斯, C·T·倫茨梅爾, G·古普塔, M·U·阿扎德, S·P·魯瓦斯卡, S·賽義德 申請人:微軟公司