專利名稱:打補丁期間機器的高可用性的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù),尤其涉及打補丁期間機器的高可用性。
背景技術(shù):
基于web的應(yīng)用包括位于web服務(wù)器上的文件和存儲于數(shù)據(jù)庫中的數(shù)據(jù)。例如, 存在大量位于不同網(wǎng)絡(luò)中的服務(wù)器,以處理針對該服務(wù)的通信量。對包括大量服務(wù)器的在線服務(wù)的部署、升級、打補丁和操作進行管理是一種耗時的過程,該過程需要很大的操作人員隊伍,這些人員隊伍會經(jīng)歷人為錯誤。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡化形式介紹在以下具體實施方式
中進一步描述的一些概念。本發(fā)明內(nèi)容并非旨在標識所要求保護的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護的主題的范圍。云管理器被用于對用在在線服務(wù)內(nèi)的物理機和虛擬機進行打補丁。云管理器有助于對將軟件補丁應(yīng)用于網(wǎng)絡(luò)內(nèi)的機器(物理和虛擬)進行調(diào)度,以使得在機器正被打補丁的同時維持在線服務(wù)的可用性。將要被打補丁的機器劃分成數(shù)個組,這些組在不同時間被打補丁。一般而言,將組劃分成高可用獨立機器組,以使得當前未被打補丁的組中的一個或多個繼續(xù)提供正被打補丁的組的服務(wù)??刹⑿械貙γ總€組內(nèi)的機器(物理和虛擬)進行打補丁。
圖1示出了用于管理與諸如內(nèi)容管理服務(wù)之類的在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理器系統(tǒng);圖2示出了包括管理器和相關(guān)聯(lián)的數(shù)據(jù)庫的云管理器;圖3示出了存儲在數(shù)據(jù)庫的行內(nèi)的示例性作業(yè)記錄;圖4示出了用于網(wǎng)絡(luò)的示例系統(tǒng),該網(wǎng)絡(luò)包括用于在線服務(wù)的前端和后端服務(wù)器;圖5示出計算機的計算機體系結(jié)構(gòu);圖6示出了用于對在在線服務(wù)內(nèi)使用的機器進行打補丁的補丁系統(tǒng)。圖7示出用于對在線系統(tǒng)中的機器進行打補丁的過程。
具體實施例方式現(xiàn)將參考附圖來描述各實施例,在附圖中類似的標號代表類似的元素。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其它類型的結(jié)構(gòu)。也可使用其它計算機系統(tǒng)配置,包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費電子產(chǎn)品、小型計算機、大型計算機等等。也可使用在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠程處理設(shè)備執(zhí)行的分布式計算環(huán)境。在分布式計算環(huán)境中,程序模塊可位于本地和遠程存儲器存儲設(shè)備兩者中。圖1示出了用于管理與在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理系統(tǒng)。系統(tǒng)100示出了云管理器105,該云管理器105被連接到可能分布在世界各地的不同網(wǎng)絡(luò)并對其進行管理。網(wǎng)絡(luò)中的每個被配置成為一個或多個承租人(例如客戶、顧客)提供內(nèi)容服務(wù)。這些網(wǎng)絡(luò)可以被主存(host)在云服務(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來接收請求。如所示的,云管理器105包括工作管理器110、機器管理器115、應(yīng)用專用管理器 120、腳本130以及諸如數(shù)據(jù)存儲140(例如,數(shù)據(jù)庫)之類的中央儲存庫。未包括在所示管理器之一內(nèi)的功能可以駐留在云管理器的某個其他位置。根據(jù)一個實施例,應(yīng)用管理器120 是SharePoint承租人管理器,該管理器包括SharePoint專用邏輯。工作管理器110管理任務(wù)的執(zhí)行,并且啟用對較長時間運行的任務(wù)的調(diào)度和重試。工作管理器110啟動存儲在作業(yè)隊列112中的作業(yè)并且跟蹤運行中的作業(yè)。當已經(jīng)流逝了預(yù)定的時間時,工作管理器110可以自動地取消任務(wù)并且執(zhí)行與該任務(wù)相關(guān)的某些進一步處理。根據(jù)一個實施例,作業(yè)隊列112中的任務(wù)由工作管理器110通過調(diào)用一個或多個腳本130來執(zhí)行。例如,可以使用諸如微軟的P0werShell 之類的腳本語言來對由工作管理器110執(zhí)行的任務(wù)進行編程。每個腳本可以作為新進程運行。盡管將每個腳本作為新進程來執(zhí)行可以具有相當高的CPU開銷,但是該系統(tǒng)是可伸縮的,并且?guī)椭鸀槊看文_本執(zhí)行確保干凈的環(huán)境,加上在腳本完成時進行完全的清理。機器管理器115被配置成管理網(wǎng)絡(luò)(例如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、網(wǎng)絡(luò)3)中的物理機器。 一般而言,機器管理器115理解網(wǎng)絡(luò)、物理機器、虛擬機(VM)、VM鏡像(VHD)等等。機器管理器不必牢固綁定于網(wǎng)絡(luò)內(nèi)運行的特定服務(wù),而是在“角色”方面跟蹤網(wǎng)絡(luò)中的各種組件。例如,可以通過API 150請求機器管理器115在網(wǎng)絡(luò)3上部署具有版本12. 34. 56. 78的“你0” 型VM。響應(yīng)于對云管理器105的請求,機器管理器115對位于網(wǎng)絡(luò)3上的合適物理機器進行定位,并且根據(jù)與VM的角色相關(guān)聯(lián)的VM鏡像來配置VM。使用具有版本12. 34. 56. 78的 Foo型VHD來配置物理機器,該VHD被存儲在諸如數(shù)據(jù)存儲140之類的數(shù)據(jù)存儲內(nèi)。在網(wǎng)絡(luò)內(nèi)使用的鏡像也可以存儲在其他位置處,諸如用于所述網(wǎng)絡(luò)中的一個或多個網(wǎng)絡(luò)的本地數(shù)據(jù)共享中??梢赃\行腳本來執(zhí)行VHD在物理機器上的安裝以及用于執(zhí)行任何部署后的配置。機器管理器115跟蹤每個網(wǎng)絡(luò)的機器配置。例如,機器管理器115可以跟蹤VM的角色 (VM的類型)、VM的狀態(tài)(供應(yīng)中(Provisioning)、運行中、已停止、已故障)、版本以及VM 是否存在于給定場(farm)中(這隱含了其網(wǎng)絡(luò))。腳本130被配置為存儲將要執(zhí)行以便既本地地為云管理器105執(zhí)行工作又遠程地在所述網(wǎng)絡(luò)中的一個或多個網(wǎng)絡(luò)上執(zhí)行工作的腳本。腳本130中的一個或多個還可以存儲在其他位置。例如,將要在網(wǎng)絡(luò)(例如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、網(wǎng)絡(luò)3)上執(zhí)行的腳本可以本地地存儲到該網(wǎng)絡(luò)。這些腳本可用于許多不同目的。例如,所述腳本可以用于執(zhí)行對所述網(wǎng)絡(luò)中的一個或多個網(wǎng)絡(luò)中的機器的配置,改變之前配置的機器上的設(shè)定,添加新的VM,添加新的數(shù)據(jù)庫,將數(shù)據(jù)從一個機器移動到另一個,移動承租人,改變模式等。根據(jù)一個實施例,這些腳本是微軟的Power Shell 腳本。也可以使用其他編程實施方式。例如,可以使用編譯和/或前期綁定編程語言來實現(xiàn)該功能。然而,腳本是一種表達將要執(zhí)行的任務(wù)中的許多個的相當精確的語言。用諸如C#的編程語言對其等價物進行編程將常常需要冗長得多的實施方式。腳本還被后期綁定,這意味著可以以多個版本的底層代碼庫為目標,而不必不斷地鏈接到不同的接口 DLL。使用PowerShell腳本將允許進程由云管理器105本地地啟動,云管理器105進而可以啟動遠程機器(即,所附連的網(wǎng)絡(luò)之一中的物理機器)上的進程。還可以使用其他技術(shù)來啟動遠程機器上的進程,諸如安全Shell (SSH)等。云管理器105正在管理的應(yīng)用專用信息由應(yīng)用管理器120來執(zhí)行。根據(jù)一個實施例,應(yīng)用專用信息與微軟SharePoint :有關(guān)。由此,應(yīng)用管理器120被配置為了解 SharePoint承租人、站點集合等。每個網(wǎng)絡(luò)可以被配置成用于承租人的專用網(wǎng)絡(luò)和/或服務(wù)于一個以上客戶的多承租人網(wǎng)絡(luò)。網(wǎng)絡(luò)可以包括變化數(shù)目的物理機/虛擬機,物理機/虛擬機的配置在部署之后也變化。一般而言,只要未超過聯(lián)網(wǎng)極限(例如,負載平衡器和網(wǎng)絡(luò)交換機),網(wǎng)絡(luò)就可以繼續(xù)增長。例如,網(wǎng)絡(luò)可以從十個服務(wù)器開始,并且之后擴充為一百個或更多個服務(wù)器。可以給網(wǎng)絡(luò)內(nèi)的物理機分配類或類型。例如,所述機器中的某些機器可以是計算機器(用于 web前端和應(yīng)用服務(wù)器),而其他機器可以是與計算機器相比配備有更多存儲的存儲機器。 根據(jù)一實施例,云管理器105用多個版本的鏡像文件來配置網(wǎng)絡(luò)內(nèi)的機器。根據(jù)一實施例, 場常常具有相同版本的鏡像文件。根據(jù)一個實施例,在網(wǎng)絡(luò)內(nèi)由云管理器系統(tǒng)100通過虛擬化機器并且管理該網(wǎng)絡(luò)內(nèi)部獨立地行動的“場”來管理軟件極限。每個網(wǎng)絡(luò)可以包括一個或多個場(例如,參見網(wǎng)絡(luò)1)。根據(jù)一個實施例,網(wǎng)絡(luò)被認為是經(jīng)網(wǎng)絡(luò)負載平衡的機器的單個群集,所述機器向外部世界展示一個或多個VIP(虛擬IP)并且可以將通信路由到網(wǎng)絡(luò)內(nèi)的任何機器。網(wǎng)絡(luò)中的機器通常是緊耦合的,并且具有最小等待時間(即< Ims的查驗(ping)等待時間)。場是用于對需要緊密綁定關(guān)系的應(yīng)用進行協(xié)調(diào)的機器的基本分組。例如,內(nèi)容場可以部署在每個網(wǎng)絡(luò)內(nèi)以用于諸如MicrosoftSharePoint 的內(nèi)容管理應(yīng)用。一般而言,每一個場中的那組機器一起提供web服務(wù)和應(yīng)用服務(wù)器功能。通常,場內(nèi)的機器運行相同構(gòu)建的應(yīng)用程序(即SiarePoint)并且共享公共的配置數(shù)據(jù)庫以服務(wù)特定的承租人和站點集合。場可以包含異構(gòu)的虛擬機組。云管理器105在數(shù)據(jù)存儲140內(nèi)維護“場目標”, 該場目標是每個場的每種角色的機器的目標數(shù)目。一些角色包括內(nèi)容前端、內(nèi)容中央管理員、內(nèi)容計時器服務(wù)、聯(lián)合中央管理員、聯(lián)合應(yīng)用服務(wù)器等。例如,內(nèi)容場是處理傳入的顧客請求的基本SiarePoint場。聯(lián)合服務(wù)場包含可以跨場運行的諸如搜索和簡檔存儲這樣的 SiarePoint服務(wù)。場可以用于主存大容量公共因特網(wǎng)站點。某些場可以包含一組活動目錄服務(wù)器和供應(yīng)端口監(jiān)控程序(Provisioning Daemon)。云管理器105自動地部署網(wǎng)絡(luò)中的虛擬機和/或停用網(wǎng)絡(luò)中的虛擬機,以幫助滿足所定義的目標。這些場目標可以自動地和 /或手動地來配置。例如,場目標可以響應(yīng)于活動和容量需求的改變而改變。網(wǎng)絡(luò)場——每個網(wǎng)絡(luò)存在一個包含可以作為整個網(wǎng)絡(luò)的資源容易地橫向擴展的所有VM角色的網(wǎng)絡(luò)場。云管理器web服務(wù)API 150被設(shè)計為在可大規(guī)模伸縮的全局服務(wù)的上下文中工作。該API假定任何網(wǎng)絡(luò)請求可能在傳送中失敗和/或掛起。對云管理器105的調(diào)用被配置為是冪等的。換言之,可以對云管理器105進行多次相同的調(diào)用(只要參數(shù)是相同的)而不改變結(jié)果。云管理器105被設(shè)計成在向任何給定的請求返回響應(yīng)之前進行非常少的處理 (< 10ms, < 50ms)。云管理器105維護記錄以跟蹤當前請求。例如,云管理器105更新本地數(shù)據(jù)庫中的記錄,并且若需要則稍后調(diào)度“作業(yè)”以執(zhí)行更長的活動。云管理器跟蹤作為用于在網(wǎng)絡(luò)內(nèi)部署新機器的模板的鏡像(諸如,虛擬盤鏡像)。 鏡像引用可以存儲在諸如數(shù)據(jù)庫140的數(shù)據(jù)庫中和/或某個其他位置。鏡像可以存儲在對其上將部署鏡像的網(wǎng)絡(luò)而言是本地的一個或多個共享的數(shù)據(jù)存儲中。根據(jù)一個實施例,每個映像都包括虛擬機(VM)角色類型,其指定映像可以部署的VM的類型;該映像應(yīng)當使用的處理器的數(shù)目;將分配給該映像的RAM的量;用于找出附近安裝點的網(wǎng)絡(luò)ID(使得它們不會通過跨數(shù)據(jù)中心鏈接被反復地復制);以及可以被部署代碼用于訪問VHD的共享路徑?!愣?,由云系統(tǒng)100所管理的網(wǎng)絡(luò)中的機器不是以傳統(tǒng)方式通過下載數(shù)據(jù)并且將該數(shù)據(jù)合并到機器上的現(xiàn)有軟件中來升級的。相反,機器是通過用已更新的VHD替換 VHD來更新的。例如,當場需要新版本的軟件時,部署安裝了該新版本的新場。當部署新場時,將承租人從舊場移動到該新場。以此方式,由于升級造成的停機時間被最小化,并且場中的每個機器具有已被測試的相同版本。當虛擬機需要升級時,機器上的VM可以被刪除并且被配置為運行所需服務(wù)的VM所代替。盡管對現(xiàn)有軟件的升級不是最優(yōu)的,但是網(wǎng)絡(luò)內(nèi)的某些服務(wù)器使用原地升級的傳統(tǒng)更新過程。例如,活動目錄域控制器是通過更新服務(wù)器上的當前軟件而不完全替換機器上的映像來升級的。在一些實例中,云管理器也可以原地升級。圖2示出了包括管理器和相關(guān)聯(lián)的數(shù)據(jù)庫的云管理器。如所示的,云管理器200 包括工作管理器210、工作數(shù)據(jù)庫215、機器管理器220、機器數(shù)據(jù)庫225、承租人管理器230、 承租人數(shù)據(jù)庫235、私密數(shù)據(jù)庫M5、以及web服務(wù)API 2400一般而言,將在云管理系統(tǒng)(例如系統(tǒng)100)內(nèi)使用的數(shù)據(jù)庫的大小調(diào)整為實現(xiàn)高性能。例如,數(shù)據(jù)庫(諸如,工作數(shù)據(jù)庫215、機器數(shù)據(jù)庫225、承租人數(shù)據(jù)庫235和私密數(shù)據(jù)庫對幻不能超過預(yù)定義的大小限制(例如30GB、50GB、100GB等)。根據(jù)一實施例,調(diào)整數(shù)據(jù)庫的大小以使得其小得足以放入物理機的存儲器中。這有助于高讀取I/O性能。還可以基于對于一應(yīng)用程序(諸如,與SQL服務(wù)器交互時)的性能來選擇數(shù)據(jù)庫的大小。還可以調(diào)整用在場中的數(shù)據(jù)庫的大小以實現(xiàn)高性能。例如,它們的大小可以被調(diào)整為能放入主機的存儲器中和/或被調(diào)整為使得備份操作、移動操作、復制操作、恢復操作一般在預(yù)定的時間段內(nèi)執(zhí)行。云管理器200將云管理器數(shù)據(jù)劃分成四個數(shù)據(jù)庫。工作數(shù)據(jù)庫215用于工作管理器。機器數(shù)據(jù)庫225用于機器管理器220。承租人數(shù)據(jù)庫235用于承租人管理器230,并且私密數(shù)據(jù)庫245用于存儲敏感信息,諸如系統(tǒng)賬戶和口令信息、憑證、證書等。數(shù)據(jù)庫可以位于相同的服務(wù)器上,或者跨服務(wù)器分割。根據(jù)一實施例,每個數(shù)據(jù)庫被鏡像以獲得高可用性,并且是SQL數(shù)據(jù)庫。云管理器200被配置為使用縮減的SQL特征組與數(shù)據(jù)庫交互以便有助于在數(shù)據(jù)庫升級期間提供云管理器200的可用性。例如,嘗試避免外來密鑰或已存儲的過程。外來密鑰可能使模式變化變得困難并且導致意料之外的失效情況。已存儲的過程將應(yīng)用程序中的更多個放置在數(shù)據(jù)庫本身中。
嘗試最小化與SQL服務(wù)器的通信,因為與底層操作的成本相比,往返可能是昂貴的。例如,如果當前SQL服務(wù)器到單個數(shù)據(jù)庫的全部交互被包裝在單個往返中,則常常是效率高得多的。極少在數(shù)據(jù)庫015,225,235)內(nèi)使用限制條件。一般而言,限制條件在其有助于在沒有額外查詢的情況下提供具有正確類型的錯誤處理的簡單更新時是有益的。例如,完全合格的域名(FQDN)表具有對“名稱”施加的限制條件,以幫助防止承租人意外地試圖主張與已經(jīng)被分配給不同承租人的FQDN相同的FQDN。當添加索引時使用警告。索引通常以寫入操作的額外I/O為代價來改善讀取性能。由于數(shù)據(jù)庫內(nèi)的數(shù)據(jù)主要是駐留在RAM上的,因此即使全表掃描仍然是相對快的。根據(jù)一實施例,一旦查詢模式已經(jīng)穩(wěn)定就可以添加索引,并且可以根據(jù)所提出的索引來確定性能改善。根據(jù)一實施例,如果添加索引將可能花費長時間,則可以指定“ONLINE = ON(在線=開啟)”選項,以使得在最初構(gòu)該建索引時表不被鎖定。根據(jù)一實施例,可以執(zhí)行對云管理器內(nèi)數(shù)據(jù)庫的升級而不導致云管理器系統(tǒng)停機。換言之,即使在云管理器升級期間,云管理器繼續(xù)處理已接收的請求。由此,對模式作出的改變應(yīng)與之前的模式兼容。在升級云管理器所使用的web服務(wù)器之前進行SQL模式升級。當web服務(wù)器升級時,它們可以開始使用數(shù)據(jù)庫中所啟用的新特性。數(shù)據(jù)庫升級被限制以使得升級中所涉及的操作是快速和有效的。例如,可以添加表,并且可以向現(xiàn)有列添加新的可空列??梢栽诒淼慕Y(jié)尾處添加新的列。一般而言,避免對數(shù)據(jù)庫的耗時操作。例如, 在存在大量數(shù)據(jù)時,在創(chuàng)建時間向新添加的列添加缺省值可能是非常耗時的操作。然而,添加可空列(nullable column)是非??焖俚牟僮鳌H缟厦嫠懻摰?,允許添加新的索引,但是在添加新的限制條件時應(yīng)當采取警告,以幫助保證模式升級不會破除現(xiàn)有數(shù)據(jù)。例如,當添加限制條件時,該限制條件可以被設(shè)置為如下狀態(tài)該限制條件不被檢查并且避免對現(xiàn)有行和潛在的錯誤進行高成本的驗證。舊表和未使用的列在新版本被使用并且云管理器不訪問這些表和列以后被移除?!愣?,每個數(shù)據(jù)庫中的單個行用于指示任務(wù)和/或所需狀態(tài)。例如,承租人數(shù)據(jù)庫235為每個承租人包括單個行。給定的承租人可以包括所需版本(Required Version) 記錄。該記錄用于幫助保證該承租人被放置在運行所需版本的場上。例如,對于要停留在 SharePoint 14 SPl上的承租人1而言,該承租人的所需版本可以被設(shè)置為“ 14. 1”,并且包括14. 1的任何版本都將匹配并且任何其他版本(例如14. 2. xxxx)都將不匹配。承租人記錄可以包括其他項目,諸如已授權(quán)的用戶數(shù)目、限額(例如所允許的總數(shù)據(jù)使用、每用戶的數(shù)據(jù)使用等)、時間限制等。某個組織可能具有代表不同地理位置、組織或容量的多個承租人。根據(jù)一實施例,將承租人彼此隔開而沒有(經(jīng)由外聯(lián)網(wǎng)或其他特性)對用戶的明確邀請。根據(jù)一個實施例,每個承租人都被鎖定到一專用網(wǎng)絡(luò)中。承租人被保持為相對于一小組數(shù)據(jù)庫而言是本地化的。承租人或者是小的(小于將填充一個數(shù)據(jù)庫的程度),在這種情況下,該承租人處于與其他承租人共享的恰好一個數(shù)據(jù)庫中。這意味著共享該數(shù)據(jù)庫的所有承租人需要同時升級。當承租人變大時,其可被移動到其自己的專用數(shù)據(jù)庫,并且現(xiàn)在可以具有一個以上、但是不與其他承租人共享的數(shù)據(jù)庫。在一個或多個專用數(shù)據(jù)庫中維護大承租人有助于減少需要在單次升級中同時升級的數(shù)據(jù)庫的數(shù)目。
類似地,工作數(shù)據(jù)庫215包括關(guān)于每個作業(yè)的單個行。機器數(shù)據(jù)庫225可包括關(guān)于每個物理機、VM、場等的行。例如,機器管理器數(shù)據(jù)庫225可以包括版本字符串。根據(jù)一實施例,網(wǎng)絡(luò)內(nèi)的每個VHD、場和VM具有相關(guān)聯(lián)的版本字符串。根據(jù)一個實施例,云管理器包括簡單日志系統(tǒng),該簡單日志系統(tǒng)可以被配置為為每個web服務(wù)調(diào)用記錄日志條目??梢詫崿F(xiàn)包括如所期望的那樣少和/或多的特性的日志系統(tǒng)。一般而言,日志系統(tǒng)被用于度量使用和性能剖析。根據(jù)實施例,web服務(wù)API 240是使用帶有ASP. net的SOAP構(gòu)建的。API中的各種 web方法遵循兩種主要模式——獲取(Get)和更新(Update)。一般而言,更新方法將數(shù)據(jù)結(jié)構(gòu)作為輸入,并且返回相同的結(jié)構(gòu)作為輸出。輸出結(jié)構(gòu)返回數(shù)據(jù)庫中底層對象的當前狀態(tài),其中如果驗證或其他業(yè)務(wù)邏輯改變了某些性質(zhì)或者以其他方式填充了附加的性質(zhì)(例如記錄ID或由云管理器計算出的其他值),則該底層對象可能不同于輸入對象。更新方法用于初始對象創(chuàng)建以及隨后的更新。換言之,對web服務(wù)API 240的調(diào)用者可以簡單地請求它們想要的配置并且它們不需要跟蹤對象是否已經(jīng)存在。另外,這意味著更新是冪等的,因為相同的更新調(diào)用可以進行兩次,其中效果相同使其僅僅發(fā)生一次。根據(jù)一實施例,更新方法可以包括LastUpdated(最近更新)屬性。當存在LastUpdated屬性時,若LastUpdated 的值與當前存儲在數(shù)據(jù)庫中的值不匹配,則云管理器200拒絕更新。某些更新方法包括在對方法的第一次調(diào)用時被設(shè)置的并且在對方法的其他調(diào)用時未被設(shè)置的屬性。云管理器200被配置為避免使用回調(diào)(callback)。由于回調(diào)可能是不可靠的,因此與云管理器200交互的客戶可以在他們想要檢查更新狀態(tài)時使用web服務(wù)API來檢查對象狀態(tài)。根據(jù)實施例,對更新方法的調(diào)用導致云管理器200將底層對象的狀態(tài)設(shè)置為“供應(yīng)中(Provisioning)”,并且當更新完成時,狀態(tài)被設(shè)置為“活動(Active)”。圖3示出了存儲在數(shù)據(jù)庫的行內(nèi)的示例性作業(yè)記錄。如所示的,記錄300包括作業(yè)標識符302、類型304、數(shù)據(jù)306、所有者308、步驟310、上一次運行312、期滿時間314、下次時間316、狀態(tài)318以及狀況320?!愣?,針對所請求執(zhí)行的每個任務(wù),云管理器在數(shù)據(jù)庫350 (例如,圖2中的工作數(shù)據(jù)庫215)中創(chuàng)建記錄。作業(yè)標識符302用于為所請求的任務(wù)指定唯一標識符。類型304指定要執(zhí)行的任務(wù)。例如,類型可以包括將要執(zhí)行的腳本的名稱。例如,當任務(wù)是要運行名稱為“D印loyVM. psl"的腳本時,則數(shù)據(jù)306可以包括標識符(例如 "-VMID 123”)。這允許將新任務(wù)類型添加到系統(tǒng),而不需要對該系統(tǒng)的已編譯或其他二進制部分進行任何改變。數(shù)據(jù)306用于存儲與任務(wù)相關(guān)聯(lián)的數(shù)據(jù)。例如,數(shù)據(jù)可以被設(shè)置為將在其上執(zhí)行任務(wù)的承租人、機器、網(wǎng)絡(luò)、VM等。數(shù)據(jù)306還可以存儲數(shù)據(jù)庫中的值所被設(shè)置成的一個或多個值。執(zhí)行任務(wù)的過程可以注意作業(yè)記錄以查看所需機器數(shù)目被設(shè)置為何值。腳本使用數(shù)據(jù)庫中的值來執(zhí)行操作。所有者308指定過程/執(zhí)行該過程的機器。例如,當云管理器機器開始執(zhí)行作業(yè)時,該機器使用機器的ID來更新記錄的所有者308部分。步驟310提供對當前腳本的步驟的指示。例如,腳本可以將任務(wù)劃分成任何數(shù)目的步驟。當該進程完成該腳本的步驟時,步驟310被更新。進程還可以查看步驟310以確定在腳本中要執(zhí)行什么步驟并且避免必須重新執(zhí)行之前已完成的步驟。上一次運行312提供上一次啟動腳本的時間。每次啟動腳本時,更新上一次運行時間。期滿時間314是指示該進程應(yīng)當何時終止的時間。根據(jù)實施例,期滿時間是在進程被啟動之后的預(yù)定的時間量(例如5分鐘、10分鐘...)。期滿時間可以通過經(jīng)由web服務(wù)API的請求進程來更新。下次時間316是指示任務(wù)下次應(yīng)當何時執(zhí)行的時間。例如,進程可以在完成某步驟之后停止,并且被指示等待直到所指定的下次時間316以恢復處理。狀態(tài)318指示當前狀態(tài),并且狀況320指示作業(yè)的狀況(例如,已創(chuàng)建、已掛起、已恢復、執(zhí)行中、已刪除)。如果數(shù)據(jù)庫中的重復行具有相同的任務(wù)類型和數(shù)據(jù)值,則它們可以在執(zhí)行之前被移除。例如,可以進行多個請求以執(zhí)行存儲在數(shù)據(jù)庫的多個行中的相同的任務(wù)。作業(yè)可以具有與其相關(guān)聯(lián)的一個或多個鎖355。如果鎖不可用,則作業(yè)將不被調(diào)度運行,直到鎖可用。這些鎖可以以許多不同的方式來配置。例如,鎖可以基于互斥、信號量等。一般而言,互斥防止代碼被一個以上線程同時執(zhí)行,并且信號量將共享資源的同時使用的數(shù)目限制在最大數(shù)目。根據(jù)實施例,鎖是表示資源的字符串。該資源可以是任何類型的資源。例如,鎖可以是場、機器、承租人等。一般而言,鎖被用于延遲一個或多個任務(wù)的執(zhí)行。每個作業(yè)可以指定其在運行以前需要的一個或多個鎖。作業(yè)可以在其操作期間的任何時間釋放鎖。當存在鎖時,作業(yè)不被調(diào)度。需要一個以上鎖的作業(yè)一次請求所需的全部鎖。 例如,已經(jīng)持有鎖的作業(yè)可以不請求附加的鎖。這樣的模式有助于防止由多個作業(yè)間的循環(huán)鎖依賴性造成的可能的死鎖情況。圖4示出了用于網(wǎng)絡(luò)的示例系統(tǒng)400,該網(wǎng)絡(luò)包括用于在線服務(wù)的前端和后端服務(wù)器。示例性系統(tǒng)400包括客戶機402和404、網(wǎng)絡(luò)406、負載平衡器408、WFE服務(wù)器410、 412,414以及后端服務(wù)器416-419??墒褂酶嗷蚋俚目蛻魴C、WFE、后端服務(wù)器、負載平衡器和網(wǎng)絡(luò)。另外,由系統(tǒng)400中的組件所提供的功能中的某些可以由其他組件來執(zhí)行。例如,某些負載平衡可以在WFE中執(zhí)行。在示例實施例中,客戶機402和404是諸如臺式計算機、膝上型計算機、終端計算機、個人數(shù)字助理或蜂窩電話設(shè)備的計算設(shè)備。客戶機402和404可包括輸入/輸出設(shè)備、 中央處理單元(“CPU”)、數(shù)據(jù)存儲設(shè)備和網(wǎng)絡(luò)設(shè)備。在本申請中,術(shù)語客戶機和客戶機計算機互換地使用。WFE 410,412和414可由客戶機402和404經(jīng)由負載平衡器408通過網(wǎng)絡(luò)406訪問。如所討論的,服務(wù)器可以在場中配置。后端服務(wù)器416對WFE 410、412和414是可訪問的。負載平衡器408是專用網(wǎng)絡(luò)設(shè)備和/或一個或多個服務(wù)器計算機。負載平衡器408、420、 WFE 410,412和414以及后端服務(wù)器416可包括輸入/輸出設(shè)備、中央處理單元(“CPU”)、 數(shù)據(jù)存儲設(shè)備和網(wǎng)絡(luò)設(shè)備。在示例實施例中,網(wǎng)絡(luò)406是因特網(wǎng),并且客戶機402和404可以遠程地訪問WFE 410,412和414以及連接到WFE 410,412和414的資源。在示例實施例中,系統(tǒng)400是在線的、基于瀏覽器的文檔協(xié)作系統(tǒng)。在線的、 基于瀏覽器的文檔協(xié)作系統(tǒng)的一個示例是來自美國華盛頓州雷蒙德市的微軟公司的 Microsoft Sharepoint 。在系統(tǒng)400中,后端服務(wù)器416-419中的一個或多個是SQL服務(wù)器,例如,來自美國華盛頓州雷蒙德市的微軟公司的SQL服務(wù)器。WFE 410、412和414提供客戶機402和404與后端服務(wù)器416-419之間的接口。 負載平衡器408、420將請求從客戶機402和404引導到WFE 410、412和414,以及從WFF引導到后端服務(wù)器416-419。負載平衡器408使用諸如WFE利用率、到WFE的連接數(shù)目和總體 WFE性能之類的因素來確定哪個WFE服務(wù)器接收客戶機請求。類似地,負載平衡器420使用諸如后端服務(wù)器利用率、到服務(wù)器的連接數(shù)目和總體性能這樣的因素來確定哪個后端服務(wù)器接收請求??蛻粽埱蟮氖纠梢允窃L問存儲在后端服務(wù)器之一上的文檔,編輯存儲在后端服務(wù)器(例如416-419)上的文檔,或者將文檔存儲在后端服務(wù)器上。當負載平衡器408通過網(wǎng)絡(luò)406接收客戶機請求時,負載平衡器408確定WFE服務(wù)器410、412和414中的哪個接收該客戶機請求。類似地,負載平衡器420確定后端服務(wù)器416-419中的哪一個從WFE服務(wù)器接收請求。后端服務(wù)器可以被配置為存儲一個或多個承租人(即顧客)的數(shù)據(jù)?,F(xiàn)在參考圖5,將描述在各實施例中利用的計算機500的說明性計算機體系結(jié)構(gòu)。 圖5所示的計算機體系結(jié)構(gòu)可被配置為服務(wù)器、臺式或移動計算機,并且包括中央處理單元5( “CPU”)、包括隨機存取存儲器9 ( “RAM”)和只讀存儲器("ROM") 11的系統(tǒng)存儲器 7、以及將存儲器耦合至中央處理單元(“CPU”)5的系統(tǒng)總線12?;据斎?輸出系統(tǒng)存儲在ROM 11中,所述基本輸入/輸出系統(tǒng)包含幫助在諸如啟動期間在計算機內(nèi)元件之間傳遞信息的基本例程。計算機500還包括大容量存儲設(shè)備 14,用于存儲操作系統(tǒng)16、應(yīng)用程序10、數(shù)據(jù)存儲24、文件、以及與云系統(tǒng)100的執(zhí)行和同云系統(tǒng)100的交互相關(guān)的云程序26。大容量存儲設(shè)備14通過連接至總線12的大容量存儲控制器(未示出)連接到 CPU 5。大容量存儲設(shè)備14及其相關(guān)聯(lián)的計算機可讀介質(zhì)為計算機500提供非易失性存儲。雖然此處包含的計算機可讀介質(zhì)的描述針對諸如硬盤或CD-ROM驅(qū)動器等大容量存儲設(shè)備,但是計算機可讀介質(zhì)可以是計算機100可以訪問的任何可用介質(zhì)。作為示例而非限制,計算機可讀介質(zhì)可包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以存儲如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)來實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計算機存儲介質(zhì)還包括,但不限于,RAM、ROM、可擦除可編程只讀存儲器(“EPR0M”)、電可擦可編程只讀存儲器 (“EEPR0M”)、閃存或其它固態(tài)存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(“DVD”)或其它光存儲、 磁帶盒、磁帶、磁盤存儲或其它磁性存儲設(shè)備、或能用于存儲所需信息且可以由計算機500 訪問的任何其它介質(zhì)。根據(jù)各實施例,計算機500可以使用通過諸如因特網(wǎng)的網(wǎng)絡(luò)18至遠程計算機的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。計算機500可以通過連接至總線12的網(wǎng)絡(luò)接口單元20來連接到網(wǎng)絡(luò)18。網(wǎng)絡(luò)連接可以是無線的和/或有線的。網(wǎng)絡(luò)接口單元20也可用于連接到其它類型的網(wǎng)絡(luò)和遠程計算機系統(tǒng)。計算機500還可以包括用于接收和處理來自多個其他設(shè)備的輸入的輸入/輸出控制器22,這些設(shè)備包括鍵盤、鼠標或者電子指示筆(圖5中未示出)。 類似地,輸入/輸出控制器22可以向顯示屏洲、打印機或其它類型的輸出設(shè)備提供輸出。如上面簡要提到的,多個程序模塊和數(shù)據(jù)文件可以存儲在計算機500的大容量存儲設(shè)備14和RAM 9內(nèi),包括適于控制聯(lián)網(wǎng)計算機的操作的操作系統(tǒng)16,比如華盛頓州雷蒙德市的微軟公司的WINDOWS 操作系統(tǒng)。大容量存儲設(shè)備14和RAM 9還可以存儲一個或多個程序模塊。具體而言,大容量存儲設(shè)備14和RAM 9可以存儲諸如云程序沈的執(zhí)行與云系統(tǒng)相關(guān)的任務(wù)的一個或多個應(yīng)用程序。圖6示出了用于對在在線服務(wù)內(nèi)使用的機器進行打補丁的補丁系統(tǒng)。云管理器 605用于為在線服務(wù)部署、配置、打補丁和管理網(wǎng)絡(luò)。云管理器被配置為通過不能依靠可靠網(wǎng)絡(luò)的冪等且異步的應(yīng)用程序web服務(wù)應(yīng)用程序編程接口(API) 620來接收請求。如所示的,云管理器605包括工作管理器110、機器管理器115、應(yīng)用專用管理器 120、腳本130、數(shù)據(jù)庫612、補丁 615、和web服務(wù)API 620。根據(jù)一個實施例,應(yīng)用管理器 120是SharePoint承租人管理器,該管理器包括SharePoint專用邏輯。使用API 620的請求可用于在跨不同網(wǎng)絡(luò)(網(wǎng)絡(luò)1、網(wǎng)絡(luò)2)的各種拓撲結(jié)構(gòu)中管理和部署服務(wù)器。盡管僅示出了兩個網(wǎng)絡(luò),但是一般可以管理許多更多的網(wǎng)絡(luò)(例如十個、 一百個、一千個、一萬個等)。云管理器605運行,并且可以與上面所示和所描述的云管理器系統(tǒng)類似地來配置。web服務(wù)API 620包括用于從工作管理器110、機器管理器115和應(yīng)用管理器120請求服務(wù)的方法。例如,可以使用API 620作出請求,以便更新數(shù)據(jù)庫中的承租人、添加新的SQL服務(wù)器、部署補丁、部署新的場、添加新的機器、更新VM、獲得數(shù)據(jù)存儲內(nèi)的值等。Web服務(wù)API 620被設(shè)計為在可大規(guī)??煽s放全局服務(wù)的上下文中工作。由于網(wǎng)絡(luò)請求被假定為是本來不可靠的,因此API假定任一網(wǎng)絡(luò)請求可能失效和/或停留在傳送中。使用web服務(wù)API 620的請求被配置為是冪等的。換言之,可以使用web服務(wù)API 620 作出具有相同參數(shù)的相同調(diào)用,而不改變結(jié)果。云管理器605被設(shè)計成在向任何給定的請求返回響應(yīng)之前進行非常少的處理 (< 10ms, < 50ms)。云管理器605維護記錄以跟蹤當前請求。例如,云管理器605更新本地數(shù)據(jù)庫(諸如數(shù)據(jù)庫612)中的記錄,并且若需要則稍后調(diào)度“作業(yè)”以執(zhí)行更長的活動。 一旦參數(shù)和作業(yè)信息被提交到數(shù)據(jù)庫之后,響應(yīng)就被發(fā)送給請求者。根據(jù)實施例,web服務(wù) API 620是使用具有ASP. net的SOAP構(gòu)建的。補丁 615被配置成存儲將被應(yīng)用于一個或多個(物理和虛擬的)機器的補丁。所使用的和/或?qū)⒈徊渴鸬揭粋€或多個網(wǎng)絡(luò)中的機器里的一個或多個上的虛擬硬盤(VHD)鏡像也可被存儲在包括補丁的數(shù)據(jù)存儲中和/或被存儲在某一其他位置。根據(jù)一實施例,使用MICROSOFT VHD文件格式,該格式指定可以駐留在封裝在單個文件內(nèi)的本機主文件系統(tǒng)上的虛擬機硬盤??蓪?yīng)用于特定網(wǎng)絡(luò)內(nèi)的映像移動到全局共享645和/或?qū)W(wǎng)絡(luò)為本地的網(wǎng)絡(luò)共享(例如,網(wǎng)絡(luò)共享632和網(wǎng)絡(luò)共享64 。將補丁存儲在網(wǎng)絡(luò)共享上將節(jié)省部署補丁的時間,因為減小了網(wǎng)絡(luò)通信時間。如所討論的,網(wǎng)絡(luò)中的機器可通過安裝新VHD和/或?qū)⒀a丁應(yīng)用于機器上的現(xiàn)有軟件來升級??沙鲇诓煌哪康亩峁┭a丁。一些補丁對于在線服務(wù)中的機器的操作/安全性而言是關(guān)鍵的,而其他補丁可能是非關(guān)鍵的且對于應(yīng)用而言是隨意的。例如,零天補丁可被用于安裝將被盡可能快地安裝的關(guān)鍵軟件更新,而其他非關(guān)鍵補丁可被檢查,隨后被批準的補丁可被自動地應(yīng)用于機器。軟件打補丁可能需要機器在補丁的應(yīng)用期間被重新引導一次或多次。例如,一個補丁可首先被安裝,這要求在另一補丁可被應(yīng)用于機器之前重新引導該機器。此重新引導/補丁周期可繼續(xù)進行直至不再有補丁要被應(yīng)用。云管理器605嘗試對針對物理和虛擬機器的網(wǎng)絡(luò)中的機器進行的打補丁進行協(xié)調(diào),該物理和虛擬機器一起工作以提供在線服務(wù)以使得服務(wù)的總體可用性作為整體被維護。每個網(wǎng)絡(luò)(例如,網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、可包括被配置成具有用以執(zhí)行數(shù)個角色的冗余度的大量機器。例如,第一數(shù)目個機器(例如,20)可被配置成提供第一角色,第二數(shù)目個機器可被配置成提供第二角色(例如,30),第三數(shù)目個機器可被配置成提供第三角色(例如, 12)等。換言之,多個機器被配置成對于在線服務(wù)執(zhí)行相同角色,以使得正執(zhí)行該角色的機器子集的故障不會導致此角色對于在線服務(wù)的性能的完全故障。可在在線服務(wù)的操作和部署的許多階段期間使用打補丁。例如,當VHD正被創(chuàng)建時,可將補丁應(yīng)用于該VHD以使得它們在分發(fā)時生產(chǎn)準備就緒(production-ready)。當對物理機進行鏡像時,在使得它們可為在線服務(wù)所用之前可能需要對它們進行打補丁。可能需要對機器的現(xiàn)有部署進行打補丁以確保它們的正在進行的順從性??稍诟鱾€時間將補丁遞送給云管理器605和/或更新服務(wù),諸如更新服務(wù)610。 例如,可在特定時間(即,兩周一次、每月一次等)發(fā)布非關(guān)鍵補丁,而關(guān)鍵補丁一旦可用就可發(fā)布它們。根據(jù)實施例,更新服務(wù)610是來自微軟公司的Windows Server Update krvices (WSUS)。WSUS輔助管理員管理發(fā)布的補丁的分發(fā)。雖然更新服務(wù)610被示為在云管理器605以及網(wǎng)絡(luò)1和網(wǎng)絡(luò)2的內(nèi)部,但是更新服務(wù)610可被包括在網(wǎng)絡(luò)和/或云管理器605的一個或多個中。當接收到非關(guān)鍵補丁時,被授權(quán)的用戶(即,系統(tǒng)管理員)可檢查補丁并批準/不批準部署它們。管理員可決定不部署非關(guān)鍵的某些補丁。在批準過程之后,被批準的補丁可被調(diào)度來安裝。補丁可被存儲在不同的位置處。例如,補丁可被存儲在本地網(wǎng)絡(luò)共享(例如,網(wǎng)絡(luò)共享632、網(wǎng)絡(luò)共享64 中和/或全局網(wǎng)絡(luò)共享中。最初,補丁可被存儲在一個位置處,并在隨后被提供到另一位置。例如,可將補丁從補丁 615移至與補丁將被部署到其上的網(wǎng)絡(luò)相關(guān)聯(lián)的網(wǎng)絡(luò)共享。當發(fā)布關(guān)鍵補丁(S卩,零天補丁)時,存在很少的可用來對那些補丁執(zhí)行驗證并將它們應(yīng)用到網(wǎng)絡(luò)內(nèi)的機器的時間。但接收到關(guān)于零天補丁的通知時,云管理器620和/或更新服務(wù)610可調(diào)度補丁來部署。根據(jù)實施例,每一個網(wǎng)絡(luò)中的機器被加入到遵循組策略對象(GPO)的相同域。GPO 管理那些機器上的更新服務(wù)610的行為。例如,GPO可指定當新的更新在沒有自動安裝這些更新的情況下可用時,域內(nèi)的機器被設(shè)置成下載這些新的更新。在機器遵循GPO且沒有自動安裝的情況下,可控制補丁到機器的應(yīng)用,以使得在打補丁期間維護在線服務(wù)的可用性。執(zhí)行對補丁的調(diào)度和應(yīng)用,以使得在線服務(wù)內(nèi)提供的功能的停機時間被最小化。關(guān)鍵補丁可被自動配置成在特定時間被部署和/或在被接收到之際被部署。云管理器605可被配置成在確定應(yīng)用補丁的次序之后觸發(fā)對這些補丁的安裝。在不同的時間將補丁應(yīng)用于機器組,而并非在單個時間向正等待將被打補丁的所有機器應(yīng)用補丁。標識等待將被打補丁的機器并將這些機器劃分成數(shù)個組,這些組是高可用性獨立組。高可用性獨立物理機組是這樣的物理機集合該物理機集合的任一個上沒有屬于相同場且還具有相同虛擬機角色的VM。例如,如果有為SQL的三個機器且機器1被鏡像到機器2上,而機器3也被鏡像到機器2上,隨后機器1和機器3可在同時被打補丁,但不對機器2打補丁。一般而言,當存在對于在線服務(wù)執(zhí)行相同角色的兩個或更多機器時,不在相同時間對它們進行打補丁。如此,存在對于在線服務(wù)執(zhí)行角色的至少一個機器??墒褂貌煌姆椒▉泶_定對每個組進行打補丁的時間表。例如,當當前負載對于等待被打補丁的組而言較低時,可在同時對一個或更多個組進行打補丁。當當前負載對于等待被打補丁的組而言較高時,可每次僅對單個組進行打補丁。根據(jù)實施例,按順序每次一個地對每個組進行打補丁,直至所有組都被打補丁。可并行地對每個組內(nèi)的機器進行打補丁。類似地,當同時對兩個或更多個組進行打補丁時,打補丁可并行地進行。還標識組內(nèi)每個機器上要打補丁的VM。對要打補丁的VM的標識是基于VM的類型和角色。也可并行地對每個機器上的VM進行打補丁。一些補丁要求安裝第一補丁并且在可安裝第二補丁之前重新引導機器。在已將補丁安裝到機器上之后,更新服務(wù)610和/或云管理器可被用于確定是否需要重新引導機器。 一旦機器被備份且在重新引導之后運行(若有需要),則檢查機器以查看是否有任何更多的待決補丁要被應(yīng)用。此過程重復進行,直至機器無需應(yīng)用任何更多補丁。當沒有要應(yīng)用的待決補丁時,機器被認為被打了補丁。如果補丁失敗,則機器可從操作中被移除或者在嘗試應(yīng)用補丁之前回退到先前狀態(tài)。當移除機器時,另一機器可被配置成取代它。圖7示出用于對在線系統(tǒng)中的機器進行打補丁的過程。當閱讀對在此提供的例程的討論時,應(yīng)當理解,各實施例的邏輯操作被實現(xiàn)為(1) 運行于計算系統(tǒng)上的一系列計算機實現(xiàn)的動作或程序模塊,和/或(2)計算系統(tǒng)內(nèi)互連的機器邏輯電路或電路模塊。取決于實現(xiàn)本發(fā)明的計算系統(tǒng)的性能要求,可以選擇不同的實現(xiàn)。因此,所例示的并且構(gòu)成此處所描述的實施例的邏輯操作被不同地表示為操作、結(jié)構(gòu)設(shè)備、動作或模塊。這些操作、結(jié)構(gòu)設(shè)備、動作和模塊可用軟件、固件、專用數(shù)字邏輯以及它們的任何組合來實現(xiàn)。在啟動操作之后,過程700行進至操作710,在那里接收補丁。如所討論的,補丁可以是關(guān)鍵補丁或非關(guān)鍵補丁。關(guān)鍵補丁將盡可能快地被應(yīng)用,而非關(guān)鍵補丁可被檢查并被調(diào)度成在更方便的時間來應(yīng)用。移至操作720,確定接收對補丁的應(yīng)用的機器。例如,僅機器的一部分可能需要應(yīng)用補丁。行進至操作730,將要被打補丁的機器劃分成數(shù)個機器組。進行劃分被用來幫助確保將補丁應(yīng)用于機器不會導致對在線服務(wù)的總體可用性的破壞。根據(jù)實施例,機器可被劃分成數(shù)個組,這些組是高可用性獨立組。物理機的高可用性獨立組是這樣的物理機集合該物理機集合的任一個上沒有屬于相同場且還具有相同虛擬機角色的VM。行進至操作740,確定對機器進行打補丁的時間表。時間表被用來確定對機器組進行打補丁的次序以及何時開始對機器組進行打補丁。接收到關(guān)鍵補丁可觸發(fā)對補丁的立即調(diào)度和應(yīng)用。非關(guān)鍵補丁可在它們被授權(quán)來應(yīng)用之前通過檢查過程。一般而言,關(guān)鍵補丁可被盡快可實行地應(yīng)用,而非關(guān)鍵補丁可在更方便的時間被應(yīng)用。根據(jù)實施例,在不同時間對每個組打補丁。轉(zhuǎn)到操作750,可對機器組內(nèi)的機器進行打補丁。根據(jù)實施例,可同時并行地對組中的每個機器進行打補丁。也可按順序?qū)C器進行打補丁。當組內(nèi)的每個機器已被打補丁且被重新引導(若需要)時,過程移至判定操作760。
在判定操作760,關(guān)于是否有更多組要被打補丁作出確定。當有更多組要打補丁, 則過程返回到操作750。當沒有任何更多組要被打補丁時,過程移至結(jié)束塊并返回處理其他動作。以上說明書、示例和數(shù)據(jù)提供了對本發(fā)明的組成部分的制造和使用的全面描述。 因為可以在不背離本發(fā)明的精神和范圍的情況下做出本發(fā)明的許多實施例,所以本發(fā)明落在所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于對在線服務(wù)中的機器進行打補丁的方法,包括接收要應(yīng)用于包括網(wǎng)絡(luò)的在線服務(wù)中的機器的補丁 ;其中所述補丁是關(guān)鍵補丁和非關(guān)鍵補丁中的至少一個(710);確定所述網(wǎng)絡(luò)中的至少一個內(nèi)接收對所述補丁的應(yīng)用的所述機器(720);其中所確定的機器包括對所述在線服務(wù)執(zhí)行相同角色的多個機器;以及在將所述補丁應(yīng)用于所述多個機器的其余部分之前將所述補丁自動應(yīng)用于執(zhí)行所述相同角色的多個機器的一部分(750)。
2.如權(quán)利要求1所述的方法,其特征在于,還包括將所確定的機器劃分成機器組,以使得對所述在線服務(wù)執(zhí)行相同角色的機器被劃分在所述組的至少兩個之間(730)。
3.如權(quán)利要求2所述的方法,其特征在于,還包括確定所述機器中的每一個上要接收對所述補丁的應(yīng)用的任何虛擬機(720)。
4.如權(quán)利要求2所述的方法,其特征在于,所述補丁是由更新服務(wù)(610)來接收的,所述更新服務(wù)被配置成根據(jù)時間表將所述補丁應(yīng)用于所述機器,以對所述組中的每一個進行打補丁。
5.如權(quán)利要求2所述的方法,其特征在于,所述網(wǎng)絡(luò)內(nèi)的所述機器遵循對何時應(yīng)用所述補丁實施限制的組策略(610)。
6.如權(quán)利要求2所述的方法,其特征在于,還包括檢查要應(yīng)用于所述組內(nèi)的所述機器的附加補丁,以及在將所述補丁應(yīng)用于下一組之前將所述附加補丁應(yīng)用于所述組中的所述機器(740)。
7.一種具有計算機可執(zhí)行指令的計算機可讀存儲介質(zhì),所述計算機可執(zhí)行指令用于對在線服務(wù)的機器進行打補丁,包括接收要應(yīng)用于包括網(wǎng)絡(luò)的在線服務(wù)中的機器的補丁 ;其中所述補丁是關(guān)鍵補丁和非關(guān)鍵補丁中的至少一個(710);確定所述網(wǎng)絡(luò)中的至少一個內(nèi)接收對所述補丁的應(yīng)用的所述機器(720);其中所確定的機器包括對所述在線服務(wù)執(zhí)行相同角色的多個機器;將所確定的機器劃分成機器組,以使得對所述在線服務(wù)執(zhí)行相同角色的機器被劃分在所述組的至少兩個之間(730);調(diào)度何時將所述補丁應(yīng)用于所述組(740);以及根據(jù)所述調(diào)度按順序?qū)⑺鲅a丁自動應(yīng)用于所述組的每一個(750)。
8.一種用于對提供在線服務(wù)的機器進行打補丁的系統(tǒng),包括 處理器和計算機可讀介質(zhì)(5);存儲在所述計算機可讀介質(zhì)上并在所述處理器上執(zhí)行的操作環(huán)境(16); 被耦合到不同的網(wǎng)絡(luò)的云管理器(105),用于管理對機器的部署和對所述網(wǎng)絡(luò)的配置, 以及自動調(diào)度何時將補丁應(yīng)用于所述在線服務(wù)中的機器;以及所述不同的網(wǎng)絡(luò)的每一個中的數(shù)據(jù)庫000),用于存儲將被應(yīng)用于所述網(wǎng)絡(luò)內(nèi)的機器的所述補丁 ;以及補丁系統(tǒng),其被配置成執(zhí)行動作,所述動作包括接收要應(yīng)用于包括網(wǎng)絡(luò)的在線服務(wù)中的機器的補丁 ;其中所述補丁是關(guān)鍵補丁和非關(guān)鍵補丁中的至少一個(710);確定所述網(wǎng)絡(luò)中的至少一個內(nèi)接收對所述補丁的應(yīng)用的所述機器;其中所確定的機器包括對所述在線服務(wù)執(zhí)行相同角色的多個機器(720);將所確定的機器劃分成機器組,以使得對所述在線服務(wù)執(zhí)行相同角色的機器被劃分在所述組的至少兩個之間(730);以及在將所述補丁應(yīng)用于所述組的另一部分之前將所述補丁自動應(yīng)用于所述組的一部分 (750)。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,自動應(yīng)用所述補丁包括并行地將所述補丁自動應(yīng)用于所述組中的每一個內(nèi)的機器中的每一個(750)。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,還包括檢查要應(yīng)用于所述組內(nèi)的所述機器的附加補丁,以及在將所述補丁應(yīng)用于下一組之前將所述附加補丁應(yīng)用于所述組中的所述機器(750)。
全文摘要
本文描述了打補丁期間機器的高可用性。云管理器被用于對用在在線服務(wù)(諸如在線內(nèi)容管理服務(wù))內(nèi)的物理機和虛擬機進行打補丁。云管理器有助于對將軟件補丁應(yīng)用于網(wǎng)絡(luò)內(nèi)的機器(物理和虛擬)進行調(diào)度,以使得在機器正被打補丁的同時維持在線服務(wù)的可用性。將要被打補丁的機器劃分成數(shù)個組,這些組在不同時間被打補丁。一般而言,將組劃分成高可用獨立機器組,以使得當前未被打補丁的組中的一個或多個繼續(xù)提供正被打補丁的組的服務(wù)。可并行地對每個組內(nèi)的機器(物理和虛擬)進行打補丁。
文檔編號H04L29/08GK102571906SQ20111033991
公開日2012年7月11日 申請日期2011年10月19日 優(yōu)先權(quán)日2010年10月20日
發(fā)明者A·霍普曼, D·巴爾-卡斯彼, E·R·萊爾馬, M·K·溫德爾, M·盧斯安諾夫, P·西梅克, T·塞維爾米什, Z·羅森菲爾德 申請人:微軟公司