首页> 中国专利> 高可用性场服务器组的升级

高可用性场服务器组的升级

摘要

高可用性场服务器组的升级。机器管理器为在线服务控制(物理的或虚拟的)机器的部署和管理。多层的服务器组被安排在场中,每个场可以包括不同的配置。例如,可以存在被安排用于执行在线服务的操作的内容场、联合服务场和SQL场。当多个场被升级时,新的场被部署并且相关联的内容数据库被从旧的场移动到新部署的场。在升级场期间,可以由所述场继续处理请求。在升级期间,自动负载平衡所述场。当内容形式所述新的场上变为可用时,对该内容的请求可以被自动重定向到该新的场。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-05-13

    专利权的转移 IPC(主分类):H04L29/08 变更前: 变更后: 登记生效日:20150421 申请日:20111019

    专利申请权、专利权的转移

  • 2014-06-04

    授权

    授权

  • 2012-06-27

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20111019

    实质审查的生效

  • 2012-05-02

    公开

    公开

说明书

技术领域

本申请涉及对场的升级,特别是高可用性场服务器组的升级。

背景技术

在线服务包括位于web服务器上的与存储在数据库中的数据在一起的文 件。例如,可存在大量位于不同网络中的服务器,以处理针对在线服务的通信。 管理和部署安排在不同的场(farm)中的大量服务器是需要庞大运营人员队伍 的费时过程,其中该人员队伍是易受人为差错影响的。

发明内容

提供本发明内容以便以简化的形式介绍将在以下具体实施方式中进一步 描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必 要特征,也不旨在用于帮助确定所要求保护的主题的范围。

机器管理器为在线服务控制(物理的或虚拟的)机器的部署和管理。多层 的服务器组被安排在场中,每个场可以包括不同的配置。例如,可以存在被安 排用于执行在线服务的操作的内容场、联合服务场和SQL场。当多个场被升级 时,新场被部署并且相关联的内容数据库被从旧场移动到新部署的场。在升级 场期间,可以由所述场继续处理请求。在升级期间,自动负载平衡所述场。当 内容形式所述新场上变为可用时,对该内容的请求可以被自动重定向到该新 场。

附图说明

图1示出了用于管理与诸如内容管理服务之类的在线服务相关联的网络的 云管理器系统。

图2示出了包括管理器和相关联的数据库的云管理器;

图3示出了存储在数据库的行内的示例性作业记录;

图4示出了用于网络的示例系统,所述网络包括用于在线服务的前端和后 端服务器;

图5示出计算机的计算机体系结构;

图6示出了用于管理在线服务的场的部署的系统。

图7示出了将数据库从旧场移动到正在被部署的新场。

图8示出了用于部署新场(例如内容场)的处理。

图9说明了用于部署新的服务场的处理;以及

图10说明了用于部署新的数据库场的处理。

具体实施方式

现将参考其中相同的标号代表相似的元素的附图来描述各实施例。

一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程 序、组件、数据结构和其它类型的结构。也可使用其它计算机系统配置,包括 手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算 机、大型计算机等等。也可使用在其中任务由通过通信网络链接的远程处理设 备执行的分布式计算环境。在分布式计算环境中,程序模块可位于本地和远程 存储器存储设备两者中。

图1示出了用于管理与在线服务相关联的网络的云管理系统。系统100示 出了云管理器105,该云管理器105连接到并且管理可能分布在世界各地的不 同网络。网络中的每个被配置成为一个或多个承租人(tenant)(例如客户、 顾客)提供内容服务。这些网络可以寄宿在云服务内和/或内部部署的(on- premises)数据中心内。云管理器105用于部署、配置和管理这些网络。云管 理器被配置为通过可容忍间歇性网络故障的幂等的和异步的应用web服务应用 编程接口(API)150来接收请求。

如所示的,云管理器105包括工作管理器110、机器管理器115、应用程 序专用管理器120、脚本130以及诸如数据存储140(例如数据库)的中央储 存库。未包括在所示管理器之一内的功能可以驻留在云管理器的某个其他位置 处。根据一个实施例,应用程序管理器120是SharePoint承租人管理器,该管 理器包括SharePoint专用逻辑。

