專利名稱:高可用性場(chǎng)服務(wù)器組的升級(jí)的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及對(duì)場(chǎng)的升級(jí),特別是高可用性場(chǎng)服務(wù)器組的升級(jí)。
背景技術(shù):
在線服務(wù)包括位于web服務(wù)器上的與存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)在一起的文件。例如,可存在大量位于不同網(wǎng)絡(luò)中的服務(wù)器,以處理針對(duì)在線服務(wù)的通信。管理和部署安排在不同的場(chǎng)(farm)中的大量服務(wù)器是需要龐大運(yùn)營(yíng)人員隊(duì)伍的費(fèi)時(shí)過程,其中該人員隊(duì)伍是易受人為差錯(cuò)影響的。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡(jiǎn)化的形式介紹將在以下具體實(shí)施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并非旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。機(jī)器管理器為在線服務(wù)控制(物理的或虛擬的)機(jī)器的部署和管理。多層的服務(wù)器組被安排在場(chǎng)中,每個(gè)場(chǎng)可以包括不同的配置。例如,可以存在被安排用于執(zhí)行在線服務(wù)的操作的內(nèi)容場(chǎng)、聯(lián)合服務(wù)場(chǎng)和SQL場(chǎng)。當(dāng)多個(gè)場(chǎng)被升級(jí)時(shí),新場(chǎng)被部署并且相關(guān)聯(lián)的內(nèi)容數(shù)據(jù)庫(kù)被從舊場(chǎng)移動(dòng)到新部署的場(chǎng)。在升級(jí)場(chǎng)期間,可以由所述場(chǎng)繼續(xù)處理請(qǐng)求。在升級(jí)期間,自動(dòng)負(fù)載平衡所述場(chǎng)。當(dāng)內(nèi)容形式所述新場(chǎng)上變?yōu)榭捎脮r(shí),對(duì)該內(nèi)容的請(qǐng)求可以被自動(dòng)重定向到該新場(chǎng)。
圖1示出了用于管理與諸如內(nèi)容管理服務(wù)之類的在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理器系統(tǒng)。圖2示出了包括管理器和相關(guān)聯(lián)的數(shù)據(jù)庫(kù)的云管理器;圖3示出了存儲(chǔ)在數(shù)據(jù)庫(kù)的行內(nèi)的示例性作業(yè)記錄;圖4示出了用于網(wǎng)絡(luò)的示例系統(tǒng),所述網(wǎng)絡(luò)包括用于在線服務(wù)的前端和后端服務(wù)器;圖5示出計(jì)算機(jī)的計(jì)算機(jī)體系結(jié)構(gòu);圖6示出了用于管理在線服務(wù)的場(chǎng)的部署的系統(tǒng)。圖7示出了將數(shù)據(jù)庫(kù)從舊場(chǎng)移動(dòng)到正在被部署的新場(chǎng)。圖8示出了用于部署新場(chǎng)(例如內(nèi)容場(chǎng))的處理。圖9說明了用于部署新的服務(wù)場(chǎng)的處理;以及圖10說明了用于部署新的數(shù)據(jù)庫(kù)場(chǎng)的處理。
具體實(shí)施例方式現(xiàn)將參考其中相同的標(biāo)號(hào)代表相似的元素的附圖來描述各實(shí)施例。
一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其它類型的結(jié)構(gòu)。也可使用其它計(jì)算機(jī)系統(tǒng)配置,包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費(fèi)電子產(chǎn)品、小型計(jì)算機(jī)、大型計(jì)算機(jī)等等。也可使用在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境。在分布式計(jì)算環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備兩者中。圖1示出了用于管理與在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理系統(tǒng)。系統(tǒng)100示出了云管理器105,該云管理器105連接到并且管理可能分布在世界各地的不同網(wǎng)絡(luò)。網(wǎng)絡(luò)中的每個(gè)被配置成為一個(gè)或多個(gè)承租人(tenant)(例如客戶、顧客)提供內(nèi)容服務(wù)。這些網(wǎng)絡(luò)可以寄宿在云服務(wù)內(nèi)和/或內(nèi)部部署的(on-premises)數(shù)據(jù)中心內(nèi)。云管理器105用于部署、配置和管理這些網(wǎng)絡(luò)。云管理器被配置為通過可容忍間歇性網(wǎng)絡(luò)故障的冪等的和異步的應(yīng)用web服務(wù)應(yīng)用編程接口(API) 150來接收請(qǐng)求。如所示的,云管理器105包括工作管理器110、機(jī)器管理器115、應(yīng)用程序?qū)S霉芾砥?20、腳本130以及諸如數(shù)據(jù)存儲(chǔ)140(例如數(shù)據(jù)庫(kù))的中央儲(chǔ)存庫(kù)。未包括在所示管理器之一內(nèi)的功能可以駐留在云管理器的某個(gè)其他位置處。根據(jù)一個(gè)實(shí)施例,應(yīng)用程序管理器120是SharePoint承租人管理器,該管理器包括SharePoint專用邏輯。工作管理器110管理任務(wù)的執(zhí)行,并且啟用對(duì)較長(zhǎng)時(shí)間運(yùn)行的任務(wù)的調(diào)度和重試。工作管理器110啟動(dòng)存儲(chǔ)在作業(yè)隊(duì)列112中的作業(yè)并且跟蹤運(yùn)行中的作業(yè)。當(dāng)已經(jīng)流逝了預(yù)定的時(shí)間時(shí),工作管理器110可以自動(dòng)地取消任務(wù)并且執(zhí)行與該任務(wù)相關(guān)的某些進(jìn)一步處理。根據(jù)一個(gè)實(shí)施例,作業(yè)隊(duì)列112中的任務(wù)由工作管理器110通過調(diào)用一個(gè)或多個(gè)腳本130來執(zhí)行。例如,可以使用諸如微軟的P0werShell 的腳本語言來對(duì)由工作管理器110執(zhí)行的任務(wù)進(jìn)行編程。每個(gè)腳本可以作為新進(jìn)程運(yùn)行。盡管將每個(gè)腳本作為新進(jìn)程來執(zhí)行可以具有相當(dāng)高的CPU開銷,但是該系統(tǒng)是可伸縮的,并且?guī)椭鸀槊看文_本執(zhí)行確保干凈的環(huán)境,加上在腳本完成時(shí)進(jìn)行完全的清理。機(jī)器管理器115被配置為管理網(wǎng)絡(luò)(例如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、網(wǎng)絡(luò)3)中的物理機(jī)。一般而言,機(jī)器管理器115理解網(wǎng)絡(luò)、物理機(jī)、虛擬機(jī)(VM)、VM映像(VHD)等等。機(jī)器管理器不必強(qiáng)綁定到網(wǎng)絡(luò)內(nèi)運(yùn)行的特定服務(wù),而是在“角色”方面持續(xù)跟蹤網(wǎng)絡(luò)中的各種組件。 例如,可以通過API 150請(qǐng)求機(jī)器管理器115在網(wǎng)絡(luò)3上部署類型為“Foo”的具有版本 12. 34. 56. 78的VM。響應(yīng)于對(duì)云管理器105的請(qǐng)求,機(jī)器管理器115對(duì)位于網(wǎng)絡(luò)3上的合適物理機(jī)進(jìn)行定位,并且根據(jù)與VM的角色相關(guān)聯(lián)的VM映像來配置VM。使用類型為的具有版本12. 34. 56. 78的VHD來配置物理機(jī),該VHD存儲(chǔ)在諸如數(shù)據(jù)存儲(chǔ)140的數(shù)據(jù)存儲(chǔ)內(nèi)。在網(wǎng)絡(luò)內(nèi)使用的映像也可以存儲(chǔ)在其他位置處,諸如用于網(wǎng)絡(luò)中的一個(gè)或多個(gè)的本地?cái)?shù)據(jù)共享中??梢赃\(yùn)行腳本來執(zhí)行VHD在物理機(jī)上的安裝以及用于執(zhí)行任何部署后的配置。機(jī)器管理器115持續(xù)跟蹤每個(gè)網(wǎng)絡(luò)的機(jī)器配置。例如,機(jī)器管理器115可以持續(xù)跟蹤 VM的角色(VM的類型)、VM的狀態(tài)(供應(yīng)、運(yùn)行、停止、故障)、版本以及VM是否存在于給定場(chǎng)(farm)中(這隱含了其網(wǎng)絡(luò))。腳本130被配置為存儲(chǔ)將要執(zhí)行以便既本地地為云管理器105執(zhí)行工作又遠(yuǎn)程地在所述網(wǎng)絡(luò)中的一個(gè)或多個(gè)上執(zhí)行工作的腳本。腳本130中的一個(gè)或多個(gè)還可以存儲(chǔ)在其他位置。例如,將要在網(wǎng)絡(luò)(例如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、網(wǎng)絡(luò)3)上執(zhí)行的腳本可以本地地存儲(chǔ)到該網(wǎng)絡(luò)。這些腳本可用于許多不同目的。例如,所述腳本可以用于執(zhí)行對(duì)網(wǎng)絡(luò)中的一個(gè)或多個(gè)中的機(jī)器的配置,改變之前配置的機(jī)器上的設(shè)定,添加新的VM,添加新的數(shù)據(jù)庫(kù),將數(shù)據(jù)從一個(gè)機(jī)器移動(dòng)到另一個(gè),移動(dòng)承租人,改變方案等。根據(jù)一個(gè)實(shí)施例,這些腳本是微軟的PowerShell 腳本。也可以使用其他編程實(shí)施方式。例如,可以使用經(jīng)編譯的和/或前期綁定的編程語言來實(shí)現(xiàn)該功能。然而,腳本是一種表達(dá)將要執(zhí)行的任務(wù)中的許多個(gè)的相當(dāng)精確的語言。用諸如C#的編程語言對(duì)其等價(jià)物進(jìn)行編程將常常需要冗長(zhǎng)得多的實(shí)施方式。腳本還被后期綁定,這意味著可以以多個(gè)版本的底層代碼庫(kù)為目標(biāo),而不必不斷地鏈接到不同的接口 DLL。使用PowerShell腳本將允許進(jìn)程由云管理器105本地地啟動(dòng),云管理器105進(jìn)而可以啟動(dòng)遠(yuǎn)程機(jī)器(即,所附連的網(wǎng)絡(luò)之一中的物理機(jī))上的進(jìn)程。還可以使用其他技術(shù)來啟動(dòng)遠(yuǎn)程機(jī)器上的進(jìn)程,諸如安全Siell(SSH)等。云管理器105正在管理的應(yīng)用程序?qū)S眯畔⒂蓱?yīng)用程序管理器120來執(zhí)行。根據(jù)一個(gè)實(shí)施例,應(yīng)用程序?qū)S眯畔⑴c微軟SharePoint 有關(guān)。由此,應(yīng)用程序管理器120被配置為了解證arePoint、承租人、站點(diǎn)集合等。每個(gè)網(wǎng)絡(luò)可以被配置成用于承租人的專用網(wǎng)絡(luò)和/或服務(wù)于一個(gè)以上客戶的多承租人網(wǎng)絡(luò)。網(wǎng)絡(luò)可以包括變化數(shù)目的物理機(jī)/虛擬機(jī),物理機(jī)/虛擬機(jī)的配置在部署之后也變化。一般而言,只要未超過聯(lián)網(wǎng)極限(例如,負(fù)載平衡器和網(wǎng)絡(luò)交換機(jī)),網(wǎng)絡(luò)就可以繼續(xù)增長(zhǎng)。例如,網(wǎng)絡(luò)可以從十個(gè)服務(wù)器開始,并且之后擴(kuò)充為一百個(gè)或更多個(gè)服務(wù)器??梢越o網(wǎng)絡(luò)內(nèi)的物理機(jī)分配類或類型。例如,機(jī)器中的某些可以是計(jì)算機(jī)器(用于web前端和應(yīng)用程序服務(wù)器),而其他機(jī)器可以是與計(jì)算機(jī)器相比配備有更多存儲(chǔ)的存儲(chǔ)機(jī)器。根據(jù)實(shí)施例,云管理器105用多個(gè)版本的映像文件來配置網(wǎng)絡(luò)內(nèi)的機(jī)器。根據(jù)一實(shí)施例,場(chǎng)常常具有相同版本的映像文件。根據(jù)一個(gè)實(shí)施例,在網(wǎng)絡(luò)內(nèi)由云管理器系統(tǒng)100通過虛擬化機(jī)器并且管理該網(wǎng)絡(luò)內(nèi)部獨(dú)立地行動(dòng)的“場(chǎng)”來管理軟件極限。每個(gè)網(wǎng)絡(luò)可以包括一個(gè)或多個(gè)場(chǎng)(例如,參見網(wǎng)絡(luò)1)。根據(jù)一個(gè)實(shí)施例,網(wǎng)絡(luò)被認(rèn)為是經(jīng)網(wǎng)絡(luò)負(fù)載平衡的機(jī)器的單個(gè)群集,所述機(jī)器向外部世界展示一個(gè)或多個(gè)VIP(虛擬IP)并且可以將通信路由到網(wǎng)絡(luò)內(nèi)的任何機(jī)器。網(wǎng)絡(luò)中的機(jī)器通常是緊耦合的,并且具有最小等待時(shí)間(即< Ims的查驗(yàn)(ping)等待時(shí)間)。場(chǎng)是用于對(duì)需要緊密綁定關(guān)系的應(yīng)用程序進(jìn)行協(xié)調(diào)的機(jī)器的基本分組。例如,內(nèi)容場(chǎng)可以部署在每個(gè)網(wǎng)絡(luò)內(nèi)以用于諸如Microsoft SharePoint 的內(nèi)容管理應(yīng)用程序。一般而言,每一個(gè)場(chǎng)中的那組機(jī)器一起提供web服務(wù)和應(yīng)用程序服務(wù)器功能。通常,場(chǎng)內(nèi)的機(jī)器運(yùn)行相同構(gòu)建的應(yīng)用程序(即SiarePoint)并且共享公共的配置數(shù)據(jù)庫(kù)以服務(wù)特定的承租人和站點(diǎn)集合。場(chǎng)可以包含不同種類的虛擬機(jī)組。云管理器105在數(shù)據(jù)存儲(chǔ)140內(nèi)維護(hù)“場(chǎng)目標(biāo)”,該場(chǎng)目標(biāo)是每個(gè)場(chǎng)的每種角色的機(jī)器的目標(biāo)數(shù)目。一些角色包括內(nèi)容前端、內(nèi)容中央管理、內(nèi)容計(jì)時(shí)器服務(wù)、聯(lián)合中央管理、聯(lián)合應(yīng)用服務(wù)器等。例如,內(nèi)容場(chǎng)是處理接入消費(fèi)者請(qǐng)求的基本SiarePoint場(chǎng)。聯(lián)合服務(wù)場(chǎng)包含可以跨場(chǎng)運(yùn)行的諸如搜索和簡(jiǎn)檔存儲(chǔ)這樣的 SiarePoint服務(wù)。場(chǎng)可以用于托管大容量公共因特網(wǎng)站點(diǎn)。某些場(chǎng)可以包含一組活動(dòng)目錄服務(wù)器和供應(yīng)端口監(jiān)控程序(Provisioning Daemon)。云管理器105自動(dòng)地部署網(wǎng)絡(luò)中的虛擬機(jī)和/或停用網(wǎng)絡(luò)中的虛擬機(jī),以幫助滿足所定義的目標(biāo)。這些場(chǎng)目標(biāo)可以自動(dòng)地和/ 或手動(dòng)地來配置。例如,場(chǎng)目標(biāo)可以響應(yīng)于活動(dòng)和容量需求的改變而改變。網(wǎng)絡(luò)場(chǎng)-每個(gè)網(wǎng)絡(luò)存在一個(gè)包含可以作為整個(gè)網(wǎng)絡(luò)的資源的容易擴(kuò)展的所有VM角色的網(wǎng)絡(luò)場(chǎng)。
云管理器web服務(wù)API 150被設(shè)計(jì)為在可大規(guī)模伸縮的全局服務(wù)的上下文中工作。該API假定任何網(wǎng)絡(luò)請(qǐng)求可能失效和/或停留在傳送中。對(duì)云管理器105的調(diào)用被配置為是冪等的。換言之,可以對(duì)云管理器105進(jìn)行多次相同的調(diào)用(只要參數(shù)是相同的) 而不改變結(jié)果。云管理器105被設(shè)計(jì)為在向任何給定的請(qǐng)求返回響應(yīng)之前進(jìn)行非常少的處理 (< 10ms, < 50ms)。云管理器105維護(hù)記錄以跟蹤當(dāng)前請(qǐng)求。例如,云管理器105更新本地?cái)?shù)據(jù)庫(kù)中的記錄,并且若需要?jiǎng)t稍后調(diào)度“作業(yè)”以執(zhí)行更長(zhǎng)的活動(dòng)。云管理器跟蹤作為用于在網(wǎng)絡(luò)內(nèi)部署新機(jī)器的模板的映像(諸如,虛擬盤映像)。 映像引用可以存儲(chǔ)在諸如數(shù)據(jù)庫(kù)140的數(shù)據(jù)庫(kù)中和/或某個(gè)其他位置。映像可以存儲(chǔ)在對(duì)其上將部署映像的網(wǎng)絡(luò)而言是本地的一個(gè)或多個(gè)共享的數(shù)據(jù)存儲(chǔ)中。根據(jù)一個(gè)實(shí)施例,每個(gè)映像都包括虛擬機(jī)(VM)角色類型,其指定映像可以部署的VM的類型;該映像應(yīng)當(dāng)使用的處理器的數(shù)目;將分配給該映像的RAM的量;用于找出附近安裝點(diǎn)的網(wǎng)絡(luò)ID(使得它們不會(huì)通過跨數(shù)據(jù)中心鏈接被反復(fù)地復(fù)制);以及可以被部署代碼用于訪問VHD的共享路徑。一般而言,由云系統(tǒng)100所管理的網(wǎng)絡(luò)中的機(jī)器不是以傳統(tǒng)方式通過下載數(shù)據(jù)并且將該數(shù)據(jù)合并到機(jī)器上的現(xiàn)有軟件中來升級(jí)的。相反,機(jī)器是通過用已更新的VHD替換 VHD來更新的。例如,當(dāng)場(chǎng)需要新版本的軟件時(shí),部署安裝了該新版本的新場(chǎng)。當(dāng)部署新場(chǎng)時(shí),將承租人從舊場(chǎng)移動(dòng)到該新場(chǎng)。以此方式,由于升級(jí)造成的停機(jī)時(shí)間被最小化,并且場(chǎng)中的每個(gè)機(jī)器具有已被測(cè)試的相同版本。當(dāng)虛擬機(jī)需要升級(jí)時(shí),機(jī)器上的VM可以被刪除并且被配置為運(yùn)行所需服務(wù)的VM所代替。盡管對(duì)現(xiàn)有軟件的升級(jí)不是最優(yōu)的,但是網(wǎng)絡(luò)內(nèi)的某些服務(wù)器使用原地升級(jí)的傳統(tǒng)更新過程。例如,活動(dòng)目錄域控制器是通過升級(jí)服務(wù)器上的當(dāng)前軟件而不完全替換機(jī)器上的映像來升級(jí)的。在一些實(shí)例中,云管理器也可以原地升級(jí)。圖2示出了包括管理器和相關(guān)聯(lián)的數(shù)據(jù)庫(kù)的云管理器。如所示的,云管理器200 包括工作管理器210、工作數(shù)據(jù)庫(kù)215、機(jī)器管理器220、機(jī)器數(shù)據(jù)庫(kù)225、承租人管理器230、 承租人數(shù)據(jù)庫(kù)235、私密數(shù)據(jù)庫(kù)M5、以及web服務(wù)API 240 0一般而言,將在云管理系統(tǒng)(例如系統(tǒng)100)內(nèi)使用的數(shù)據(jù)庫(kù)的大小調(diào)整為實(shí)現(xiàn)高性能。例如,數(shù)據(jù)庫(kù)(諸如,工作數(shù)據(jù)庫(kù)215、機(jī)器數(shù)據(jù)庫(kù)225、承租人數(shù)據(jù)庫(kù)235和私密數(shù)據(jù)庫(kù)對(duì)幻不能超過預(yù)定義的大小限制(例如30GB、50GB、100GB等)。根據(jù)一實(shí)施例,調(diào)整數(shù)據(jù)庫(kù)的大小以使得其小得足以放入物理機(jī)的存儲(chǔ)器中。這有助于高讀取I/O性能。還可以基于對(duì)于應(yīng)用程序(諸如,與SQL服務(wù)器交互)的性能來選擇數(shù)據(jù)庫(kù)的大小。還可以調(diào)整用在場(chǎng)中的數(shù)據(jù)庫(kù)的大小以實(shí)現(xiàn)高性能。例如,它們的大小可以被調(diào)整為能放入主機(jī)的存儲(chǔ)器中和/或被調(diào)整為使得備份操作、移動(dòng)操作、復(fù)制操作、恢復(fù)操作一般在預(yù)定的時(shí)間段內(nèi)執(zhí)行。云管理器200將云管理器數(shù)據(jù)劃分成四個(gè)數(shù)據(jù)庫(kù)。工作數(shù)據(jù)庫(kù)215用于工作管理器。機(jī)器數(shù)據(jù)庫(kù)225用于機(jī)器管理器220。承租人數(shù)據(jù)庫(kù)235用于承租人管理器230,并且私密數(shù)據(jù)庫(kù)245用于存儲(chǔ)敏感信息,諸如系統(tǒng)帳戶和密碼信息、憑證、證書等。數(shù)據(jù)庫(kù)可以位于相同的服務(wù)器上,或者跨服務(wù)器分割。根據(jù)一實(shí)施例,每個(gè)數(shù)據(jù)庫(kù)被鏡像以獲得高可用性,并且都是SQL數(shù)據(jù)庫(kù)。云管理器200被配置為使用縮減的SQL特征組與數(shù)據(jù)庫(kù)交互以便有助于在數(shù)據(jù)庫(kù)升級(jí)期間提供云管理器200的可用性。例如,嘗試避免外來密鑰或已存儲(chǔ)的過程。外來密鑰可能使方案變化變得困難并且導(dǎo)致意料之外的失效情況。已存儲(chǔ)的過程將應(yīng)用程序中的更多個(gè)放置在數(shù)據(jù)庫(kù)本身中。嘗試最小化與SQL服務(wù)器的通信,因?yàn)榕c底層操作的成本相比,往返可能是昂貴的。例如,如果當(dāng)前SQL服務(wù)器到單個(gè)數(shù)據(jù)庫(kù)的全部交互被包裝在單個(gè)往返中,則常常是效率高得多的。極少在數(shù)據(jù)庫(kù)015,225,235)內(nèi)使用限制條件。一般而言,限制條件在其有助于在沒有額外查詢的情況下提供具有正確類型的錯(cuò)誤處理的簡(jiǎn)單更新時(shí)是有益的。例如,完全合格的域名(FQDN)表具有對(duì)施加在“名稱”上的限制條件,以幫助防止承租人意外地試圖主張與已經(jīng)被分配給不同承租人的FQDN相同的FQDN。當(dāng)添加索引時(shí)使用警告。索引通常以寫入操作的額外I/O為代價(jià)來改善讀取性能。由于數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)主要是駐留在RAM上的,因此即使全表掃描仍然是相對(duì)快的。根據(jù)一實(shí)施例,一旦查詢模式已經(jīng)穩(wěn)定就可以添加索引,并且可以根據(jù)所提出的索引來確定性能改善。根據(jù)一實(shí)施例,如果添加索引將可能花費(fèi)長(zhǎng)時(shí)間,則可以指定“ONLINE = ON(在線=開啟)”選項(xiàng),以使得在最初構(gòu)該建索引時(shí)表不被鎖定。根據(jù)一實(shí)施例,可以執(zhí)行對(duì)云管理器內(nèi)數(shù)據(jù)庫(kù)的升級(jí)而不導(dǎo)致云管理器系統(tǒng)停工。換言之,即使在云管理器升級(jí)期間,云管理器繼續(xù)處理已接收的請(qǐng)求。由此,對(duì)方案作出的改變將與之前的方案兼容。在升級(jí)云管理器所使用的web服務(wù)器之前進(jìn)行SQL方案升級(jí)。當(dāng)web服務(wù)器升級(jí)時(shí),它們可以開始使用數(shù)據(jù)庫(kù)中所啟用的新特性。數(shù)據(jù)庫(kù)升級(jí)被限制以使得升級(jí)中所涉及的操作是快速和有效的。例如,可以添加表,并且可以向現(xiàn)有列添加新的可空列??梢栽诒淼慕Y(jié)尾處添加新的列。一般而言,避免對(duì)數(shù)據(jù)庫(kù)的耗時(shí)操作。例如, 在存在大量數(shù)據(jù)時(shí),在創(chuàng)建時(shí)間向新添加的列添加缺省值可能是非常耗時(shí)的操作。然而,添加可空列是非??焖俚牟僮鳌H缟厦嫠懻摰?,允許添加新的索引,但是在添加新的限制條件時(shí)應(yīng)當(dāng)采取警告,以幫助保證方案升級(jí)不會(huì)破除現(xiàn)有數(shù)據(jù)。例如,當(dāng)添加限制條件時(shí),該限制條件可以被設(shè)置為如下狀態(tài)該限制條件不被檢查并且避免對(duì)現(xiàn)有行和潛在的錯(cuò)誤進(jìn)行高成本的驗(yàn)證。舊表和未使用的列在新版本被使用并且云管理器不訪問這些表和列以后被移除。一般而言,每個(gè)數(shù)據(jù)庫(kù)中的單個(gè)行用于指示任務(wù)和/或所需狀態(tài)。例如,承租人數(shù)據(jù)庫(kù)235為每個(gè)承租人包括單個(gè)行。給定的承租人可以包括所需版本(Required Version) 記錄。該記錄用于幫助確保該承租人被放置在運(yùn)行所需版本的場(chǎng)上。例如,對(duì)于要停留在 SharePoint 14 SPl上的承租人1而言,該承租人的所需版本可以被設(shè)置為“ 14. 1”,并且包括14. 1的任何版本都將匹配并且任何其他版本(例如14. 2. xxxx)都將不匹配。承租人記錄可以包括其他項(xiàng)目,諸如已授權(quán)的用戶數(shù)目、限額(例如所允許的總數(shù)據(jù)使用、每用戶的數(shù)據(jù)使用等)、時(shí)間限制等。某個(gè)組織可能具有代表不同地理位置、組合或容量的多個(gè)承租人。根據(jù)一實(shí)施例,將承租人彼此隔開而沒有(經(jīng)由外聯(lián)網(wǎng)或其他特性)對(duì)用戶的明確邀請(qǐng)。根據(jù)一個(gè)實(shí)施例,每個(gè)承租人都被鎖定到一專用網(wǎng)絡(luò)中。承租人被保持為相對(duì)于一小組數(shù)據(jù)庫(kù)而言是本地化的。承租人或者是小的(小于將填充一個(gè)數(shù)據(jù)庫(kù)的程度),在這種情況下,該承租人處于與其他承租人共享的恰好一個(gè)數(shù)據(jù)庫(kù)中。這意味著共享該數(shù)據(jù)庫(kù)的所有承租人需要同時(shí)升級(jí)。當(dāng)承租人變大時(shí),其可被移動(dòng)到其自己的專用數(shù)據(jù)庫(kù),并且現(xiàn)在可以具有一個(gè)以上、但是不與其他承租人共享的數(shù)據(jù)庫(kù)。在一個(gè)或多個(gè)專用數(shù)據(jù)庫(kù)中維護(hù)大承租人有助于減少需要在單次升級(jí)中同時(shí)升級(jí)的數(shù)據(jù)庫(kù)的數(shù)目。類似地,工作數(shù)據(jù)庫(kù)215為每個(gè)作業(yè)包括單個(gè)行。機(jī)器數(shù)據(jù)庫(kù)225可以為每個(gè)物理機(jī)、VM、場(chǎng)等包括行。例如,機(jī)器管理器數(shù)據(jù)庫(kù)225可以包括版本字符串。根據(jù)實(shí)施例,網(wǎng)絡(luò)內(nèi)的每個(gè)VHD、場(chǎng)和VM具有相關(guān)聯(lián)的版本字符串。根據(jù)一個(gè)實(shí)施例,云管理器包括簡(jiǎn)單日志系統(tǒng),該簡(jiǎn)單日志系統(tǒng)可以被配置為為每個(gè)web服務(wù)調(diào)用記錄日志條目??梢詫?shí)現(xiàn)包括如所期望的那樣少和/或那樣多的特性的日志系統(tǒng)。一般而言,日志系統(tǒng)被用于度量使用和性能剖析。根據(jù)一實(shí)施例,web服務(wù)API 240是使用ASP. net的SOAP構(gòu)建的。API中的各種 web方法遵循兩種主要模式——獲取(Get)和更新(Update)。一般而言,更新方法采取數(shù)據(jù)結(jié)構(gòu)作為輸入,并且返回相同的結(jié)構(gòu)作為輸出。輸出結(jié)構(gòu)返回?cái)?shù)據(jù)庫(kù)中的底層對(duì)象的當(dāng)前狀態(tài),其中如果確認(rèn)或其他業(yè)務(wù)邏輯改變了一些性質(zhì)或者以其他方式填充了附加的性質(zhì) (例如記錄ID或由云管理器計(jì)算出的其他值),則該底層對(duì)象可能不同于輸入對(duì)象。這些更新方法被用于初始對(duì)象創(chuàng)建以及隨后的更新。換言之,對(duì)web服務(wù)API 240的調(diào)用者可以簡(jiǎn)單地請(qǐng)求它們想要的配置并且它們不需要跟蹤對(duì)象是否已經(jīng)存在。另外,這意味著更新是冪等的,因?yàn)橄嗤抡{(diào)用可以進(jìn)行兩次,其中相同效果僅僅發(fā)生一次。根據(jù)一示例實(shí)施例,更新方法可以包括LastUpdated(最后更新)性質(zhì)。當(dāng)存在LastUpdated屬性時(shí),云管理器200在LastUpdated的值不與數(shù)據(jù)庫(kù)中當(dāng)前存儲(chǔ)的值匹配的情況下拒絕該更新。一些更新方法包括在第一次調(diào)用該方法以后被設(shè)置并且在該方法的其他調(diào)用以后未被設(shè)置的屬性。云管理器200被配置為避免使用回調(diào)。由于回調(diào)可能是不可靠的,因此與管理器 200交互的客戶可以在他們想要檢查更新狀況時(shí)使用web服務(wù)API來檢查對(duì)象狀況。根據(jù)一實(shí)施例,對(duì)更新方法的調(diào)用致使云管理器200將底層對(duì)象的狀態(tài)設(shè)置為“供應(yīng)”,并且當(dāng)更新完成時(shí),該狀態(tài)被設(shè)置為“活動(dòng)”。圖3示出了存儲(chǔ)在數(shù)據(jù)庫(kù)的行內(nèi)的示例性作業(yè)記錄。如所示那樣,記錄300包括作業(yè)標(biāo)識(shí)符302、類型304、數(shù)據(jù)306、所有者308、步驟310、最后一次運(yùn)行312、期滿時(shí)間314、 下次時(shí)間316、狀態(tài)318以及狀況320。一般而言,針對(duì)所請(qǐng)求執(zhí)行的每個(gè)任務(wù),云管理器都在數(shù)據(jù)庫(kù)350 (例如,圖2的工作數(shù)據(jù)庫(kù)215)中創(chuàng)建記錄。作業(yè)標(biāo)識(shí)符302用于為所請(qǐng)求的任務(wù)指定唯一的標(biāo)識(shí)符。類型304指定要執(zhí)行的任務(wù)。例如,類型可以包括將要執(zhí)行的腳本的名稱。例如,當(dāng)任務(wù)是運(yùn)行名稱為“D印loyVM. psl"的腳本時(shí),則數(shù)據(jù)306可以包括該標(biāo)識(shí)符(例如 "-VMID 123”)。這允許將新任務(wù)類型添加到系統(tǒng),而不需要對(duì)該系統(tǒng)的經(jīng)編譯的或其他二進(jìn)制部分進(jìn)行任何改變。數(shù)據(jù)306用于存儲(chǔ)與該任務(wù)相關(guān)聯(lián)的數(shù)據(jù)。例如,數(shù)據(jù)可以被發(fā)送給其上將執(zhí)行該任務(wù)的承租人、機(jī)器、網(wǎng)絡(luò)、VM等等。數(shù)據(jù)306還可以存儲(chǔ)數(shù)據(jù)庫(kù)中的值被設(shè)置成的一個(gè)或多個(gè)值。運(yùn)行該任務(wù)的進(jìn)程可以查看作業(yè)記錄以獲悉所期望的機(jī)器數(shù)目被設(shè)置成何值。 腳本使用數(shù)據(jù)庫(kù)中的值來執(zhí)行操作。
所有者308指定進(jìn)程/執(zhí)行該進(jìn)程的機(jī)器。例如,當(dāng)云管理器機(jī)器開始執(zhí)行作業(yè)時(shí),該機(jī)器用該機(jī)器的ID來更新記錄的所有者308部分。步驟310提供對(duì)當(dāng)前腳本的步驟的指示。例如,腳本可以將任務(wù)劃分成任何數(shù)目的步驟。當(dāng)該進(jìn)程完成該腳本的步驟時(shí),步驟310被更新。進(jìn)程還可以查看步驟310以確定在該腳本中要執(zhí)行什么步驟以及避免必須重新執(zhí)行之前完成的步驟。最后一次運(yùn)行312提供腳本最后一次啟動(dòng)的時(shí)間。每當(dāng)腳本啟動(dòng)時(shí),最后一次運(yùn)行時(shí)間都被更新。期滿時(shí)間314是指示該進(jìn)程應(yīng)當(dāng)何時(shí)終止的時(shí)間。根據(jù)一實(shí)施例,期滿時(shí)間是在進(jìn)程啟動(dòng)以后的預(yù)定的時(shí)間量(例如5分鐘、10分鐘...)。期滿時(shí)間可以通過經(jīng)由web服務(wù)API的請(qǐng)求進(jìn)程來更新。下次時(shí)間316是指示任務(wù)下次應(yīng)當(dāng)何時(shí)被執(zhí)行的時(shí)間。例如,進(jìn)程可以在完成某步驟以后停止,并且被指示等待直到所指定的下次時(shí)間316以恢復(fù)處理。狀態(tài)318指示當(dāng)前狀態(tài),并且狀況310指示作業(yè)的狀況(例如已創(chuàng)建、已掛起、已恢復(fù)、執(zhí)行中、已刪除)。如果數(shù)據(jù)庫(kù)中的復(fù)制行具有相同的任務(wù)類型和數(shù)據(jù)值,則它們可以在被執(zhí)行以前被移除。例如,可以進(jìn)行多個(gè)請(qǐng)求以執(zhí)行存儲(chǔ)在數(shù)據(jù)庫(kù)的多個(gè)行中的相同任務(wù)。作業(yè)可以具有相關(guān)聯(lián)的一個(gè)或多個(gè)鎖355。如果鎖不可用,則作業(yè)將不被調(diào)度運(yùn)行,直到鎖可用。這些鎖可以以許多不同的方式來配置。例如,鎖可以基于互斥、信號(hào)機(jī)等等。一般而言,互斥防止代碼被一個(gè)以上線程并發(fā)地執(zhí)行,而信號(hào)機(jī)將共享資源的同時(shí)使用的數(shù)目限制為最高為最大數(shù)目。根據(jù)一實(shí)施例,鎖是表示資源的字符串。該資源可以是任何類型的資源。例如,鎖可以是場(chǎng)、機(jī)器、承租人等等。一般而言,鎖用于延遲一個(gè)或多個(gè)任務(wù)的執(zhí)行。每個(gè)作業(yè)都可以指定其在運(yùn)行以前需要的一個(gè)或多個(gè)鎖。作業(yè)可以在其操作期間的任何時(shí)間釋放鎖。當(dāng)存在鎖時(shí),作業(yè)不被調(diào)度。需要一個(gè)以上鎖的作業(yè)立刻請(qǐng)求被要求的所有鎖。例如,已經(jīng)持有鎖的作業(yè)可以不請(qǐng)求附加的鎖。這樣的方案有助于防止由多個(gè)作業(yè)間的循環(huán)鎖依賴性造成的可能的死鎖情況。圖4示出了用于網(wǎng)絡(luò)的示例性系統(tǒng)400,該網(wǎng)絡(luò)包括用于網(wǎng)絡(luò)服務(wù)的前端和后端服務(wù)器。示例性系統(tǒng)400包括客戶端402和404、網(wǎng)絡(luò)406、負(fù)載平衡器408、WFE服務(wù)器410、 412,414以及后端服務(wù)器416-419??墒褂酶嗷蚋俚目蛻舳?、WFE、后端服務(wù)器、負(fù)載平衡器和網(wǎng)絡(luò)。附加地,由系統(tǒng)400中的組件所提供的一些功能可以由其他組件來執(zhí)行。例如,一些負(fù)載平衡可以在WFE中執(zhí)行。在示例性實(shí)施例中,客戶端402和404是諸如臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、終端計(jì)算機(jī)、個(gè)人數(shù)字助理、或蜂窩電話設(shè)備之類的計(jì)算設(shè)備??蛻舳?02和404可包括輸入/輸出設(shè)備、中央處理單元(“CPU”)、數(shù)據(jù)存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備。在本申請(qǐng)中,術(shù)語客戶端和客戶端計(jì)算機(jī)互換地使用。WFE 410,412和414可由客戶機(jī)402和404經(jīng)由負(fù)載平衡器408通過網(wǎng)絡(luò)406訪問。如所討論的那樣,這些服務(wù)器可以在場(chǎng)中配置。后端服務(wù)器416對(duì)WFE 410、412和414 是可訪問的。負(fù)載平衡器408是專用網(wǎng)絡(luò)設(shè)備和/或一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)。負(fù)載平衡器408、420、WFE410、412和414以及后端服務(wù)器416可包括輸入/輸出設(shè)備、中央處理單元 (“CPU”)、數(shù)據(jù)存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備。在示例性實(shí)施例中,網(wǎng)絡(luò)406是因特網(wǎng),并且客戶端402和404可以遠(yuǎn)程地訪問WFE 410,412和414以及連接到WFE 410,412和414的資源。在示例性實(shí)施例中,系統(tǒng)400是在線的、基于瀏覽器的文檔協(xié)作系統(tǒng)。在線的、 基于瀏覽器的文檔協(xié)作系統(tǒng)的一個(gè)示例是來自美國(guó)華盛頓州雷蒙德市的微軟公司的 Microsoft Sharepoint 。在系統(tǒng)400中,一個(gè)或多個(gè)后端服務(wù)器416-419是SQL服務(wù)器,例如,來自美國(guó)華盛頓州雷蒙德市的微軟公司的SQL服務(wù)器。WFE 410、412和414提供客戶端402和404以及后端服務(wù)器416-419之間的接口。 負(fù)載平衡器408,420將請(qǐng)求從自客戶端402和404引導(dǎo)到WFE 410,412和414,以及從WFF 引導(dǎo)到后端服務(wù)器416-419。負(fù)載平衡器408使用諸如WFE的利用率、連接到WFE的連接數(shù)目和整體WFE性能之類的因素來確定哪個(gè)WFE服務(wù)器接收客戶端請(qǐng)求。類似地,負(fù)載平衡器420使用諸如后端服務(wù)器利用率、連接到服務(wù)器的連接數(shù)目和整體性能之類的因素來確定哪個(gè)后端服務(wù)器接收請(qǐng)求??蛻舳苏?qǐng)求的示例可以是訪問存儲(chǔ)在一個(gè)或多個(gè)后端服務(wù)器上的文檔;編輯存儲(chǔ)在后端服務(wù)器(例如416-419)上的文檔;或者將文檔存儲(chǔ)在后端服務(wù)器上。當(dāng)負(fù)載平衡器408通過網(wǎng)絡(luò)406接收客戶端請(qǐng)求時(shí),負(fù)載平衡器408確定WFE服務(wù)器410、412和414中的哪個(gè)接收該客戶端請(qǐng)求。類似地,負(fù)載平衡器420確定后端服務(wù)器416-419中的哪個(gè)從該WFE服務(wù)器接收請(qǐng)求。后端服務(wù)器可以被配置為存儲(chǔ)一個(gè)或多個(gè)承租人(例如消費(fèi)者) 的數(shù)據(jù)?,F(xiàn)在參考圖5,將描述在各實(shí)施例中利用的計(jì)算機(jī)500的說明性計(jì)算機(jī)體系結(jié)構(gòu)。 圖5所示的計(jì)算機(jī)體系結(jié)構(gòu)可被配置為服務(wù)器、臺(tái)式或移動(dòng)計(jì)算機(jī),并且包括中央處理單元5( “CPU”)、包括隨機(jī)存取存儲(chǔ)器9 ( “RAM”)和只讀存儲(chǔ)器("ROM") 11的系統(tǒng)存儲(chǔ)器 7、以及將存儲(chǔ)器耦合至中央處理單元(“CPU”)5的系統(tǒng)總線12?;据斎?輸出系統(tǒng)存儲(chǔ)在ROM 11中,所述基本輸入/輸出系統(tǒng)包含幫助在諸如啟動(dòng)期間在計(jì)算機(jī)內(nèi)元件之間傳遞信息的基本例程。計(jì)算機(jī)500還包括大容量存儲(chǔ)設(shè)備14 以用于存儲(chǔ)操作系統(tǒng)16、應(yīng)用程序10、數(shù)據(jù)存儲(chǔ)24、文件、以及與云系統(tǒng)100的執(zhí)行和同云系統(tǒng)100的交互相關(guān)的云程序26。大容量存儲(chǔ)設(shè)備14通過連接至總線5的大容量存儲(chǔ)控制器(未示出)連接到 CPU 12。大容量存儲(chǔ)設(shè)備14及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)500提供非易失性的存儲(chǔ)。雖然此處包含的計(jì)算機(jī)可讀介質(zhì)的描述針對(duì)諸如硬盤或CD-ROM驅(qū)動(dòng)器等大容量存儲(chǔ)設(shè)備,但是計(jì)算機(jī)可讀介質(zhì)可以是能夠由計(jì)算機(jī)100訪問的任何可用介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以存儲(chǔ)如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)還包括,但不限于,RAM、ROM、可擦除可編程只讀存儲(chǔ)器(“EPR0M”)、電可擦可編程只讀存儲(chǔ)器 (“EEPR0M”)、閃存或其它固態(tài)存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(“DVD”)或其它光存儲(chǔ)、 磁帶盒、磁帶、磁盤存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或能用于存儲(chǔ)所需信息且可以由計(jì)算機(jī)500 訪問的任何其它介質(zhì)。根據(jù)各實(shí)施例,計(jì)算機(jī)500可以使用通過諸如因特網(wǎng)等網(wǎng)絡(luò)18至遠(yuǎn)程計(jì)算機(jī)的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。計(jì)算機(jī)500可以通過連接至總線12的網(wǎng)絡(luò)接口單元20來連接到網(wǎng)絡(luò)18。網(wǎng)絡(luò)連接可以是無線的和/或有線的。網(wǎng)絡(luò)接口單元20也可用于連接到其它類型的網(wǎng)絡(luò)和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)500還可以包括用于接收和處理來自多個(gè)其他設(shè)備的輸入的輸入/輸出控制器22,這些設(shè)備包括鍵盤、鼠標(biāo)或者電子指示筆(未在圖5中示出)。類似地,輸入/輸出控制器22可以為顯示屏觀、打印機(jī)或其它類型的輸出設(shè)備提供輸出。如上面簡(jiǎn)要提到的那樣,多個(gè)程序模塊和數(shù)據(jù)文件可以存儲(chǔ)在計(jì)算機(jī)500的大容量存儲(chǔ)設(shè)備14和RAM 9內(nèi),包括適于控制聯(lián)網(wǎng)計(jì)算機(jī)的操作的操作系統(tǒng)16,比如華盛頓州雷蒙德市的微軟公司的WINDOWS 操作系統(tǒng)。大容量存儲(chǔ)設(shè)備14和RAM 9還可以存儲(chǔ)一個(gè)或多個(gè)程序模塊。具體而言地,大容量存儲(chǔ)設(shè)備14和RAM 9可以存儲(chǔ)諸如云程序沈之類的執(zhí)行與云系統(tǒng)相關(guān)的任務(wù)的一個(gè)或多個(gè)應(yīng)用程序。圖6示出了用于管理在線服務(wù)的場(chǎng)的部署的系統(tǒng)。如所示出的,系統(tǒng)600示出云管理器605,包括工作管理器110、應(yīng)用管理器120、機(jī)器管理器610、機(jī)器數(shù)據(jù)庫(kù)620、腳本 630和圖像640。機(jī)器管理器610對(duì)跨不同網(wǎng)絡(luò)(網(wǎng)絡(luò)1、網(wǎng)絡(luò)2)的特定拓?fù)渲械拇罅糠?wù)器的自動(dòng)部署進(jìn)行控制。盡管僅僅示出了兩個(gè)網(wǎng)絡(luò),但是一般可以管理許多更多的網(wǎng)絡(luò)(例如十個(gè)、一百個(gè)、一千個(gè)、一萬個(gè)等等)。云管理器605和其組件運(yùn)行,并且可以與上面所示和所描述的云管理器系統(tǒng)類似地來配置。機(jī)器管理器610可以用于為許多類型的在線服務(wù)部署和管理機(jī)器。機(jī)器管理器610理解網(wǎng)絡(luò)的物理拓?fù)洌⑶腋欁鳛槊總€(gè)網(wǎng)絡(luò)內(nèi)的成員的物理機(jī)的位置。根據(jù)一實(shí)施例,機(jī)器管理器610知道網(wǎng)絡(luò)內(nèi)的每個(gè)機(jī)架的位置以及位于該機(jī)架內(nèi)的每個(gè)機(jī)器。機(jī)器管理器610還持續(xù)跟蹤在每個(gè)機(jī)器上使用的軟件的具體版本以及安裝在每個(gè)機(jī)器上的虛擬機(jī)(VM)映像。每個(gè)VM映像都對(duì)應(yīng)于不同的服務(wù)器角色。機(jī)器管理器610還被配置為為每個(gè)場(chǎng)內(nèi)的每個(gè)機(jī)器確定角色。該確定可以手動(dòng)地和/或動(dòng)態(tài)地執(zhí)行。例如,場(chǎng)可以最初被定義為包括15個(gè)機(jī)器,其中5個(gè)位于內(nèi)容場(chǎng)660 內(nèi),5個(gè)位于聯(lián)合服務(wù)場(chǎng)665中,并且5個(gè)位于SQL場(chǎng)670中。在在線服務(wù)的操作期間,機(jī)器管理器610可以收集與場(chǎng)和網(wǎng)絡(luò)內(nèi)的機(jī)器相關(guān)的性能特性,并且基于所收集的性能特性動(dòng)態(tài)地調(diào)整網(wǎng)絡(luò)的資源。例如,當(dāng)確定內(nèi)容場(chǎng)過載時(shí),機(jī)器管理器610可以創(chuàng)建將另一機(jī)器部署在內(nèi)容場(chǎng)內(nèi)以提供附加帶寬這一作業(yè)。還可以監(jiān)控機(jī)器/網(wǎng)絡(luò)的健康度。機(jī)器管理器 610可以替換網(wǎng)絡(luò)內(nèi)的機(jī)器,將通信量引導(dǎo)到新的一組機(jī)器,和/或響應(yīng)于對(duì)機(jī)器的健康度的確定執(zhí)行一些其他動(dòng)作。例如,如果一個(gè)或多個(gè)場(chǎng)停工,則機(jī)器管理器610部署新場(chǎng)并且將通信量引導(dǎo)到新近部署的場(chǎng)。機(jī)器管理器610持續(xù)跟蹤作為執(zhí)行服務(wù)工作的實(shí)際服務(wù)器的虛擬機(jī),并且將該信息存儲(chǔ)在諸如機(jī)器數(shù)據(jù)庫(kù)620之類的數(shù)據(jù)存儲(chǔ)中。如所討論的那樣,每個(gè)VM都具有代表特定服務(wù)器的功能的特定角色,并且它們進(jìn)一步被編組為場(chǎng),這些場(chǎng)通常是一組一起工作的運(yùn)行完全相同版本軟件的機(jī)器。根據(jù)一實(shí)施例,機(jī)器管理器610在機(jī)器數(shù)據(jù)庫(kù)620中為每個(gè)場(chǎng)存儲(chǔ)指定該場(chǎng)內(nèi)的目標(biāo)和角色的表。扮演每個(gè)角色的機(jī)器和每個(gè)場(chǎng)的機(jī)器的數(shù)目也存儲(chǔ)在機(jī)器數(shù)據(jù)庫(kù)620中。每個(gè)場(chǎng)內(nèi)的機(jī)器的數(shù)目可以人工地配置和/或自動(dòng)地配置。例如, 后臺(tái)進(jìn)程可以監(jiān)控負(fù)載并且動(dòng)態(tài)地確定場(chǎng)目標(biāo)。機(jī)器管理器610可以基于當(dāng)前/預(yù)期的網(wǎng)絡(luò)特性來啟動(dòng)機(jī)器和/或停止機(jī)器。網(wǎng)絡(luò)內(nèi)的每個(gè)場(chǎng)都可以用與其他場(chǎng)相同數(shù)目的機(jī)器或不同數(shù)目的機(jī)器來配置。例如,一個(gè)內(nèi)容場(chǎng)可以包括6個(gè)機(jī)器,而另一內(nèi)容場(chǎng)可以使用僅僅3個(gè)機(jī)器。當(dāng)新軟件可用時(shí),機(jī)器管理器610管理新軟件的部署。一般而言,場(chǎng)/網(wǎng)絡(luò)內(nèi)的各個(gè)機(jī)器不被升級(jí)或打補(bǔ)丁。代之以,機(jī)器管理器610啟動(dòng)由工作管理器110所管理的工作, 所述工作管理器部署包括該新軟件的新的機(jī)器和場(chǎng)。在用新軟件配置新場(chǎng)以后,機(jī)器管理器610將通信量/負(fù)載移動(dòng)到該新場(chǎng),并且阻止通信量去往舊場(chǎng)。在升級(jí)期間,新場(chǎng)可以被配置為更好地處理曾被引導(dǎo)到舊場(chǎng)的通信量。例如,可以通過對(duì)場(chǎng)680的監(jiān)控來確定需要更多SQL場(chǎng)來處理負(fù)載。在從場(chǎng)680到場(chǎng)681的升級(jí)期間,機(jī)器管理器610可以添加機(jī)器和/或從場(chǎng)移除機(jī)器。映像640被配置為存儲(chǔ)正在被使用和/或?qū)⒁渴鹪谝粋€(gè)或多個(gè)網(wǎng)絡(luò)的一個(gè)或多個(gè)機(jī)器上的虛擬硬盤(VHD)映像。根據(jù)一實(shí)施例,使用MICROSOFT VHD文件格式,該格式指定可以駐留在封裝在單個(gè)文件內(nèi)的本機(jī)主文件系統(tǒng)上的虛擬機(jī)硬盤。可以使用其它格式。一般而言,VHD格式是廣泛適用的,因?yàn)樵摳袷綄?duì)與該格式一起使用的虛擬化技術(shù)、 主操作系統(tǒng)、或者客操作系統(tǒng)是不可知的。用在特定網(wǎng)絡(luò)內(nèi)的映像可以移動(dòng)到全局共享645 和/或網(wǎng)絡(luò)本地的網(wǎng)絡(luò)共享(例如網(wǎng)絡(luò)共享65 。將映像存儲(chǔ)在網(wǎng)絡(luò)共享上將節(jié)省部署映像的時(shí)間,因?yàn)闇p小了網(wǎng)絡(luò)通信時(shí)間。也可以使用差分VHD。例如,可以僅僅部署VHD的最新版本與上一版本之間的差異。可以將不同技術(shù)用于該差異比較。例如,可以使用遠(yuǎn)程差分壓縮技術(shù)來確定該差異并且僅僅將這些改變復(fù)制到網(wǎng)絡(luò)共享。這允許進(jìn)程加快網(wǎng)絡(luò)內(nèi)的機(jī)器的部署和更新,因?yàn)椴恍枰獜?fù)制VHD的完全副本。還可以采用網(wǎng)絡(luò)內(nèi)的增量。增量被作為文件發(fā)送,并且隨后在本地機(jī)器/本地網(wǎng)絡(luò)內(nèi),該文件可以用于創(chuàng)建完整的VHD。根據(jù)一實(shí)施例,機(jī)器管理器610并不在機(jī)器上實(shí)際安裝軟件。相反,如前面所討論的那樣,在被執(zhí)行時(shí)執(zhí)行完成該任務(wù)的動(dòng)作的作業(yè)被放置在作業(yè)隊(duì)列中。一旦映像被安裝在機(jī)器上時(shí),機(jī)器管理器610啟動(dòng)機(jī)器運(yùn)行。可對(duì)部署進(jìn)行角色特定的定制的0個(gè)或更多角色特定的腳本可以在虛擬機(jī)啟動(dòng)以后運(yùn)行。這些腳本可以位于網(wǎng)絡(luò)的共享(例如網(wǎng)絡(luò)共享65 、全局共享645、腳本630內(nèi)或某個(gè)其他位置處。根據(jù)一實(shí)施例,VHD —旦在機(jī)器上運(yùn)行就是不可改變的。操作系統(tǒng)文件也可以被鎖定,使得它們不能被改變。根據(jù)一個(gè)實(shí)施例,每個(gè)場(chǎng)都以兩個(gè)帳戶中的一個(gè)運(yùn)行其服務(wù), 所述兩個(gè)帳戶包括應(yīng)用池帳戶和管理帳戶。每個(gè)服務(wù)和/或應(yīng)用還可以用唯一的憑證運(yùn)行。為每個(gè)場(chǎng)創(chuàng)建這些帳戶并且由機(jī)器管理器610生成這些帳戶。這些帳戶包括隨機(jī)生成的口令。一般而言,不向人們供應(yīng)場(chǎng)的口令。使用應(yīng)用帳戶來運(yùn)行與在線服務(wù)(例如 SharePoint)相關(guān)的進(jìn)程。根據(jù)實(shí)施例,不登陸應(yīng)用池帳戶,并且沒有web應(yīng)用接口來訪問存儲(chǔ)這些密碼的數(shù)據(jù)庫(kù)。在配置場(chǎng)的期間,向執(zhí)行腳本的進(jìn)程提供所需的密碼以設(shè)置和部署機(jī)器。這些私密可以被存儲(chǔ)在數(shù)據(jù)庫(kù)中,例如機(jī)器數(shù)據(jù)庫(kù)620、存儲(chǔ)私密的私密數(shù)據(jù)庫(kù) 625等等。例如,當(dāng)執(zhí)行部署場(chǎng)的進(jìn)程時(shí),向部署場(chǎng)進(jìn)程提供密碼,使得可以配置和啟動(dòng)場(chǎng)。 在安裝映像和對(duì)配置進(jìn)行任何定制的期間,場(chǎng)不連接到在線服務(wù),并且因此不具有任何通信量。一旦通信量被引導(dǎo)到場(chǎng),則機(jī)器就被鎖定并且密碼不能在機(jī)器上或通過web接口被訪問。當(dāng)場(chǎng)正處理請(qǐng)求時(shí),機(jī)器管理器610可以監(jiān)控機(jī)器和VHD映像以確定是否存在未經(jīng)授權(quán)/未被批準(zhǔn)的改變。如果它們是要這樣做,則機(jī)器管理器610可以部署新場(chǎng)以替換可能受損的場(chǎng)。通過這種方式,曾被放置到舊場(chǎng)上的任何代碼都不被復(fù)制到新近部署的場(chǎng)。
當(dāng)升級(jí)多個(gè)場(chǎng)(例如內(nèi)容場(chǎng)660、聯(lián)合服務(wù)場(chǎng)665以及SQL場(chǎng)670)時(shí),機(jī)器管理器為要升級(jí)的每個(gè)場(chǎng)(例如內(nèi)容場(chǎng)661、聯(lián)合服務(wù)場(chǎng)662以及SQL場(chǎng)671)部署一個(gè)新場(chǎng)。根據(jù)實(shí)施例,首先升級(jí)內(nèi)容場(chǎng),隨后是聯(lián)合服務(wù)場(chǎng)。例如,當(dāng)要升級(jí)內(nèi)容場(chǎng)660時(shí),部署新的內(nèi)容場(chǎng)661。在供給所述機(jī)器之后,在當(dāng)前正在升級(jí)的場(chǎng)中的內(nèi)容數(shù)據(jù)庫(kù)被復(fù)制到新場(chǎng)。部署SQL場(chǎng)以便于將內(nèi)容數(shù)據(jù)庫(kù)附加給它。 在移動(dòng)數(shù)據(jù)庫(kù)之前,備份所述數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)的備份可以在將數(shù)據(jù)庫(kù)復(fù)制到新場(chǎng)之前的任意點(diǎn)上創(chuàng)建。在備份完成之后,可以將數(shù)據(jù)庫(kù)標(biāo)記為只讀并將該數(shù)據(jù)庫(kù)復(fù)制到新場(chǎng)。在場(chǎng)中的數(shù)據(jù)庫(kù)可以被并行或串行復(fù)制。例如,每個(gè)數(shù)據(jù)庫(kù)可以每次復(fù)制一個(gè)直到所有的數(shù)據(jù)庫(kù)都遷移到新的內(nèi)容場(chǎng)中,或可以每次復(fù)制多于一個(gè)的數(shù)據(jù)庫(kù)。根據(jù)實(shí)施例,內(nèi)容場(chǎng)中的數(shù)據(jù)庫(kù)每次復(fù)制一個(gè)。任何升級(jí)失敗的數(shù)據(jù)庫(kù)被留下并被服務(wù)在舊場(chǎng)上并用于進(jìn)一步的故障查找??梢栽诠收喜檎业絾栴}之后,(對(duì)已存在的新場(chǎng))執(zhí)行另一序列的升級(jí)。在這期間(在故障查找期間),用戶獲取對(duì)它們的(未升級(jí)的)數(shù)據(jù)的讀-寫訪問。在新場(chǎng)上的數(shù)據(jù)庫(kù)的副本被附加給新場(chǎng)作為讀/寫,并且為新場(chǎng)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)的鏡像。在將請(qǐng)求定向到訪問新場(chǎng)中新創(chuàng)建的數(shù)據(jù)庫(kù)中的內(nèi)容之前,在新場(chǎng)上執(zhí)行任意數(shù)據(jù)庫(kù)升級(jí)。例如,可以升級(jí)數(shù)據(jù)庫(kù)以運(yùn)行最近的方案版本。還可以修改數(shù)據(jù)庫(kù)中的內(nèi)容。例如,包含在新的數(shù)據(jù)庫(kù)中的任意完全合格的域名(FQDN)可以在負(fù)載平衡器處被重定向到新場(chǎng)。機(jī)器管理器610可以調(diào)度一個(gè)或多個(gè)工作以執(zhí)行升級(jí)。在部署內(nèi)容場(chǎng)之后,在新場(chǎng)上的應(yīng)用可以被連接到其他服務(wù)。例如,在部署了新的內(nèi)容場(chǎng)661且復(fù)制并升級(jí)了數(shù)據(jù)庫(kù)之后,可以將它連接到舊的服務(wù)(例如聯(lián)合服務(wù)66 ,因?yàn)樾碌姆?wù)場(chǎng)666還沒有被升級(jí)。 這意味著,除了提供向后兼容性掛鉤(hook)的服務(wù)之外,服務(wù)代理是向后兼容的并且能夠與在它們之后的版本的服務(wù)對(duì)話。在舊場(chǎng)中的數(shù)據(jù)庫(kù)可以在新場(chǎng)成功部署之后(例如1小時(shí)、1天、7天等等)再被移除。隨后,取消供給該舊場(chǎng)。其他類型的場(chǎng)的部署以類似的方式來處理(參見進(jìn)一步討論的附圖7-10)。圖7示出了將數(shù)據(jù)庫(kù)從舊場(chǎng)移動(dòng)到正在被部署的新場(chǎng)。作為示例的目的,而不是限制,假設(shè)舊場(chǎng)710具有三個(gè)要被移動(dòng)到新場(chǎng)720上的數(shù)據(jù)庫(kù)(DB UDB 2和DB3)。狀態(tài)702示出在部署了新場(chǎng)720之后當(dāng)DBl正被復(fù)制時(shí)舊場(chǎng)710和新場(chǎng)720的狀態(tài)。在將DB 1備份到舊場(chǎng)710之后,DB 1被置于只讀狀態(tài)并且被復(fù)制到新場(chǎng)720。在舊場(chǎng)中的數(shù)據(jù)庫(kù)可以同時(shí)和/或在不同的時(shí)間被備份。在DB 1的復(fù)制期間,負(fù)載平衡器730繼續(xù)將所有的請(qǐng)求發(fā)送給舊場(chǎng)710。狀態(tài)704示出在數(shù)據(jù)庫(kù)Dl已經(jīng)完全復(fù)制并置于服務(wù)中之后時(shí)舊場(chǎng)710和新場(chǎng)720 的狀態(tài)。當(dāng)數(shù)據(jù)庫(kù)Dl已經(jīng)被復(fù)制到新場(chǎng)720時(shí),獲得自從備份最初被執(zhí)行起對(duì)舊場(chǎng)上的數(shù)據(jù)所作出的改變,并且將該改變添加到復(fù)制到新場(chǎng)的數(shù)據(jù)。由于完全備份與事務(wù)備份之間的時(shí)間段是相對(duì)短的(例如幾分鐘),因此數(shù)據(jù)庫(kù)不可用于寫入的時(shí)間段也是短的。對(duì)數(shù)據(jù)庫(kù)的任意升級(jí)還可以在將請(qǐng)求定向到該數(shù)據(jù)庫(kù)之前執(zhí)行。例如,新場(chǎng)中的DB 1'可以被升級(jí)到新的方案版本以處理與舊場(chǎng)相比不同的操作。在對(duì)新創(chuàng)建的DB 1'做出任意改變/ 更新之后,配置負(fù)載平衡器730以將請(qǐng)求定向到新場(chǎng)720中的DB 1'。在DB 1 ‘開始接收請(qǐng)求之后,不再使用舊場(chǎng)中的DB 1。當(dāng)完成DB 2到新場(chǎng)720的復(fù)制并且DB 2’已經(jīng)完成升級(jí)進(jìn)程時(shí),負(fù)載平衡器730將DB 2的請(qǐng)求定向到新場(chǎng)720中的DB 2’。
狀態(tài)706示出在所有數(shù)據(jù)庫(kù)(D1、D2和D3)已經(jīng)完全復(fù)制并置于服務(wù)中之后,舊場(chǎng) 710和新場(chǎng)720的狀態(tài)。當(dāng)成功供給并部署新場(chǎng)720時(shí),來自舊場(chǎng)710的所有的通信量被定向到新場(chǎng)720。此時(shí),新近部署的場(chǎng)接收和處理之前曾被引導(dǎo)到舊場(chǎng)的所有請(qǐng)求。如果在部署場(chǎng)的期間檢測(cè)到問題,則舊場(chǎng)可以繼續(xù)使用。在成功部署新場(chǎng)720之后,可以取消供給舊場(chǎng) 710。圖8-10說明了用于部署場(chǎng)的不同的過程。當(dāng)閱讀對(duì)在此提供的例程的討論時(shí),應(yīng)當(dāng)理解,各實(shí)施例的邏輯操作被實(shí)現(xiàn)為⑴ 運(yùn)行于計(jì)算系統(tǒng)上的一系列計(jì)算機(jī)實(shí)現(xiàn)的動(dòng)作或程序模塊,和/或(2)計(jì)算系統(tǒng)內(nèi)互連的機(jī)器邏輯電路或電路模塊。該實(shí)現(xiàn)是取決于實(shí)現(xiàn)本發(fā)明的計(jì)算系統(tǒng)的性能要求來選擇的。 因此,所例示的并且構(gòu)成此處所描述的實(shí)施例的邏輯操作被不同地表示為操作、結(jié)構(gòu)設(shè)備、 動(dòng)作或模塊。這些操作、結(jié)構(gòu)設(shè)備、動(dòng)作和模塊可用軟件、固件、專用數(shù)字邏輯以及它們的任何組合來實(shí)現(xiàn)。圖8示出了用于部署新場(chǎng),例如內(nèi)容場(chǎng),的處理。在開始操作之后,過程800流到操作810,其中作出要部署場(chǎng)的確定。這些場(chǎng)可以因許多不同原因而部署。例如,可以部署一個(gè)或多個(gè)場(chǎng)以運(yùn)行與現(xiàn)有場(chǎng)不同版本的軟件,可以部署新的網(wǎng)絡(luò),設(shè)備可能發(fā)生故障等等。 該確定可以通過經(jīng)由諸如上述web服務(wù)API之類的API的請(qǐng)求來進(jìn)行,和/或可以自動(dòng)地確定。例如,當(dāng)場(chǎng)的目標(biāo)改變時(shí),可以人工地和/或自動(dòng)地部署新場(chǎng)。移至操作820,部署新場(chǎng)。根據(jù)一實(shí)施例,異步地執(zhí)行機(jī)器的供應(yīng),使得機(jī)器管理器可以繼續(xù)執(zhí)行其他動(dòng)作。部署新場(chǎng)可以包括許多不同的步驟。例如,假設(shè)具有VHD的物理機(jī)提供場(chǎng)的角色、執(zhí)行對(duì)安裝的任意定制并且啟動(dòng)機(jī)器。VHD可以移動(dòng)到將要使用所述VHD 的網(wǎng)絡(luò),使得在網(wǎng)絡(luò)內(nèi)而不是跨網(wǎng)絡(luò)地執(zhí)行復(fù)制操作。當(dāng)要部署多層場(chǎng)時(shí),可以以預(yù)定順序部署每層。根據(jù)實(shí)施例,內(nèi)容場(chǎng)部署在聯(lián)合服務(wù)場(chǎng)之前,而聯(lián)合服務(wù)場(chǎng)部署在數(shù)據(jù)庫(kù)(例如 SQL)場(chǎng)之前。場(chǎng)的升級(jí)的排序有助于減少場(chǎng)的升級(jí)的復(fù)雜度。例如,存儲(chǔ)在服務(wù)場(chǎng)中的代表內(nèi)容場(chǎng)的數(shù)據(jù)對(duì)于所有承租人(tenant)來說是同時(shí)被遷移的。如果要首先升級(jí)服務(wù)場(chǎng), 與內(nèi)容相聯(lián)系的服務(wù)數(shù)據(jù)可能需要在當(dāng)內(nèi)容從舊場(chǎng)移動(dòng)到新內(nèi)容場(chǎng)時(shí)被不斷遷移或刷新。 首先升級(jí)場(chǎng)(例如內(nèi)容場(chǎng))還可以在存在比服務(wù)場(chǎng)更多的內(nèi)容場(chǎng)的場(chǎng)合中提供更好的縮放性。移到操作830,新部署的場(chǎng)可以被連接到多層部署中的其他場(chǎng)。例如,當(dāng)部署新的內(nèi)容場(chǎng)時(shí),它被連接到舊的聯(lián)合服務(wù)場(chǎng)。流到操作840,對(duì)來自舊場(chǎng)的數(shù)據(jù)庫(kù)進(jìn)行備份??梢悦看我粋€(gè)地備份數(shù)據(jù)庫(kù),和/ 或可以并行備份數(shù)據(jù)庫(kù)。備份可以在不同的時(shí)間執(zhí)行。例如,當(dāng)正在供給新場(chǎng)中的機(jī)器時(shí)、 已經(jīng)供給新場(chǎng)中的機(jī)器之后等等。在備份過程期間,數(shù)據(jù)庫(kù)可以繼續(xù)接收讀/寫請(qǐng)求。移動(dòng)到操作850,將數(shù)據(jù)庫(kù)從舊場(chǎng)復(fù)制到新場(chǎng)。所升級(jí)的舊場(chǎng)在升級(jí)過程期間繼續(xù)接收和處理請(qǐng)求。數(shù)據(jù)庫(kù)可以在不同的時(shí)間被復(fù)制。例如,可以每次一個(gè)、每次兩個(gè)或全部一起地等等將數(shù)據(jù)庫(kù)復(fù)制到新場(chǎng)。數(shù)據(jù)庫(kù)還可以以每承租人基礎(chǔ)來被復(fù)制。例如,當(dāng)承租人占有超過一個(gè)的數(shù)據(jù)庫(kù)時(shí),該承租人占有的每個(gè)數(shù)據(jù)庫(kù)可以被并行復(fù)制??梢曰趦?nèi)容的類型來復(fù)制數(shù)據(jù)庫(kù)。例如,服務(wù)場(chǎng)中的數(shù)據(jù)庫(kù)可以一次被全部復(fù)制,相反,SQL數(shù)據(jù)庫(kù)和/ 或內(nèi)容場(chǎng)數(shù)據(jù)庫(kù)可以以特定順序被復(fù)制。在數(shù)據(jù)庫(kù)復(fù)制期間,正在復(fù)制的數(shù)據(jù)庫(kù)被限制加入任何新的承租人。
轉(zhuǎn)到操作860,將數(shù)據(jù)庫(kù)附加給新場(chǎng),并在新場(chǎng)上創(chuàng)建數(shù)據(jù)庫(kù)的鏡像。移動(dòng)到操作870,獲得自從備份最初被執(zhí)行起對(duì)舊場(chǎng)上的數(shù)據(jù)所作出的改變,并且將該改變添加到復(fù)制到新場(chǎng)的數(shù)據(jù)。在該操作期間,舊場(chǎng)上的數(shù)據(jù)被標(biāo)記為只讀,使得在短時(shí)間段內(nèi),不允許對(duì)舊場(chǎng)上的數(shù)據(jù)進(jìn)行寫入。由于完全備份與事務(wù)備份之間的時(shí)間段是相對(duì)短的(例如幾分鐘),因此數(shù)據(jù)庫(kù)不可用于寫入的時(shí)間段也是短的。流到操作875,對(duì)數(shù)據(jù)庫(kù)執(zhí)行任何升級(jí)。例如,新場(chǎng)中的數(shù)據(jù)庫(kù)可以被升級(jí)到新的方案版本以處理與舊場(chǎng)相比不同的操作。如上所述,新場(chǎng)在升級(jí)過程期間不接收任何請(qǐng)求。 還可以改變/修改數(shù)據(jù)庫(kù)中的其他項(xiàng)。流到操作880,當(dāng)新場(chǎng)的供應(yīng)和部署成功時(shí),將來自舊場(chǎng)的通信量引導(dǎo)到新場(chǎng)。此時(shí),新近部署的場(chǎng)接收和處理之前曾被引導(dǎo)到舊場(chǎng)的所有請(qǐng)求。如果在部署場(chǎng)的期間檢測(cè)到問題,則舊場(chǎng)可以繼續(xù)使用。另外,通信量也可以重新引導(dǎo)回舊場(chǎng)。隨后該過程移至結(jié)束框并返回以處理其它動(dòng)作。移至操作890,取消供給舊場(chǎng)??梢粤⒖袒蛟诹硪粫r(shí)間取消供給舊場(chǎng)。例如,可以設(shè)置一個(gè)驗(yàn)證新場(chǎng)正確工作的時(shí)間周期??梢栽谌∠┙o的同時(shí)和/或在不同的時(shí)間移除所述數(shù)據(jù)庫(kù)。例如,可以在一天、7天、30天等之后移除數(shù)據(jù)庫(kù)。圖9說明了用于部署新的服務(wù)場(chǎng)的處理。在開始操作之后,該過程行進(jìn)至在其中部署新的服務(wù)場(chǎng)的操作910。根據(jù)實(shí)施例, 當(dāng)要部署新的內(nèi)容場(chǎng)時(shí),在部署所述新的內(nèi)容場(chǎng)之后部署服務(wù)場(chǎng)。如上所述,部署場(chǎng)通常包括假設(shè)具有VHD的物理機(jī)提供場(chǎng)的角色(在這種情況中為服務(wù)),執(zhí)行對(duì)安裝的任意定制以及啟動(dòng)機(jī)器。移至操作920,在新的內(nèi)容場(chǎng)和新的服務(wù)場(chǎng)之間建立信任,以便它們更多交流并協(xié)同工作。流到操作930,升級(jí)在新的服務(wù)場(chǎng)上的服務(wù)。根據(jù)實(shí)施例,聯(lián)合服務(wù)場(chǎng)主持包括搜索、用戶簡(jiǎn)檔、受管元數(shù)據(jù)和web分析的服務(wù)。可以主持更多或更少的服務(wù)。例如,訂閱設(shè)置、安全存儲(chǔ)服務(wù)等等。服務(wù)場(chǎng)還可提供具有登陸數(shù)據(jù)庫(kù)的使用登陸服務(wù)應(yīng)用。升級(jí)服務(wù)通常沿用如相對(duì)于圖8所述的新場(chǎng)的部署。對(duì)于舊的服務(wù)場(chǎng)中的每個(gè)服務(wù),為每個(gè)服務(wù)數(shù)據(jù)庫(kù)創(chuàng)建備份,在新的服務(wù)場(chǎng)中的新的服務(wù)應(yīng)用與復(fù)制自舊的服務(wù)場(chǎng)的每個(gè)數(shù)據(jù)庫(kù)的副本一起創(chuàng)建,而為每個(gè)服務(wù)應(yīng)用在新的內(nèi)容場(chǎng)中創(chuàng)建代理。轉(zhuǎn)換至操作940,驗(yàn)證服務(wù)升級(jí)。當(dāng)升級(jí)失敗時(shí),使用舊的服務(wù)場(chǎng)??梢宰龀霾渴鹦碌姆?wù)場(chǎng)的其他嘗試。新的內(nèi)容場(chǎng)可以繼續(xù)使用舊的服務(wù)直到部署新的服務(wù)場(chǎng)。移至操作950,在新的服務(wù)場(chǎng)和新的內(nèi)容場(chǎng)之間建立連接,并且移除到舊的服務(wù)場(chǎng)的任意連接。流至操作960,取消供給舊的服務(wù)場(chǎng)。圖10說明了用于部署新的數(shù)據(jù)庫(kù)場(chǎng)的處理。在開始操作之后,該過程流至操作1010,在該操作部署新的數(shù)據(jù)庫(kù)場(chǎng)。根據(jù)實(shí)施例,在任意內(nèi)容場(chǎng)部署和服務(wù)場(chǎng)部署之后部署數(shù)據(jù)庫(kù)場(chǎng)。如上所述,部署場(chǎng)通常包括假設(shè)具有VHD的物理機(jī)提供場(chǎng)的角色,執(zhí)行對(duì)安裝的任意定制以及啟動(dòng)機(jī)器。根據(jù)實(shí)施例,部署 SQL服務(wù)器以取代舊的SQL服務(wù)器。部署的服務(wù)器的數(shù)目可以不同于舊場(chǎng)。例如,可以是相同數(shù)目的服務(wù)器、更大數(shù)目的服務(wù)器或更小數(shù)目的服務(wù)器。
移至操作1020,對(duì)于每個(gè)正被取代的舊的SQL服務(wù)器,它被標(biāo)記為正在升級(jí)中。在升級(jí)過程期間,繼續(xù)使用舊的SQL服務(wù)器,但其操作可能被限制。流至操作1030,對(duì)于每個(gè)舊的服務(wù)器上的每個(gè)證明(witnessing)會(huì)話,重新分配證明責(zé)任給在新部署的場(chǎng)中的另一個(gè)運(yùn)行的服務(wù)器。轉(zhuǎn)換到操作1040,在舊的服務(wù)器上創(chuàng)建備份,并復(fù)制到新的服務(wù)器,每個(gè)新的服務(wù)器執(zhí)行恢復(fù)操作。移至操作1050,從備份時(shí)開始的任意改變被結(jié)合到新的服務(wù)器上的合適的數(shù)據(jù)庫(kù)中。流至操作1060,執(zhí)行舊的服務(wù)器上的數(shù)據(jù)庫(kù)的鏡像的故障轉(zhuǎn)移和阻斷。根據(jù)實(shí)施例,在單個(gè)時(shí)間發(fā)生一次故障轉(zhuǎn)移。轉(zhuǎn)換至操作1070,在當(dāng)前委托人(principal)和新的服務(wù)器之間重新建立鏡像。移至操作1080,與新的數(shù)據(jù)庫(kù)場(chǎng)建立不同的場(chǎng)之間的連接。在這點(diǎn)處,耦合新的內(nèi)容場(chǎng)、新的服務(wù)場(chǎng)和新的數(shù)據(jù)庫(kù)場(chǎng)。流至操作1090,取消供給舊的數(shù)據(jù)庫(kù)場(chǎng)。以上說明、示例和數(shù)據(jù)提供了對(duì)本發(fā)明的組成部分的制造和使用的全面描述。因?yàn)榭梢栽诓槐畴x本發(fā)明的精神和范圍的情況下做出本發(fā)明的許多實(shí)施例,所以本發(fā)明落在所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于在在線服務(wù)中升級(jí)場(chǎng)的方法,包括 確定何時(shí)在網(wǎng)絡(luò)中部署新場(chǎng)以取代舊場(chǎng)(810);部署新場(chǎng)(820),其中,部署新場(chǎng)包括在所述新場(chǎng)中供應(yīng)不同的機(jī)器以執(zhí)行在線服務(wù)的不同角色,其中,執(zhí)行相同角色的所述機(jī)器被安排在高可用性配置中;為所述舊場(chǎng)中的每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建備份,而在正在備份數(shù)據(jù)庫(kù)的同時(shí)繼續(xù)允許對(duì)該數(shù)據(jù)庫(kù)的讀和寫(840);將所述舊場(chǎng)中的每個(gè)數(shù)據(jù)庫(kù)復(fù)制到所述新場(chǎng)(850),同時(shí)繼續(xù)允許對(duì)所述舊場(chǎng)中先前備份的數(shù)據(jù)庫(kù)的讀和寫,其中,所述舊場(chǎng)繼續(xù)處理對(duì)于由所述舊場(chǎng)所提供的角色的請(qǐng)求。 執(zhí)行對(duì)所述新場(chǎng)中的數(shù)據(jù)庫(kù)的任意升級(jí)(875); 自動(dòng)將請(qǐng)求從所述舊場(chǎng)路由到所述新場(chǎng)(880);以及取消供給所述舊場(chǎng)(890)。
2.如權(quán)利要求1所述的方法,其特征在于,在所述新場(chǎng)中供給機(jī)器包括自動(dòng)啟動(dòng)在網(wǎng)絡(luò)中部署所述新場(chǎng)的進(jìn)程,其中,部署所述場(chǎng)包括使用虛擬硬盤(VHD)鏡像來供應(yīng)所述場(chǎng)中的機(jī)器上的軟件并啟動(dòng)所述機(jī)器。
3.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括將所述舊場(chǎng)中的每個(gè)數(shù)據(jù)庫(kù)標(biāo)記為在將每個(gè)數(shù)據(jù)庫(kù)復(fù)制到所述新場(chǎng)的時(shí)間周期期間只讀(850)。
4.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括用自從在所述舊場(chǎng)上備份所述數(shù)據(jù)以來在所述舊場(chǎng)上被改變的任意數(shù)據(jù)來更新復(fù)制到所述新場(chǎng)的所述數(shù)據(jù)庫(kù)(870)。
5.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括在部署期間自動(dòng)調(diào)整所述新場(chǎng)的配置以對(duì)所述新場(chǎng)進(jìn)行負(fù)載平衡(730)。
6.如權(quán)利要求1所述的方法,其特征在于,確定何時(shí)部署所述新場(chǎng)以取代所述舊場(chǎng)包括確定何時(shí)所述舊場(chǎng)具有至少一個(gè)潛在的安全性缺口(820)。
7.如權(quán)利要求1所述的方法,其特征在于,部署所述新場(chǎng)包括自動(dòng)部署內(nèi)容場(chǎng);聯(lián)合服務(wù)場(chǎng);以及SQL場(chǎng)(820)。
8.一種具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令用于為在在線服務(wù)部署場(chǎng),包括在每個(gè)網(wǎng)絡(luò)(600)中的場(chǎng)中安排機(jī)器,其中角色用于確定一個(gè)或多個(gè)安裝所述機(jī)器的虛擬機(jī),其中,所述配置存儲(chǔ)每個(gè)場(chǎng)的目標(biāo)以及每個(gè)場(chǎng)的角色;確定何時(shí)在網(wǎng)絡(luò)中部署新場(chǎng)以取代舊場(chǎng)(810),其中所述新場(chǎng)和舊場(chǎng)包括執(zhí)行第一角色的第一組虛擬機(jī)、執(zhí)行第二角色的第二組機(jī)器以及執(zhí)行第三角色的第三組機(jī)器;部署所述新場(chǎng),其中部署所述新場(chǎng)包括向所述網(wǎng)絡(luò)中的物理機(jī)供應(yīng)虛擬機(jī)以執(zhí)行第一角色、第二角色和第三角色,其中,在高可用性配置中安排所述物理機(jī)和虛擬機(jī)(820);為舊場(chǎng)中的每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建備份,而在正在備份數(shù)據(jù)庫(kù)的同時(shí)繼續(xù)允許對(duì)該數(shù)據(jù)庫(kù)的讀和寫(840);將所述舊場(chǎng)中的每個(gè)數(shù)據(jù)庫(kù)復(fù)制到新場(chǎng),同時(shí)繼續(xù)允許對(duì)所述舊場(chǎng)中先前備份的數(shù)據(jù)庫(kù)的讀和寫,其中,所述舊場(chǎng)繼續(xù)處理對(duì)由所述舊場(chǎng)所提供的角色的請(qǐng)求(850);將所述舊場(chǎng)中的每個(gè)數(shù)據(jù)庫(kù)標(biāo)記為在將每個(gè)數(shù)據(jù)庫(kù)復(fù)制到所述新場(chǎng)的時(shí)間段期間只讀(1020);執(zhí)行對(duì)新場(chǎng)中的數(shù)據(jù)庫(kù)的任意升級(jí)(875);自動(dòng)將請(qǐng)求從舊場(chǎng)路由到新場(chǎng)(880);以及取消供給所述舊場(chǎng)(890)。
9.一種用于為在線服務(wù)部署場(chǎng)的系統(tǒng),包括包括物理機(jī)、虛擬機(jī)和數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)(600);其中所述虛擬機(jī)被安排在場(chǎng)內(nèi),所述場(chǎng)每個(gè)都執(zhí)行角色;其中所述場(chǎng)包括成組安排的內(nèi)容場(chǎng)、聯(lián)合服務(wù)場(chǎng)和SQL場(chǎng); 處理器和計(jì)算機(jī)可讀介質(zhì)(5);存儲(chǔ)在所述計(jì)算機(jī)可讀介質(zhì)上并在所述處理器上執(zhí)行的操作環(huán)境(16);以及軟件,該軟件用于為在線服務(wù)存儲(chǔ)不同網(wǎng)絡(luò)的場(chǎng)中的機(jī)器的配置025),其中所述配置包括所述機(jī)器中每個(gè)的位置和所述網(wǎng)絡(luò)中的機(jī)器的角色,該位置包括該機(jī)器的機(jī)架位置;其中該角色用于確定一個(gè)或多個(gè)虛擬機(jī)以安裝所述機(jī)器,其中所述配置存儲(chǔ)所述場(chǎng)中的每個(gè)的目標(biāo)和所述場(chǎng)中的每個(gè)的角色;確定何時(shí)在網(wǎng)絡(luò)中部署新場(chǎng)以取代舊場(chǎng)(810);部署所述新場(chǎng)(820),其中部署所述新場(chǎng)包括向所述網(wǎng)絡(luò)中的物理機(jī)供應(yīng)虛擬機(jī)以執(zhí)行所述內(nèi)容場(chǎng)、聯(lián)合服務(wù)場(chǎng)和SQL場(chǎng)的角色,其中,在高可用性配置中安排所述物理機(jī)和虛擬機(jī);為舊場(chǎng)中的每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建備份,而在正在備份數(shù)據(jù)庫(kù)的同時(shí)繼續(xù)允許對(duì)該數(shù)據(jù)庫(kù)的讀和寫(840);將所述舊場(chǎng)中的每個(gè)數(shù)據(jù)庫(kù)復(fù)制到所述新場(chǎng),同時(shí)繼續(xù)允許對(duì)舊場(chǎng)中先前備份的數(shù)據(jù)庫(kù)的讀和寫(850),其中,所述舊場(chǎng)繼續(xù)處理對(duì)由所述舊場(chǎng)所提供的角色的請(qǐng)求;將所述舊場(chǎng)中的每個(gè)數(shù)據(jù)庫(kù)標(biāo)記為在將每個(gè)數(shù)據(jù)庫(kù)復(fù)制到所述新場(chǎng)的時(shí)間周期期間只讀(1020);自動(dòng)將請(qǐng)求從舊場(chǎng)路由到新場(chǎng)(880);以及取消供給所述舊場(chǎng)(890)。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,在所述新場(chǎng)中供給機(jī)器包括自動(dòng)啟動(dòng)在網(wǎng)絡(luò)中部署所述新場(chǎng)的進(jìn)程,其中,部署所述場(chǎng)包括使用虛擬硬盤(VHD)鏡像來供應(yīng)所述場(chǎng)中的機(jī)器并啟動(dòng)所述機(jī)器(910)。
全文摘要
高可用性場(chǎng)服務(wù)器組的升級(jí)。機(jī)器管理器為在線服務(wù)控制(物理的或虛擬的)機(jī)器的部署和管理。多層的服務(wù)器組被安排在場(chǎng)中,每個(gè)場(chǎng)可以包括不同的配置。例如,可以存在被安排用于執(zhí)行在線服務(wù)的操作的內(nèi)容場(chǎng)、聯(lián)合服務(wù)場(chǎng)和SQL場(chǎng)。當(dāng)多個(gè)場(chǎng)被升級(jí)時(shí),新的場(chǎng)被部署并且相關(guān)聯(lián)的內(nèi)容數(shù)據(jù)庫(kù)被從舊的場(chǎng)移動(dòng)到新部署的場(chǎng)。在升級(jí)場(chǎng)期間,可以由所述場(chǎng)繼續(xù)處理請(qǐng)求。在升級(jí)期間,自動(dòng)負(fù)載平衡所述場(chǎng)。當(dāng)內(nèi)容形式所述新的場(chǎng)上變?yōu)榭捎脮r(shí),對(duì)該內(nèi)容的請(qǐng)求可以被自動(dòng)重定向到該新的場(chǎng)。
文檔編號(hào)H04L29/08GK102438041SQ20111033989
公開日2012年5月2日 申請(qǐng)日期2011年10月19日 優(yōu)先權(quán)日2010年10月20日
發(fā)明者A·卡帕迪亞, A·霍普曼, D·巴爾-卡斯彼, E·R·萊爾馬, E·??怂? J·M·卡希爾, K·杰拉斯, M·K·溫德爾, 奧利維拉 R·P·德, T·喬斯, T·塞維爾米什, Z·羅森菲爾德 申請(qǐng)人:微軟公司