專利名稱:機器管理器服務結構的制作方法
技術領域:
本發明涉及機器管理器服務結構。
背景技術:
基于web的服務一并包括了位于web服務器上的文件和數據庫中所存儲的數據。 例如,存在大量位于不同網絡中的服務器,以處理針對該服務的通信量。管理和部署大量服務器是需要龐大運營人員隊伍的費時過程,其中該人員隊伍是易受人類差錯的。
發明內容
提供本概述以便以簡化形式介紹將在以下詳細描述中進一步描述的一些概念。本發明內容并非旨在標識所要求保護的主題的關鍵特征或必要特征,也不旨在用于幫助確定所要求保護的主題的范圍。機器管理器為在線服務控制機器的部署和管理。機器分散在場中的一個或多個網絡的范圍內,這些網絡每個都可以包括不同的配置。機器管理器被配置為人工地/自動地部署場、升級場、添加機器、移除機器、啟動機器、停止機器等等。機器管理器持續跟蹤機器的位置、網絡內的機器的角色、以及與機器相關的其他特性(例如機器的健康度)。網絡內的機器被布置在場中并且被配置為執行一個或多個角色。替代于對場中的當前處理請求的機器上的軟件進行升級,用所選盤映像在新場中配置一個或多個機器,并且然后將請求從舊場移動到新場。
圖1示出了用于管理與諸如內容管理服務之類的在線服務相關聯的網絡的云管理系統;圖2示出了包括管理器和相關聯的數據庫的云管理器;圖3示出了存儲在數據庫的行內的示例性作業記錄;圖4示出了用于網絡的示例性系統,其包括用于在線服務的前端和后端服務器;圖5示出計算機的計算機架構;圖6示出了用于控制和管理大量服務器的部署的機器管理器;以及圖7示出了用于部署場的過程。
具體實施例方式現將參考其中相同的標號代表相似的元素的附圖來描述各實施例。一般而言,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、組件、數據結構和其它類型的結構。也可使用其它計算機系統配置,包括手持式設備、多處理器系統、基于微處理器或可編程消費電子產品、小型計算機、大型計算機等等。也可使用在其中任務由通過通信網絡鏈接的遠程處理設備執行的分布式計算環境。在分布式計算環境中,程序模塊可位于本地和遠程存儲器存儲設備兩者中。圖1示出了用于管理與在線服務相關聯的網絡的云管理系統。系統100示出了云管理器105,該云管理器105連接到并且管理可能分布在世界各地的不同網絡。每個網絡都被配置為為一個或多個承租人(tenant)(例如客戶、消費者)提供內容服務。這些網絡可以在云服務內和/或內部部署的(on-premises)數據中心內來主控。云管理器105用于部署、配置和管理這些網絡。云管理器被配置為通過可容忍間歇性網絡故障的冪等的和異步的應用web服務應用編程接口(API) 150來接收請求。如所示那樣,云管理器105包括工作管理器110、機器管理器115、應用特定的管理器120、腳本130以及諸如數據存儲140 (例如數據庫)之類的中央儲存庫。未包括在所示管理器之一內的功能可以駐留在云管理器的某個其他位置處。根據一個實施例,應用管理器120是SharePoint承租人管理器,該SharePoint承租人管理器包括SharePoint特定的邏輯。工作管理器110管理任務的執行,并且使得能夠調度和重試較長時間運行的任務。工作管理器110啟動存儲在作業隊列112中的作業(job)并且跟蹤運行中的作業。當已經流逝了預定的時間時,工作管理器110可以自動地取消該任務并且執行一些與該任務相關的進一步處理。根據一個實施例,作業隊列112中的任務由工作管理器110通過調用一個或多個腳本130來執行。例如,可以使用諸如微軟的P0werShell 之類的腳本語言來對由工作管理器110執行的任務進行編程。每個腳本都可以作為新進程運行。盡管將每個腳本作為新進程來運行可能具有相當高的CPU開銷,但是該系統是可伸縮的,并且幫助為每個腳本保證清潔的環境,加上在腳本完成時進行完全的清理。機器管理器115被配置為管理網絡(例如網絡1、網絡2、網絡3)中的物理機。一般而言,機器管理器115理解網絡、物理機、虛擬機(VM)、VM映像(VHD)等等。機器管理器不必強綁定到網絡內運行的特定服務,而是在“角色”方面持續跟蹤網絡中的各個組件。 例如,可以通過API 150請求機器管理器115在網絡3上部署類型為“Foo”的具有版本 12. 34. 56. 78的VM。響應于對云管理器105的請求,機器管理器115對位于網絡3上的合適物理機進行定位,并且根據與VM的角色相關聯的VM映像來配置VM。物理機被用類型為 Foo的具有版本12. 34. 56. 78的VHD來配置,其中該VHD存儲在諸如數據存儲140之類的數據存儲內。在網絡內使用的映像也可以存儲在其他位置處,比如用于所述網絡中的一個或多個的本地數據共享中。可以運行腳本來執行VHD在物理機上的安裝以及用于執行任何部署后的配置。機器管理器115持續跟蹤每個網絡的機器配置。例如,機器管理器115可以持續跟蹤VM的角色(VM的類型)、VM的狀態(供應、運行、停止、故障)、版本以及VM是否存在于給定場(farm)中(這隱含了其網絡)。腳本130被配置為存儲將要執行以便本地地為云管理器105執行工作以及遠程地在所述網絡中的一個或多個上執行工作的腳本。腳本130中的一個或多個還可以存儲在其他位置處。例如,將要在網絡(例如網絡1、網絡2、網絡3)上執行的腳本可以存儲在該網絡的本地。這些腳本可用于許多不同目的。例如,所述腳本可以用于執行對所述網絡之中的一個或多個中的機器的配置;改變之前配置的機器的設定;添加新的VM ;添加新的數據庫; 將數據從一個機器移動到另一個;移動承租人;改變方案等等。根據一個實施例,這些腳本是微軟的PowerShell 腳本。也可以使用其他編程實施方式。例如,可以使用經編譯的編程語言和/或前期綁定的編程語言來實現該功能。然而,腳本是一種相當精確的用于表達將要執行的許多任務的語言。以諸如C#之類的編程語言對其等價物進行編程常常將需要冗長得多的實施方式。腳本還被后期綁定,這意味著,可以以多個版本的底層代碼庫為目標, 而不必不斷地鏈接到不同的接口 DLL。使用PowerShell腳本將允許進程由云管理器105本地地啟動,該云管理器105進而可以啟動遠程機器(即所附連的網絡之一中的物理機)上的進程。還可以使用其他技術來啟動遠程機器上的進程,比如安全Shell (SSH)等等。云管理器105所管理的應用特定的信息由應用管理器120來執行。根據一個實施例,應用特定的信息涉及微軟SharePoint 。因此,應用管理器120被配置為了解 SharePoint、承租人、站點集合等等。每個網絡都可以被配置成用于承租人的專用網絡和/或服務于一個以上客戶的多承租人網絡。該網絡可以包括改變數目的物理/虛擬機,其中所述物理/虛擬機的配置在部署以后也改變。一般而言,只要未超過聯網極限(例如負載平衡器和網絡交換機),網絡就可以繼續增長。例如,網絡可以從十個服務器開始,并且之后擴充為一百個或更多服務器。可以給網絡內的物理機分配類或類型。例如,這些機器中的一些可以是計算機器(用于web前端和應用服務器),并且其他機器可以是與計算機器相比配備有更多存儲的存儲機器。根據一實施例,云管理器105用多個版本的映像文件來配置網絡內的機器。根據一實施例,場常常具有相同版本的映像文件。根據一個實施例,在網絡內由云管理器100通過虛擬化所述機器并且管理該網絡內獨立地行動的“場”來管理軟件極限。每個網絡都可以包括一個或多個場(例如參見網絡1)。根據一個實施例,網絡被認為是經網絡負載平衡的機器的單個群集,其中所述機器向外部世界展示一個或多個VIP(虛擬IP)并且可以將該通信量路由到該網絡內的任何機器。 網絡中的機器一般而言是緊密耦合的,并且具有最小等待時間(即< Irns的查驗(ping)等待時間)。場是用于對需要緊密綁定關系的應用進行協調的機器的基本編組。例如,內容場可以部署在每個網絡內以用于諸如Microsoft SharePoint 之類的內容管理應用。一般而言,每個場中的那組機器一起提供web服務和應用服務器功能。通常,場內的機器運行相同構建的應用(即SharePoint)并且共享公共的配置數據庫以服務于特定承租人和站點集
I=I ο場可以包含不同種類的虛擬機組。云管理器105在數據存儲140內維護“場目標”, 該場目標是每個場的扮演每種角色的機器的目標數目。一些角色包括內容前端、內容中央管理員、內容定時器服務、聯合中央管理員、聯合應用服務器等等。例如,內容場是處理傳入的消費者請求的基本SharePoint場。聯合服務場包含可以在場的范圍內運行的諸如搜索和簡檔存儲之類的SharePoint服務。場可以用于主控大容量公共因特網站點。一些場可以包含一組活動目錄服務器和供應端口監控程序(Daemon)。云管理器105自動地部署網絡中的虛擬機和/或讓網絡中的虛擬機退役,以幫助滿足所定義的目標。這些場目標可以自動地和/或人工地來配置。例如,場目標可以響應于活動和容量需求的改變而改變。網絡場——每個網絡存在一個如下的網絡場該網絡場包含可以作為整個網絡的資源的容易擴展的所有VM角色。云管理器web服務API 150被設計為在可大規模伸縮的全球服務的上下文中工
6作。該API假定任何網絡請求都可能失敗和/或停留在傳送中。對云管理器105的調用可以被配置為冪等的。換言之,相同調用可以對云管理器105多次進行(只要參數相同) 而不改變結果。云管理器105被設計為在返回對任何給定請求的響應以前進行非常少的處理 (< 10ms, < 50ms)。云管理器105維護記錄以跟蹤當前請求。例如,云管理器105更新本地數據庫中的記錄,并且在需要的情況下在此后調度“作業”以執行更長的活動。云管理器跟蹤作為用于在網絡內部署新機器的模板的映像(比如虛擬盤映像)。 該映像引用可以存儲在諸如數據庫140之類的數據庫中和/或某個其他位置處。這些映像可以存儲在對于上面將部署該映像的網絡而言為本地的一個或多個共享數據庫中。根據一個實施例,每個映像都包括虛擬機(VM)角色類型,其指定該映像可以部署的VM的類型; 該映像應當使用的處理器的數目;將分配給該映像的RAM的數量;用于找出附近安裝點的網絡ID(使得它們不反復地通過跨數據中心鏈接被復制);以及可以被部署代碼用于訪問 VHD的共享路徑。—般而言,由云系統100所管理的網絡中的機器不是以傳統方式通過下載數據并且將該數據合并到機器上的現有軟件中來升級的。相反,機器是通過用經更新的VHD替換 VHD來更新的。例如,當場需要新版本的軟件時,部署具有安裝了該新版本的新場。當新場被部署時,承租人被從舊場移動到該新場。通過這種方式,由于升級造成的停工期被最小化,并且場中的每個機器都具有已經過測試的相同版本。當虛擬機需要升級時,該機器上的 VM可以被刪除并且被用配置為運行所期望的服務的VM替代。盡管對現有軟件的升級不是最優的,但是網絡內的許多服務器不使用原地升級的傳統升級過程。例如,活動目錄域控制器是通過在不完全替換機器上的映像的情況下升級服務器上的當前軟件而升級的。在一些實例中,云管理器也可以原地升級。圖2示出了包括管理器和相關聯的數據庫的云管理器。如所示那樣,云管理器200 包括工作管理器210、工作數據庫215、機器管理器220、機器數據庫225、承租人管理器230、 承租人數據庫235、私密數據庫245、以及web服務API 240。一般而言,在云管理系統(例如系統100)內使用的數據庫的大小被確定為實現高性能。例如,數據庫(比如工作數據庫215、機器數據庫225、承租人數據庫235以及私密數據庫245)不能超過預定義的大小限制(例如30GB、50GB、100GB等等)。根據一實施例,數據庫的大小被確定為使得其小得足以放入物理機的存儲器中。這有助于高讀取I/O性能。 數據庫的大小還可以基于對于應用程序(比如與SQL服務器交互)的性能來選擇。用在場中的數據庫的大小還可以被確定為實現高性能。例如,它們的大小可以被確定為能放入主機的存儲器中和/或被確定為使得備份操作、移動操作、復制操作、恢復操作一般在預定的時間段內執行。云管理器200將云管理器數據劃分成四個數據庫。工作數據庫215用于工作管理器。機器數據庫225用于機器管理器220。承租人數據庫235用于承租人管理器230,并且私密數據庫245用于存儲敏感信息,比如系統帳戶和口令信息、憑證、證書等等。這些數據庫可以處于相同的服務器上,或者在服務器間分割。根據一實施例,每個數據庫都以高可用性被鏡像化,并且都是SQL數據庫。云管理器200被配置為使用減小的SQL特征組來與這些數據庫交互以便有助于在數據庫的升級期間提供云管理器200的可用性。例如,嘗試避免外來密鑰或所存儲的過程。 外來密鑰可能使方案變得困難并且導致未預期的故障情況。所存儲的過程將更多應用放置在數據庫本身中。嘗試最小化與SQL服務器的通信,因為與底層操作的成本相比,往返可能是昂貴的。例如,如果到單個數據庫的所有當前SQL服務器交互都被包裝在單個往返中,則常常是效率高得多的。極少在數據庫(215,225,235)內使用限制條件。一般而言,限制條件在其有助于在沒有額外查詢的情況下提供具有正確類型的錯誤處理的簡單更新時是有益的。例如,完全合格的域名(FQDN)表具有施加在“名稱”上的限制條件,以幫助防止承租人意外地試圖主張與已經被分配給不同承租人的FQDN相同的FQDN。當添加索引時使用警告。索引通常以寫入操作的額外I/O為代價來改善讀取性能。由于數據庫內的數據主要是駐留在RAM上的,因此即使全表掃描仍然是相對快的。根據一實施例,一旦查詢模式已經穩定化并且所提出的索引可以確定性能改善,就可以添加索引。根據一實施例,如果添加索引將可能花費長時間,則“ONLINE = ON(在線=開啟)” 選項可以被指定,使得表在最初構該建索引時不被鎖定。根據一實施例,對云管理器內數據庫的更新可以在不導致云管理器系統的停工的情況下執行。換言之,即使在云管理器升級期間,云管理器仍然繼續處理所接收到的請求。 因此,對方案作出的改變將與上一方案兼容。SQL方案升級在云管理器所使用的web服務器升級以前進行。當web服務器升級時,它們可以開始使用數據庫中所啟用的新特性。數據庫升級被限制為使得升級中所涉及的操作是快速和有效的。例如,可以添加表,并且可以向現有列添加新的可空列。可以在表的結尾處添加新的列。一般而言,避免對數據庫的耗時操作。例如,在創建時間向新近添加的列添加缺省值可能在存在大量數據時是非常耗時的操作。然而,添加可空列是非常快速的操作。如上面所討論的那樣,允許添加新的索引,但是在添加新的限制條件時應當采取警告,以幫助保證方案升級不會破除現有數據。例如,當添加限制條件時,該限制條件可以被設置為如下狀態該限制條件不被檢查并且避免對現有行和潛在的錯誤進行高成本的確認。舊的表和不使用的列在新版本被使用并且云管理器不訪問這些表和列以后被移除。—般而言,每個數據庫中的單個行被用于指示任務和/或所期望的狀態。例如,承租人數據庫235為每個承租人包括單個行。給定的承租人可以包括所請求的版本記錄。該記錄被用于幫助確保該承租人被放置在運行所要求的版本的場上。例如,對于將要停留在 SharePoint 14 SPl上的承租人1而言,該承租人所要求的版本可以被設置為“ 14. 1 ”,并且包括14. 1的任何版本都將匹配并且任何其他版本(例如14. 2. xxxx)都將不匹配。承租人記錄可以包括諸如下列其他項目經授權的用戶數目、限額(例如所允許的總數據使用、每用戶數據使用等等)、時間限制等等。某個組織可能具有代表不同地理位置、組合或容量的多個承租人。根據一實施例,在沒有用戶的明確邀請(通過外聯網或其他特性)的情況下將承租人彼此隔開。根據一個實施例,每個承租人都被鎖定到一專用網絡中。承租人被保持為相對于一小組數據庫而言為本地化的。承租人要么是小的(小于將充滿一個數據庫的程度),在這種情況下,該承租人處于與其他承租人共享的恰好一個數據庫中。這意味著,共享該數據庫的所有承租人都需要同時升級。當承租人變大時,其可以被移動到其自己的專用數據庫,并且現在可以具有一個以上、但是不與其他承租人共享的數據庫。在一個或多個專用數據庫中維護大承租人將有助于減小需要在單次升級中同時升級的數據庫的數目。類似地,工作數據庫215為每個作業包括單個行。機器數據庫225可以為每個物理機、VM、場等等包括行。例如,機器管理器數據庫225可以包括版本字符串。根據一實施例,網絡內的每個VHD、場和VM都具有相關聯的版本字符串。根據一個實施例,云管理器包括簡單日志系統,該簡單日志系統可以被配置為為每個web服務調用記錄日志條目。可以實現包括如所期望的那樣少和/或那樣多的特性的日志系統。一般而言,日志系統被用于度量使用和性能剖析。根據一實施例,web服務API 240是使用ASP. net的SOAP構建的。API中的各種 web方法遵循兩種主要模式——獲取(Get)和更新(Update)。一般而言,更新方法采取數據結構作為輸入,并且返回相同的結構作為輸出。輸出結構返回數據庫中的底層對象的當前狀態,其中如果確認或其他業務邏輯改變了一些屬性或者以其他方式填充了附加的屬性 (例如記錄ID或由云管理器計算出的其他值),則該底層對象可能不同于輸入對象。這些更新方法被用于初始對象創建以及隨后的更新。換言之,對web服務API 240的調用者可以簡單地請求它們想要的配置并且它們不需要跟蹤對象是否已經存在。另外,這意味著更新是冪等的,因為相同更新調用可以進行兩次,其中相同效果僅僅發生一次。根據一示例實施例,更新方法可以包括LastUpdated(最后更新)屬性。當存在LastUpdated屬性時,云管理器200在LastUpdated的值不與數據庫中當前存儲的值匹配的情況下拒絕該更新。一些更新方法包括在第一次調用該方法以后被設置并且在該方法的其他調用以后未被設置的屬性。云管理器200被配置為避免使用回調。由于回調可能是不可靠的,因此與云管理器200交互的客戶可以在他們想要檢查更新狀況時使用web服務API來檢查對象狀況。根據一實施例,對更新方法的調用致使云管理器200將底層對象的狀態設置為“供應”,并且當更新完成時,該狀態被設置為“活動”。圖3示出了存儲在數據庫的行內的示例性作業記錄。如所示那樣,記錄300包括作業標識符302、類型304、數據306、所有者308、步驟310、最后一次運行312、期滿時間314、 下次時間316、狀態318以及狀況320。—般而言,針對所請求執行的每個任務,云管理器都在數據庫350 (例如,圖2的工作數據庫215)中創建記錄。作業標識符302用于為所請求的任務指定唯一的標識符。類型304指定要執行的任務。例如,類型可以包括將要執行的腳本的名稱。例如,當任務是運行名稱為“D印loyVM. psl"的腳本時,則數據306可以包括該標識符(例如 "-VMID 123”)。這允許將新任務類型添加到系統,而不需要對該系統的經編譯的或其他二進制部分進行任何改變。數據306用于存儲與該任務相關聯的數據。例如,數據可以被發送給其上將執行該任務的承租人、機器、網絡、VM等等。數據306還可以存儲數據庫中的值被設置成的一個或多個值。運行該任務的過程可以查看作業記錄以獲悉所期望的機器數目被設置成何值。 腳本使用數據庫中的值來執行操作。
所有者308指定過程/執行該過程的機器。例如,當云管理器機器開始執行作業時,該機器用該機器的ID來更新記錄的所有者308部分。步驟310提供對當前腳本的步驟的指示。例如,腳本可以將任務劃分成任何數目的步驟。當該過程完成該腳本的步驟時,步驟310被更新。過程還可以查看步驟310以確定在該腳本中要執行什么步驟以及避免必須重新執行之前完成的步驟。最后一次運行312提供腳本最后一次啟動的時間。每當腳本啟動時,最后一次運行時間都被更新。期滿時間314是指示該過程應當何時終止的時間。根據一實施例,期滿時間是在過程啟動以后的預定的時間量(例如5分鐘、10分鐘...)。期滿時間可以通過經由web服務API的請求過程來更新。下次時間316是指示任務下次應當何時被執行的時間。例如,過程可以在完成某步驟以后停止,并且被指示等待直到所指定的下次時間316以恢復處理。狀態318指示當前狀態,并且狀況310指示作業的狀況(例如已創建、已掛起、已恢復、執行中、已刪除)。如果數據庫中的復制行具有相同的任務類型和數據值,則它們可以在被執行以前被移除。例如,可以進行多個請求以執行存儲在數據庫的多個行中的相同任務。作業可以具有相關聯的一個或多個鎖355。如果鎖不可用,則作業將不被調度運行,直到鎖可用。這些鎖可以以許多不同的方式來配置。例如,鎖可以基于互斥、信號機等等。一般而言,互斥防止代碼被一個以上線程并發地執行,而信號機將共享資源的同時使用的數目限制為最高為最大數目。根據一實施例,鎖是表示資源的字符串。該資源可以是任何類型的資源。例如,鎖可以是場、機器、承租人等等。一般而言,鎖用于延遲一個或多個任務的執行。每個作業都可以指定其在運行以前需要的一個或多個鎖。作業可以在其操作期間的任何時間釋放鎖。當存在鎖時,作業不被調度。需要一個以上鎖的作業立刻請求被要求的所有鎖。例如,已經持有鎖的作業可以不請求附加的鎖。這樣的方案有助于防止由多個作業間的循環鎖依賴性造成的可能的死鎖情況。圖4示出了用于網絡的示例性系統400,該網絡包括用于網絡服務的前端和后端服務器。示例性系統400包括客戶端402和404、網絡406、負載平衡器408、WFE服務器410、 412,414以及后端服務器416-419。可使用更多或更少的客戶端、WFE、后端服務器、負載平衡器和網絡。附加地,由系統400中的組件所提供的一些功能可以由其他組件來執行。例如,一些負載平衡可以在WFE中執行。在示例性實施例中,客戶端402和404是諸如臺式計算機、膝上型計算機、終端計算機、個人數字助理、或蜂窩電話設備之類的計算設備。客戶端402和404可包括輸入/輸出設備、中央處理單元(“CPU”)、數據存儲設備和網絡設備。在本申請中,術語客戶端和客戶端計算機互換地使用。WFE 410,412和414可由客戶機402和404經由負載平衡器408通過網絡406訪問。如所討論的那樣,這些服務器可以在場中配置。后端服務器416對WFE 410、412和414 是可訪問的。負載平衡器408是專用網絡設備和/或一個或多個服務器計算機。負載平衡器408、420、WFE410、412和414以及后端服務器416可包括輸入/輸出設備、中央處理單元 (“CPU”)、數據存儲設備和網絡設備。在示例性實施例中,網絡406是因特網,并且客戶端402和404可以遠程地訪問WFE 410,412和414以及連接到WFE 410,412和414的資源。在示例性實施例中,系統400是在線的、基于瀏覽器的文檔協作系統。在線的、 基于瀏覽器的文檔協作系統的一個示例是來自美國華盛頓州雷蒙德市的微軟公司的 Microsoft Sharepoint 。在系統400中,一個或多個后端服務器416-419是SQL服務器,例如,來自美國華盛頓州雷蒙德市的微軟公司的SQL服務器。WFE 410、412和414提供客戶端402和404以及后端服務器416-419之間的接口。 負載平衡器408,420將請求從自客戶端402和404引導到WFE 410,412和414,以及從WFE 引導到后端服務器416-419。負載平衡器408使用諸如WFE的利用率、連接到WFE的連接數目和整體WFE性能之類的因素來確定哪個WFE服務器接收客戶端請求。類似地,負載平衡器420使用諸如后端服務器利用率、連接到服務器的連接數目和整體性能之類的因素來確定哪個后端服務器接收請求。客戶端請求的示例可以是訪問存儲在一個或多個后端服務器上的文檔;編輯存儲在后端服務器(例如416-419)上的文檔;或者將文檔存儲在后端服務器上。當負載平衡器408通過網絡406接收客戶端請求時,負載平衡器408確定WFE服務器410、412和414中的哪個接收該客戶端請求。類似地,負載平衡器420確定后端服務器416-419中的哪個從該WFE服務器接收請求。后端服務器可以被配置為存儲一個或多個承租人(例如消費者) 的數據。現在參考圖5,將描述在各實施例中利用的計算機500的說明性計算機體系結構。 圖5所示的計算機體系結構可被配置為服務器、臺式或移動計算機,并且包括中央處理單元5( “CPU”)、包括隨機存取存儲器9 ( “RAM”)和只讀存儲器("ROM") 11的系統存儲器 7、以及將存儲器耦合至中央處理單元(“CPU”)5的系統總線12。基本輸入/輸出系統存儲在ROM 11中,所述基本輸入/輸出系統包含幫助在諸如啟動期間在計算機內元件之間傳遞信息的基本例程。計算機500還包括大容量存儲設備14 以用于存儲操作系統16、應用程序10、數據存儲24、文件、以及與云系統100的執行和同云系統100的交互相關的云程序26。大容量存儲設備14通過連接至總線5的大容量存儲控制器(未示出)連接到 CPU 12。大容量存儲設備14及其相關聯的計算機可讀介質為計算機500提供非易失性的存儲。雖然此處包含的計算機可讀介質的描述針對諸如硬盤或CD-ROM驅動器等大容量存儲設備,但是計算機可讀介質可以是能夠由計算機100訪問的任何可用介質。作為示例而非限制,計算機可讀介質可包括計算機存儲介質和通信介質。計算機存儲介質包括以存儲如計算機可讀指令、數據結構、程序模塊或其它數據等信息的任何方法或技術來實現的易失性和非易失性、可移動和不可移動介質。計算機存儲介質還包括,但不限于,RAM、ROM、可擦除可編程只讀存儲器(“EPR0M”)、電可擦可編程只讀存儲器 (“EEPR0M”)、閃存或其它固態存儲器技術、CD-ROM、數字多功能盤(“DVD”)或其它光存儲、 磁帶盒、磁帶、磁盤存儲或其它磁性存儲設備、或能用于存儲所需信息且可以由計算機500 訪問的任何其它介質。根據各實施例,計算機500可以使用通過諸如因特網等網絡18至遠程計算機的邏輯連接在聯網環境中操作。計算機500可以通過連接至總線12的網絡接口單元20來連接到網絡18。網絡連接可以是無線的和/或有線的。網絡接口單元20也可用于連接到其它類型的網絡和遠程計算機系統。計算機500還可以包括用于接收和處理來自多個其他設備的輸入的輸入/輸出控制器22,這些設備包括鍵盤、鼠標或者電子指示筆(未在圖5中示出)。類似地,輸入/輸出控制器22可以為顯示屏28、打印機或其它類型的輸出設備提供輸出。如上面簡要提到的那樣,多個程序模塊和數據文件可以存儲在計算機500的大容量存儲設備14和RAM 9內,包括適于控制聯網計算機的操作的操作系統16,比如華盛頓州雷蒙德市的微軟公司的WINDOWS 操作系統。大容量存儲設備14和RAM 9還可以存儲一個或多個程序模塊。具體而言地,大容量存儲設備14和RAM 9可以存儲諸如云程序26 之類的執行與云系統相關的任務的一個或多個應用程序。圖6示出了為在線服務控制和管理大量服務器的部署的機器管理器。如所示那樣,系統600示出了包括機器管理器610的云管理器605,該機器管理器610對跨不同網絡 (網絡1,網絡2)的特定拓撲結構的大量服務器進行自動部署。盡管僅僅示出了兩個網絡, 但是一般可以管理多得多的網絡(例如十個、一百個、一千個、一萬個等等)。云管理器605 運行,并且可以與上面所示和所描述的云管理器系統類似地來配置。根據一實施例,機器管理器610被配置為管理和部署用在諸如SharePoint在線服務之類的在線內容協作服務中的物理機和虛擬機。機器管理器610可以用于為在線服務部署和管理機器。機器管理器610理解網絡的物理拓撲,并且跟蹤作為每個網絡內的成員的物理機的位置。根據一實施例,機器管理器610知道網絡內的每個機架的位置以及位于該機架內的每個機器。機器管理器610還持續跟蹤在每個機器上使用的軟件的具體版本以及安裝在每個機器上的虛擬機(VM)映像。每個VM映像都對應于不同的服務器角色。機器管理器610還被配置為為每個場內的每個機器確定角色。該確定可以手動地和/或動態地執行。例如,場可以最初被定義為包括15個物理機,其中5個位于內容場660 內,5個位于聯合服務場665中,并且5個位于SQL場670中。在在線服務的操作期間,機器管理器610可以收集與場和網絡內的機器相關的性能特性,并且基于所收集的性能特性動態地調整網絡的資源。例如,當確定內容場過載時,機器管理器610可以創建將另一機器部署在內容場內以提供附加帶寬這一作業。還可以監控機器/網絡的健康度。機器管理器 610可以替換網絡內的機器,將通信量引導到新的一組機器,和/或響應于對機器的健康度的確定執行一些其他動作。例如,如果一個或多個場停工,則機器管理器610部署新的場并且將通信量引導到新近部署的場。機器管理器610持續跟蹤作為執行服務工作的實際服務器的虛擬機,并且將該信息存儲在諸如機器數據庫620之類的數據存儲中。如所討論的那樣,每個VM都具有代表特定服務器的功能的特定角色,并且它們進一步被編組為場,這些場通常是一組一起工作的運行完全相同版本軟件的機器。根據一實施例,機器管理器610在機器數據庫620中為每個場存儲指定該場內的目標和角色的表。扮演每個角色的機器和每個場的機器的數目也存儲在機器數據庫620中。每個場內的機器的數目可以人工地配置和/或自動地配置。例如, 后臺進程可以監控負載并且動態地確定場目標。機器管理器可以基于當前/預期的網絡特性來啟動機器和/或停止機器。網絡內的每個場都可以用與其他場相同數目的機器或不同數目的機器來配置。例如,一個內容場可以包括6個機器,而另一內容場可以使用僅僅3個機器。
當新軟件可用時,機器管理器610管理新軟件的部署。一般而言,場/網絡內的各個機器不被升級或打補丁。相反,機器管理器610啟動由工作管理器(例如圖1中的工作管理器)所管理的工作,所述工作管理器部署包括該新軟件的新的機器和場。在用新軟件配置新的場以后,機器管理器610將通信量/負載移動到該新的場,并且阻止通信量去往舊的場。映像640被配置為存儲正在被使用和/或將要部署在一個或多個網絡的一個或多個機器上的虛擬硬盤(VHD)映像。根據一實施例,使用MICROSOFT VHD文件格式,該格式指定可以駐留在封裝在單個文件內的本機主文件系統上的虛擬機硬盤。一般而言,VHD格式是廣泛適用的,因為該格式對與該格式一起使用的虛擬化技術、主操作系統、或者客操作系統是不可知的。用在特定網絡內的映像可以移動到全局共享645和/或網絡本地的網絡共享(例如網絡共享655)。將映像存儲在網絡共享上將節省部署映像的時間,因為減小了網絡通信時間。也可以使用差分VHD。例如,可以僅僅部署VHD的最新版本與上一版本之間的差異。可以將不同技術用于該差異比較。例如,可以使用遠程差分壓縮技術來確定該差異并且僅僅將這些改變復制到網絡共享。這允許進程加快網絡內的機器的部署和更新,因為不需要復制VHD的完全副本。還可以采用網絡內的增量(Delta)。增量被作為文件發送,并且隨后在本地機器/本地網絡內,該文件可以用于創建完整的VHD。根據一實施例,機器管理器610并不在機器上實際安裝軟件。相反,如前面所討論的那樣,在被執行時執行完成該任務的動作的作業被放置在作業隊列中。一旦映像被安裝在機器上時,機器管理器610啟動機器運行。可對部署進行角色特定的定制的0個或更多角色特定的腳本可以在虛擬機啟動以后運行。這些腳本可以位于網絡的共享(例如網絡共享655)、全局共享645、腳本630內或某個其他位置處。根據一實施例,VHD —旦在機器上運行就是不可改變的。操作系統文件也可以被鎖定,使得它們不能被改變。每個場都以兩個帳戶中的一個運行其服務,所述兩個帳戶包括應用池帳戶和管理帳戶。為每個場創建這些帳戶并且由機器管理器610生成這些帳戶。這些帳戶包括隨機生成的口令。這些口令可以安全方式存儲在機器數據庫620中或某個其他位置處。一般而言,不向人類提供場的口令。相反,使用應用帳戶來運行與在線服務(例如 SharePoint)相關的進程。根據實施例,不登陸應用池帳戶,并且沒有web應用接口來訪問存儲這些口令的數據庫。在配置場的期間,向執行腳本的進程提供所需的口令以設置和部署機器。例如,當執行部署場的進程時,向部署場進程提供口令,使得可以配置和啟動場。在安裝映像和對配置進行任何定制的期間,場不連接到在線服務,并且因此不具有任何通信量。一旦通信量被引導到場,則機器就被鎖定并且口令不能在機器上或通過web接口被訪問。根據一實施例,在部署場時自動地生成唯一的帳戶,其中從不允許人類查看實際系統帳戶口令。當場正處理請求時,機器管理器610可以監控機器和VHD映像以確定它們是否被嘗試改變。如果它們是要這樣做,則機器管理器610可以用新近生成的系統帳戶部署新的場以替換可能受損的場。通過這種方式,曾被放置到舊的場上的任何代碼都不被復制到新近部署的場。如上面所討論的那樣,當場被(例如場680)升級時,新的場(例如場681)被供應和部署。一般而言,一旦場681已經被用所指定的VHD進行了配置并且運行,則曾被引導到
13場680的通信量現在被引導到場681。與場680相關聯的數據可以保留某個時間段,使得通信量在檢測到問題的情況下可以返回到場680 (關于場部署過程的更多細節請參見圖7和相關討論)。與場相關聯的數據庫被復制到新的場,使得數據庫不可用于寫入的時間最小 (參見圖7)。在升級期間,新的場可以被配置為更好地處理曾被引導到舊場的通信量。例如,可以通過對場680的監控來確定需要更多SQL場來處理負載。在從場680到場681的升級期間,機器管理器610可以添加機器和/或從場移除機器。現在參考圖7,將討論在用于管理和部署在線服務中的機器的過程。當閱讀對在此提供的例程的討論時,應當理解,各實施例的邏輯操作被實現為(1) 運行于計算系統上的一系列計算機實現的動作或程序模塊,和/或(2)計算系統內互連的機器邏輯電路或電路模塊。該實現是取決于實現本發明的計算系統的性能要求來選擇的。 因此,所例示的并且構成此處所描述的實施例的邏輯操作被不同地表示為操作、結構設備、 動作或模塊。這些操作、結構設備、動作和模塊可用軟件、固件、專用數字邏輯以及它們的任何組合來實現。圖7示出了用于部署場的過程。在啟動操作之后,過程700流到操作710,其中作出對部署場的確定。這些場可以因許多不同原因而部署。例如,可以部署一個或多個場以運行與現有場不同版本的軟件,可以部署新的網絡,設備可能發生故障等等。該確定可以通過經由諸如上述web服務API之類的API的請求來進行,和/或可以自動地確定。例如,當場的目標改變時,可以手動地和/或自動地部署新的場。移動到操作720,啟動機器在新場中的供應。根據一實施例,異步地執行機器的供應,使得機器管理器可以繼續執行其他動作。該供應可以包括許多不同步驟。例如,VHD可以移動將要使用所述VHD的網絡,使得在網絡內而不是跨網絡地執行復制操作。過程還將 VHD安裝在角色與VHD相匹配的機器上,執行對安裝的任何定制并且啟動所述機器。流到操作730,對來自舊場的數據進行備份。例如,正被升級的場中的數據庫被備份。該備份可以在新場中的機器被供應時執行。移動到操作740,將數據從舊場復制到新場。所升級的場在升級過程期間繼續接收和處理請求。根據一實施例,在網絡內一場一場地來復制數據。例如,內容場數據在聯合服務場數據之前并且在SQL場數據之前被復制。數據也可以并發地復制。轉移到操作750,對新場執行任何升級。例如,新場中的數據庫可以被升級以處理與舊場相比不同的操作。如上面所討論的那樣,新場在升級過程期間不接收任何請求。移動到操作760,獲得自從備份最初被執行起對舊場上的數據所作出的改變,并且將該改變添加到被復制到新場的數據。在該操作期間,舊場上的數據被標記為只讀,使得在短時間段內,不允許對舊場上的數據進行寫入。由于完全備份與事務備份之間的時間段是相對短的(例如幾分鐘),因此數據庫不可用于寫入的時間段也是短的。流到操作770,當新場的供應和部署成功時,將來自舊場的通信量引導到新場。此時,新近部署的場接收和處理之前曾被引導到舊場的所有請求。如果在部署場的期間檢測到問題,則舊場可以繼續使用。另外,通信量也可以重新引導回舊場。隨后該進程移至結束框并返回以處理其它動作。以上說明、示例和數據提供了對本發明的組成部分的制造和使用的全面描述。因為可以在不背離本發明的精神和范圍的情況下做出本發明的許多實施例,所以本發明落在所附權利要求的范圍內。
權利要求
1.一種用于管理在線服務中的服務器的方法,包括由中央服務為在線服務存儲不同網絡中的機器的配置(225),其中該配置包括所述機器中每個的位置和所述網絡中的機器的角色,該位置包括該機器的機架位置;其中所述機器被布置在每個所述網絡內的場內;其中所述角色用于確定一個或多個虛擬機以安裝所述機器,其中該配置存儲所述場中的每個的目標和所述場中的每個的角色;確定何時將新的場部署在所述網絡中的一個或多個內(710);從中央服務自動地啟動將所述新的場部署在所述網絡之一內的進程;其中部署該場包括使用虛擬硬盤(VHD)映像來供應該場內的機器上的軟件;啟動所述機器;以及將通信量引導到該新的場(720)。
2.如權利要求1所述的方法,其特征在于,為該場內的每個角色使用VHD映像(640), 其中該場內的每個機器都針對每個角色使用相同版本的VHD映像。
3.如權利要求1所述的方法,其特征在于,確定何時部署該新的場包括下列動作至少之一確定何時升級所述場中的一個或多個上的軟件;確定場何時已發生故障;以及確定何時重新配置場的配置(115)。
4.如權利要求1所述的方法,其特征在于,部署該新的場包括為舊的場備份在該新的場的相同網絡內被替換的數據,同時繼續允許對經備份的數據進行讀取和寫入(730);將經備份的數據復制到該新的場,同時繼續對之前在該舊的場中所備份的數據進行讀取和寫入;以及用自從該數據在舊的場上被備份的時間起在該舊的場上改變的任何數據來更新被復制到該新的場的數據(740)。
5.如權利要求2所述的方法,其特征在于,還包括將VHD映像從中央服務復制到包括將要安裝該VHD映像的該新的場的網絡,并且當該VHD映像的上一版本存在于該網絡上時, 則復制僅僅包括該VHD映像與該VHD映像的上一版本之間的差異的文件(740)。
6.如權利要求1所述的方法,其特征在于,通過為該場內的機器計算機器性能來自動地確定該場目標(105)。
7.一種具有計算機可執行指令的計算機可讀存儲介質,所述計算機可執行指令用于為在在線服務部署場,包括由在線內容管理服務的中央服務為在線服務存儲不同網絡中的機器的配置(225),其中該配置包括所述機器中每個的位置和所述網絡中的機器在的角色,該位置包括該機器的機架位置;其中所述機器被布置在每個所述網絡內的場內;其中所述角色用于確定一個或多個虛擬機以安裝所述機器,其中該配置存儲所述場中的每個的目標和所述場中的每個的角色;確定何時在所述網絡中的一個或多個內部署新的場(710);其中部署該新的場替換所述網絡之一內的場之一;其中確定何時部署該新的場包括下列動作至少之一確定何時升級所述場中的一個或多個上的軟件;確定場何時已發生故障;以及確定何時重新配置場的配置;從中央服務自動地啟動將該新的場部署在所述網絡之一內的進程;其中部署該場包括使用虛擬硬盤(VHD)映像的相同版本來供應該場內的機器上的軟件;啟動所述機器;以及將通信量引導到該新的場(720)。
8.如權利要求7所述的計算機可讀存儲介質,其特征在于,部署該新的場包括為舊的場備份在該新的場的相同網絡內被替換的數據庫內的數據,同時繼續允許對經備份的數據庫進行讀取和寫入;將經備份的數據庫復制到該新的場,同時繼續對之前在該舊的場中所備份的數據進行讀取和寫入;以及用自從該數據庫在舊的場上被備份的時間起在該舊的場中的數據庫上改變的任何數據來更新被復制到該新的場的數據庫(730)。
9.如權利要求7所述的計算機可讀存儲介質,其特征在于,部署該新的場包括在機器用VHD映像運行以后鎖定所述VHD映像和該網絡內的機器上的操作系統文件,使得所述VHD 映像和所述操作系統文件不可改變(610)。
10.一種用于為在線服務部署場的系統,包括包括服務器和數據庫的網絡;其中所述服務器被布置在場內,每個所述場都執行角色; 其中所述場包括內容場、聯合服務場和SQL場(100);處理器和計算機可讀存儲介質(5);存儲在所述計算機可讀介質上并在所述處理器上執行的操作環境(16);以及軟件,該軟件用于由為在線服務存儲不同網絡的場中的機器的配置(225),其中該配置包括所述機器中每個的位置和所述網絡中的機器的角色,該位置包括該機器的機架位置;其中所述角色用于確定一個或多個虛擬機以安裝所述機器,其中該配置存儲每個所述場的目標和每個所述場的角色;確定何時將新的場部署在所述網絡中的一個或多個內(710);自動地啟動將該新的場部署在所述網絡之一內的進程;其中部署該場包括使用虛擬硬盤(VHD)映像的相同版本來供應該場內的機器上的軟件;啟動所述機器;以及將通信量引導到該新的場(720)。
全文摘要
本發明涉及機器管理器服務結構。機器管理器為在線服務控制機器的部署和管理。機器管理器被配置為人工地/自動地部署場、升級場、添加機器、移除機器、啟動機器、停止機器等等。機器管理器跟蹤機器的位置、網絡內的機器的角色、以及于機器的相關的其他特性(例如機器的健康度)。替代于升級場中的當前處理請求的機器上的軟件,用所選盤映像在新場中配置一個或多個機器,并且然后將請求從舊場移動到新場。
文檔編號H04L12/24GK102523101SQ20111034010
公開日2012年6月27日 申請日期2011年10月19日 優先權日2010年10月20日
發明者A·霍普曼, E·R·萊爾馬, J·M·卡希爾, M·K·溫德爾, V·戈皮納達翰, Z·羅森菲爾德 申請人:微軟公司