工作管理器110管理任务的执行,并且启用对较长时间运行的任务的调度 和重试。工作管理器110启动存储在作业队列112中的作业并且跟踪运行中的 作业。当已经流逝了预定的时间时,工作管理器110可以自动地取消任务并且 执行与该任务相关的某些进一步处理。根据一个实施例,作业队列112中的任 务由工作管理器110通过调用一个或多个脚本130来执行。例如,可以使用诸 如微软的的脚本语言来对由工作管理器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,添加新的数据库,将数据从一个机器移动 到另一个,移动承租人,改变方案等。根据一个实施例,这些脚本是微软的 脚本。也可以使用其他编程实施方式。例如,可以使用经编译的和 /或前期绑定的编程语言来实现该功能。然而,脚本是一种表达将要执行的任务 中的许多个的相当精确的语言。用诸如C#的编程语言对其等价物进行编程将常 常需要冗长得多的实施方式。脚本还被后期绑定,这意味着可以以多个版本的 底层代码库为目标,而不必不断地链接到不同的接口DLL。使用PowerShell 脚本将允许进程由云管理器105本地地启动,云管理器105进而可以启动远程 机器(即,所附连的网络之一中的物理机)上的进程。还可以使用其他技术来 启动远程机器上的进程,诸如安全Shell(SSH)等。

云管理器105正在管理的应用程序专用信息由应用程序管理器120来执 行。根据一个实施例,应用程序专用信息与微软有关。由此,应用 程序管理器120被配置为了解SharePoint、承租人、站点集合等。

每个网络可以被配置成用于承租人的专用网络和/或服务于一个以上客户 的多承租人网络。网络可以包括变化数目的物理机/虚拟机,物理机/虚拟机的 配置在部署之后也变化。一般而言,只要未超过联网极限(例如,负载平衡器 和网络交换机),网络就可以继续增长。例如,网络可以从十个服务器开始, 并且之后扩充为一百个或更多个服务器。可以给网络内的物理机分配类或类 型。例如,机器中的某些可以是计算机器(用于web前端和应用程序服务器), 而其他机器可以是与计算机器相比配备有更多存储的存储机器。根据实施例, 云管理器105用多个版本的映像文件来配置网络内的机器。根据一实施例,场 常常具有相同版本的映像文件。

根据一个实施例,在网络内由云管理器系统100通过虚拟化机器并且管理 该网络内部独立地行动的“场”来管理软件极限。每个网络可以包括一个或多 个场(例如,参见网络1)。根据一个实施例,网络被认为是经网络负载平衡 的机器的单个群集,所述机器向外部世界展示一个或多个VIP(虚拟IP)并且 可以将通信路由到网络内的任何机器。网络中的机器通常是紧耦合的,并且具 有最小等待时间(即<1ms的查验(ping)等待时间)。

场是用于对需要紧密绑定关系的应用程序进行协调的机器的基本分组。例 如,内容场可以部署在每个网络内以用于诸如Microsoft的内容管 理应用程序。一般而言,每一个场中的那组机器一起提供web服务和应用程序 服务器功能。通常,场内的机器运行相同构建的应用程序(即SharePoint)并 且共享公共的配置数据库以服务特定的承租人和站点集合。

场可以包含不同种类的虚拟机组。云管理器105在数据存储140内维护“场 目标”,该场目标是每个场的每种角色的机器的目标数目。一些角色包括内容 前端、内容中央管理、内容计时器服务、联合中央管理、联合应用服务器等。 例如,内容场是处理接入消费者请求的基本SharePoint场。联合服务场包含可 以跨场运行的诸如搜索和简档存储这样的SharePoint服务。场可以用于托管大 容量公共因特网站点。某些场可以包含一组活动目录服务器和供应端口监控程 序(Provisioning Daemon)。云管理器105自动地部署网络中的虚拟机和/或停 用网络中的虚拟机,以帮助满足所定义的目标。这些场目标可以自动地和/或手 动地来配置。例如,场目标可以响应于活动和容量需求的改变而改变。网络 场-每个网络存在一个包含可以作为整个网络的资源的容易扩展的所有VM 角色的网络场。

