专利名称:机器管理器服务结构的制作方法
技术领域:
本发明涉及机器管理器服务结构。
背景技术:
基于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·罗森菲尔德 申请人:微软公司