云管理器web服务API 150被设计为在可大规模伸缩的全局服务的上下文 中工作。该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(在线=开启)”选项,以使得在最 初构该建索引时表不被锁定。

根据一实施例,可以执行对云管理器内数据库的升级而不导致云管理器系 统停工。换言之,即使在云管理器升级期间,云管理器继续处理已接收的请求。 由此,对方案作出的改变将与之前的方案兼容。在升级云管理器所使用的web 服务器之前进行SQL方案升级。当web服务器升级时,它们可以开始使用数 据库中所启用的新特性。数据库升级被限制以使得升级中所涉及的操作是快速 和有效的。例如,可以添加表,并且可以向现有列添加新的可空列。可以在表 的结尾处添加新的列。一般而言,避免对数据库的耗时操作。例如,在存在大 量数据时,在创建时间向新添加的列添加缺省值可能是非常耗时的操作。然而, 添加可空列是非常快速的操作。如上面所讨论的,允许添加新的索引,但是在 添加新的限制条件时应当采取警告,以帮助保证方案升级不会破除现有数据。 例如,当添加限制条件时,该限制条件可以被设置为如下状态:该限制条件不 被检查并且避免对现有行和潜在的错误进行高成本的验证。旧表和未使用的列 在新版本被使用并且云管理器不访问这些表和列以后被移除。

一般而言,每个数据库中的单个行用于指示任务和/或所需状态。例如,承 租人数据库235为每个承租人包括单个行。给定的承租人可以包括所需版本 (Required Version)记录。该记录用于帮助确保该承租人被放置在运行所需版 本的场上。例如,对于要停留在SharePoint 14 SP1上的承租人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指定要执行的任务。例如,类型可以包括将要执行的脚本的名称。 例如,当任务是运行名称为“DeployVM.ps1”的脚本时,则数据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在系统400中,一个或多个后端服务器 416-419是SQL服务器,例如,来自美国华盛顿州雷蒙德市的微软公司的SQL 服务器。

WFE 410、412和414提供客户端402和404以及后端服务器416-419之 间的接口。负载平衡器408、420将请求从自客户端402和404引导到WFE 410、 412和414,以及从WFF引导到后端服务器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、可擦除可编程只读存 储器(“EPROM”)、电可擦可编程只读存储器(“EEPROM”)、闪存或其它固 态存储器技术、CD-ROM、数字多功能盘(“DVD”)或其它光存储、磁带盒、 磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机 500访问的任何其它介质。

根据各实施例,计算机500可以使用通过诸如因特网等网络18至远程计 算机的逻辑连接在联网环境中操作。计算机500可以通过连接至总线12的网 络接口单元20来连接到网络18。网络连接可以是无线的和/或有线的。网络接 口单元20也可用于连接到其它类型的网络和远程计算机系统。计算机500还 可以包括用于接收和处理来自多个其他设备的输入的输入/输出控制器22,这 些设备包括键盘、鼠标或者电子指示笔(未在图5中示出)。类似地,输入/ 输出控制器22可以为显示屏28、打印机或其它类型的输出设备提供输出。

如上面简要提到的那样,多个程序模块和数据文件可以存储在计算机500 的大容量存储设备14和RAM 9内,包括适于控制联网计算机的操作的操作系 统16,比如华盛顿州雷蒙德市的微软公司的操作系统。大容量存 储设备14和RAM 9还可以存储一个或多个程序模块。具体而言地,大容量存 储设备14和RAM 9可以存储诸如云程序26之类的执行与云系统相关的任务 的一个或多个应用程序。

图6示出了用于管理在线服务的场的部署的系统。如所示出的,系统600 示出云管理器605,包括工作管理器110、应用管理器120、机器管理器610、 机器数据库620、脚本630和图像640。

机器管理器610对跨不同网络(网络1、网络2)的特定拓扑中的大量服 务器的自动部署进行控制。尽管仅仅示出了两个网络,但是一般可以管理许多 更多的网络(例如十个、一百个、一千个、一万个等等)。云管理器605和其 组件运行,并且可以与上面所示和所描述的云管理器系统类似地来配置。机器 管理器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中。每个场内的机器的数目可以人工地配 置和/或自动地配置。例如,后台进程可以监控负载并且动态地确定场目标。机器管 理器610可以基于当前/预期的网络特性来启动机器和/或停止机器。网络内的每个场 都可以用与其他场相同数目的机器或不同数目的机器来配置。例如,一个内容场可以 包括6个机器,而另一内容场可以使用仅仅3个机器。

当新软件可用时,机器管理器610管理新软件的部署。一般而言,场/网络内的 各个机器不被升级或打补丁。代之以,机器管理器610启动由工作管理器110所管 理的工作,所述工作管理器部署包括该新软件的新的机器和场。在用新软件配置新场 以后,机器管理器610将通信量/负载移动到该新场,并且阻止通信量去往旧场。

在升级期间,新场可以被配置为更好地处理曾被引导到旧场的通信量。例 如,可以通过对场680的监控来确定:需要更多SQL场来处理负载。在从场 680到场681的升级期间,机器管理器610可以添加机器和/或从场移除机器。

映像640被配置为存储正在被使用和/或将要部署在一个或多个网络的一个或多 个机器上的虚拟硬盘(VHD)映像。根据一实施例,使用VHD文 件格式,该格式指定可以驻留在封装在单个文件内的本机主文件系统上的虚拟 机硬盘。可以使用其它格式。一般而言,VHD格式是广泛适用的,因为该格式 对与该格式一起使用的虚拟化技术、主操作系统、或者客操作系统是不可知的。 用在特定网络内的映像可以移动到全局共享645和/或网络本地的网络共享(例 如网络共享655)。将映像存储在网络共享上将节省部署映像的时间,因为减 小了网络通信时间。

也可以使用差分VHD。例如,可以仅仅部署VHD的最新版本与上一版本之间的 差异。可以将不同技术用于该差异比较。例如,可以使用远程差分压缩技术来确定该 差异并且仅仅将这些改变复制到网络共享。这允许进程加快网络内的机器的部署和更 新,因为不需要复制VHD的完全副本。还可以采用网络内的增量。增量被作为文件 发送,并且随后在本地机器/本地网络内,该文件可以用于创建完整的VHD。

根据一实施例,机器管理器610并不在机器上实际安装软件。相反,如前面所 讨论的那样,在被执行时执行完成该任务的动作的作业被放置在作业队列中。一旦映 像被安装在机器上时,机器管理器610启动机器运行。可对部署进行角色特定的定制 的0个或更多角色特定的脚本可以在虚拟机启动以后运行。这些脚本可以位于网络的 共享(例如网络共享655)、全局共享645、脚本630内或某个其他位置处。

根据一实施例,VHD一旦在机器上运行就是不可改变的。操作系统文件也可以 被锁定,使得它们不能被改变。根据一个实施例,每个场都以两个帐户中的一个 运行其服务,所述两个帐户包括应用池帐户和管理帐户。每个服务和/或应用还 可以用唯一的凭证运行。为每个场创建这些帐户并且由机器管理器610生成这 些帐户。这些帐户包括随机生成的口令。一般而言,不向人们供应场的口令。使 用应用帐户来运行与在线服务(例如SharePoint)相关的进程。根据实施例,不登 陆应用池帐户,并且没有web应用接口来访问存储这些密码的数据库。在配置 场的期间,向执行脚本的进程提供所需的密码以设置和部署机器。这些私密可 以被存储在数据库中,例如机器数据库620、存储私密的私密数据库625等等。 例如,当执行部署场的进程时,向部署场进程提供密码,使得可以配置和启动 场。在安装映像和对配置进行任何定制的期间,场不连接到在线服务,并且因 此不具有任何通信量。一旦通信量被引导到场,则机器就被锁定并且密码不能 在机器上或通过web接口被访问。当场正处理请求时,机器管理器610可以监 控机器和VHD映像以确定是否存在未经授权/未被批准的改变。如果它们是要 这样做,则机器管理器610可以部署新场以替换可能受损的场。通过这种方式, 曾被放置到旧场上的任何代码都不被复制到新近部署的场。

当升级多个场(例如内容场660、联合服务场665以及SQL场670)时, 机器管理器为要升级的每个场(例如内容场661、联合服务场662以及SQL场 671)部署一个新场。根据实施例,首先升级内容场,随后是联合服务场。

例如,当要升级内容场660时,部署新的内容场661。在供给所述机器之 后,在当前正在升级的场中的内容数据库被复制到新场。部署SQL场以便于将 内容数据库附加给它。在移动数据库之前,备份所述数据库。数据库的备份可 以在将数据库复制到新场之前的任意点上创建。在备份完成之后,可以将数据 库标记为只读并将该数据库复制到新场。在场中的数据库可以被并行或串行复 制。例如,每个数据库可以每次复制一个直到所有的数据库都迁移到新的内容 场中,或可以每次复制多于一个的数据库。根据实施例,内容场中的数据库每 次复制一个。

任何升级失败的数据库被留下并被服务在旧场上并用于进一步的故障查 找。可以在故障查找到问题之后,(对已存在的新场)执行另一序列的升级。 在这期间(在故障查找期间),用户获取对它们的(未升级的)数据的读-写访 问。

在新场上的数据库的副本被附加给新场作为读/写,并且为新场创建一个数 据库的镜像。在将请求定向到访问新场中新创建的数据库中的内容之前,在新 场上执行任意数据库升级。例如,可以升级数据库以运行最近的方案版本。还 可以修改数据库中的内容。例如,包含在新的数据库中的任意完全合格的域名 (FQDN)可以在负载平衡器处被重定向到新场。机器管理器610可以调度一个或 多个工作以执行升级。在部署内容场之后,在新场上的应用可以被连接到其他 服务。例如,在部署了新的内容场661且复制并升级了数据库之后,可以将它 连接到旧的服务(例如联合服务665),因为新的服务场666还没有被升级。 这意味着,除了提供向后兼容性挂钩(hook)的服务之外,服务代理是向后兼 容的并且能够与在它们之后的版本的服务对话。在旧场中的数据库可以在新场 成功部署之后(例如1小时、1天、7天等等)再被移除。随后,取消供给该 旧场。其他类型的场的部署以类似的方式来处理(参见进一步讨论的附图7-10)。

图7示出了将数据库从旧场移动到正在被部署的新场。作为示例的目的,而不 是限制,假设旧场710具有三个要被移动到新场720上的数据库(DB 1、DB 2和 DB3)。

状态702示出在部署了新场720之后当DB1正被复制时旧场710和新场 720的状态。在将DB 1备份到旧场710之后,DB 1被置于只读状态并且被复 制到新场720。在旧场中的数据库可以同时和/或在不同的时间被备份。在DB 1的 复制期间,负载平衡器730继续将所有的请求发送给旧场710。

状态704示出在数据库D1已经完全复制并置于服务中之后时旧场710和新场 720的状态。当数据库D1已经被复制到新场720时,获得自从备份最初被执行 起对旧场上的数据所作出的改变,并且将该改变添加到复制到新场的数据。由 于完全备份与事务备份之间的时间段是相对短的(例如几分钟),因此数据库 不可用于写入的时间段也是短的。对数据库的任意升级还可以在将请求定向到 该数据库之前执行。例如,新场中的DB 1′可以被升级到新的方案版本以处理 与旧场相比不同的操作。在对新创建的DB 1′做出任意改变/更新之后,配置负 载平衡器730以将请求定向到新场720中的DB 1′。在DB 1′开始接收请求之后, 不再使用旧场中的DB 1。当完成DB 2到新场720的复制并且DB 2’已经完成 升级进程时,负载平衡器730将DB 2的请求定向到新场720中的DB 2’。

状态706示出在所有数据库(D1、D2和D3)已经完全复制并置于服务中之后, 旧场710和新场720的状态。当成功供给并部署新场720时,来自旧场710的所 有的通信量被定向到新场720。此时,新近部署的场接收和处理之前曾被引导 到旧场的所有请求。如果在部署场的期间检测到问题,则旧场可以继续使用。 在成功部署新场720之后,可以取消供给旧场710。

图8-10说明了用于部署场的不同的过程。

当阅读对在此提供的例程的讨论时,应当理解,各实施例的逻辑操作被实 现为(1)运行于计算系统上的一系列计算机实现的动作或程序模块,和/或(2)计 算系统内互连的机器逻辑电路或电路模块。该实现是取决于实现本发明的计算 系统的性能要求来选择的。因此,所例示的并且构成此处所描述的实施例的逻 辑操作被不同地表示为操作、结构设备、动作或模块。这些操作、结构设备、 动作和模块可用软件、固件、专用数字逻辑以及它们的任何组合来实现。

图8示出了用于部署新场,例如内容场,的处理。在开始操作之后,过程 800流到操作810,其中作出要部署场的确定。这些场可以因许多不同原因而 部署。例如,可以部署一个或多个场以运行与现有场不同版本的软件,可以部 署新的网络,设备可能发生故障等等。该确定可以通过经由诸如上述web服务 API之类的API的请求来进行,和/或可以自动地确定。例如,当场的目标改变 时,可以人工地和/或自动地部署新场。

移至操作820,部署新场。根据一实施例,异步地执行机器的供应,使得 机器管理器可以继续执行其他动作。部署新场可以包括许多不同的步骤。例如, 假设具有VHD的物理机提供场的角色、执行对安装的任意定制并且启动机器。 VHD可以移动到将要使用所述VHD的网络,使得在网络内而不是跨网络地执 行复制操作。当要部署多层场时,可以以预定顺序部署每层。根据实施例,内 容场部署在联合服务场之前,而联合服务场部署在数据库(例如SQL)场之前。 场的升级的排序有助于减少场的升级的复杂度。例如,存储在服务场中的代表 内容场的数据对于所有承租人(tenant)来说是同时被迁移的。如果要首先升级 服务场,与内容相联系的服务数据可能需要在当内容从旧场移动到新内容场时 被不断迁移或刷新。首先升级场(例如内容场)还可以在存在比服务场更多的 内容场的场合中提供更好的缩放性。

移到操作830,新部署的场可以被连接到多层部署中的其他场。例如,当 部署新的内容场时,它被连接到旧的联合服务场。

流到操作840,对来自旧场的数据库进行备份。可以每次一个地备份数据 库,和/或可以并行备份数据库。备份可以在不同的时间执行。例如,当正在供 给新场中的机器时、已经供给新场中的机器之后等等。在备份过程期间,数据 库可以继续接收读/写请求。

移动到操作850,将数据库从旧场复制到新场。所升级的旧场在升级过程 期间继续接收和处理请求。数据库可以在不同的时间被复制。例如,可以每次 一个、每次两个或全部一起地等等将数据库复制到新场。数据库还可以以每承 租人基础来被复制。例如,当承租人占有超过一个的数据库时,该承租人占有 的每个数据库可以被并行复制。可以基于内容的类型来复制数据库。例如,服 务场中的数据库可以一次被全部复制,相反,SQL数据库和/或内容场数据库可 以以特定顺序被复制。在数据库复制期间,正在复制的数据库被限制加入任何 新的承租人。

转到操作860,将数据库附加给新场,并在新场上创建数据库的镜像。

移动到操作870,获得自从备份最初被执行起对旧场上的数据所作出的改 变,并且将该改变添加到复制到新场的数据。在该操作期间,旧场上的数据被 标记为只读,使得在短时间段内,不允许对旧场上的数据进行写入。由于完全 备份与事务备份之间的时间段是相对短的(例如几分钟),因此数据库不可用 于写入的时间段也是短的。

流到操作875,对数据库执行任何升级。例如,新场中的数据库可以被升 级到新的方案版本以处理与旧场相比不同的操作。如上所述,新场在升级过程 期间不接收任何请求。还可以改变/修改数据库中的其他项。

流到操作880,当新场的供应和部署成功时,将来自旧场的通信量引导到 新场。此时,新近部署的场接收和处理之前曾被引导到旧场的所有请求。如果 在部署场的期间检测到问题,则旧场可以继续使用。另外,通信量也可以重新 引导回旧场。随后该过程移至结束框并返回以处理其它动作。

移至操作890,取消供给旧场。可以立刻或在另一时间取消供给旧场。例 如,可以设置一个验证新场正确工作的时间周期。可以在取消供给的同时和/ 或在不同的时间移除所述数据库。例如,可以在一天、7天、30天等之后移除 数据库。

图9说明了用于部署新的服务场的处理。

在开始操作之后,该过程行进至在其中部署新的服务场的操作910。根据 实施例,当要部署新的内容场时,在部署所述新的内容场之后部署服务场。如 上所述,部署场通常包括假设具有VHD的物理机提供场的角色(在这种情况 中为服务),执行对安装的任意定制以及启动机器。

移至操作920,在新的内容场和新的服务场之间建立信任,以便它们更多 交流并协同工作。

流到操作930,升级在新的服务场上的服务。根据实施例,联合服务场主 持包括搜索、用户简档、受管元数据和web分析的服务。可以主持更多或更少 的服务。例如,订阅设置、安全存储服务等等。服务场还可提供具有登陆数据 库的使用登陆服务应用。

升级服务通常沿用如相对于图8所述的新场的部署。对于旧的服务场中的 每个服务,为每个服务数据库创建备份,在新的服务场中的新的服务应用与复 制自旧的服务场的每个数据库的副本一起创建,而为每个服务应用在新的内容 场中创建代理。

转换至操作940,验证服务升级。当升级失败时,使用旧的服务场。可以 做出部署新的服务场的其他尝试。新的内容场可以继续使用旧的服务直到部署 新的服务场。

移至操作950,在新的服务场和新的内容场之间建立连接,并且移除到旧 的服务场的任意连接。

流至操作960,取消供给旧的服务场。

图10说明了用于部署新的数据库场的处理。

在开始操作之后,该过程流至操作1010,在该操作部署新的数据库场。根 据实施例,在任意内容场部署和服务场部署之后部署数据库场。如上所述,部 署场通常包括假设具有VHD的物理机提供场的角色,执行对安装的任意定制 以及启动机器。根据实施例,部署SQL服务器以取代旧的SQL服务器。部署 的服务器的数目可以不同于旧场。例如,可以是相同数目的服务器、更大数目 的服务器或更小数目的服务器。

移至操作1020,对于每个正被取代的旧的SQL服务器,它被标记为正在 升级中。在升级过程期间,继续使用旧的SQL服务器,但其操作可能被限制。

流至操作1030,对于每个旧的服务器上的每个证明(witnessing)会话, 重新分配证明责任给在新部署的场中的另一个运行的服务器。

转换到操作1040,在旧的服务器上创建备份,并复制到新的服务器,每个 新的服务器执行恢复操作。

移至操作1050,从备份时开始的任意改变被结合到新的服务器上的合适的 数据库中。

流至操作1060,执行旧的服务器上的数据库的镜像的故障转移和阻断。根 据实施例,在单个时间发生一次故障转移。

转换至操作1070,在当前委托人(principal)和新的服务器之间重新建立 镜像。

移至操作1080,与新的数据库场建立不同的场之间的连接。在这点处,耦 合新的内容场、新的服务场和新的数据库场。

流至操作1090,取消供给旧的数据库场。

以上说明、示例和数据提供了对本发明的组成部分的制造和使用的全面描 述。因为可以在不背离本发明的精神和范围的情况下做出本发明的许多实施 例,所以本发明落在所附权利要求的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号