分布式计算系统中的可用性管理 背景技术 [0001] 分布式计算系统或云计算平台是支持对可配置计算和存储资源的共享池的网络访问的计算基础设施。分布式计算系统可以支持构建、部署和管理应用和服务。越来越多的用户和企业正在从传统的计算基础设施移向在分布式计算系统上运行其应用和服务。因此,分布式计算系统提供方面临以下挑战:支持越来越多的用户和企业共享相同的分布式计算系统资源。特别地,分布式计算系统提供方正在设计基础设施和系统以支持维护其分布式计算系统中的资源的高可用性和灾难恢复。 [0002] 传统的分布式计算系统难以支持对于虚拟机的大规模部署的可用性。分布式计算系统提供方可以提供对于可用性的保证,但目前具有有限的配置选项以高效地满足对客户的可用性保证。必须进行若干不同的考虑,诸如,如何放置副本虚拟机以避免数据丢失,如何保证最小数目的活动服务虚拟机,了解不同类型的故障及其对在其分布式计算系统上运行的应用和服务的影响。因此,可以实现全面的可用性管理系统,以改善针对分布式计算系统中的可用性管理的客户可用性供给(offering)和配置。 发明内容 [0003] 本文描述的实施例涉及用于分布式计算系统中的可用性管理的方法、系统和计算机存储介质。可用性管理系统支持可定制的、分层级的和灵活的可用性配置,以最大化分布式计算系统中的计算资源的利用,从而满足针对租户基础设施(例如,客户虚拟机集)的可用性保证。可用性管理系统包括区域内的多个可用性分区(zone)。可用性分区是针对计算构造的经限定的分区层隔离故障点,其与其他可用性分区具有低延迟连接。可用性管理系统还包括被限定在可用性分区内的多个计算集群。可用性管理系统对与多个计算集群相关联的多个集群租户进行实例化,其中集群租户是计算集群的一部分的经限定实例。集群租户被分配给用于可用性隔离层(例如,故障层或更新层)的虚拟机集,该可用性隔离层限定针对计算构造的隔离故障点。具有多个虚拟机实例的虚拟机集基于用于可用性的、租户限定的可用性参数而被分配给跨可用性分区或在单个可用性分区内的集群租户。 [0004] 在操作中,可用性管理系统的可用性配置接口支持接收可用性参数,其被用来生成可用性简档。可用性简档包括与将租户的虚拟机集分配(和解除分配)到多个可用性分区相关联的可用性参数(例如,跨越多个可用性分区或非跨越-被限制于单个可用性分区,重新平衡,故障域、更新域、可用性分区的数目等)。 [0005] 可用性管理系统还包括可用性管理器。可用性管理器被配置为:基于可用性简档,使用分配方案跨多个可用性分区分配虚拟机集。分配方案可以是虚拟机集跨越可用性分区分配方案,以用于执行评估以确定用于分配虚拟机集的分配配置——虚拟机实例的布置,该分配配置跨至少两个可用性分区而被限定。当分配配置满足可用性简档的可用性参数时,分配方案选择用于分配虚拟机集的分配配置。备选地,分配方案可以是虚拟机集非跨越可用性分区分配方案,以用于执行评估以确定用于分配虚拟机集的分配配置,该分配配置仅针对单个可用性分区而被限定并且在计算集群内。当分配配置满足可用性简档的可用性参数时,分配方案选择用于分配虚拟机集的分配配置。两种情况下的分配配置都可以基于计算集群的集群租户而被限定。有利地,可用性管理系统还支持扩展(scale out)、缩减(scale in)和重新平衡操作,以用于将虚拟机集的虚拟机实例分配、解除分配和重新定位到跨可用性分区的计算集群,同时维护可用性服务级别协议或保证并且提供可定制的、分层级的和灵活的可用性配置。 [0006] 提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在单独使用以帮助确定所要求保护的主题的范围。 附图说明 [0007] 下面参考附图详细描述本发明,其中: [0008] 图1是根据本文描述的实施例的示例性分布式计算系统和可用性管理系统的框图; [0009] 图2是根据本文描述的实施例的示例性分布式计算系统和可用性管理系统的框图; [0010] 图3A和图3B图示了根据本文描述的实施例的使用可用性管理系统的示例性扩展操作结果; [0011] 图4A和图4B图示了根据本文描述的实施例的使用可用性管理系统的示例性缩减操作结果; [0012] 图5是示出根据本文描述的实施例的用于提供可用性管理系统的示例性方法的流程图; [0013] 图6是示出根据本文描述的实施例的用于提供可用性管理系统的示例性方法的流程图; [0014] 图7是示出根据本文描述的实施例的用于提供可用性管理系统的示例性方法的流程图; [0015] 图8是示出根据本文描述的实施例的用于提供可用性管理系统的示例性方法的流程图; [0016] 图9是示出根据本文描述的实施例的用于提供可用性管理系统的示例性方法的流程图; [0017] 图10是示出根据本文描述的实施例的用于提供可用性管理系统的示例性方法的流程图; [0018] 图11是示出根据本文描述的实施例的用于提供可用性管理系统的示例性方法的流程图; [0019] 图12是适用于在实现本文描述的实施例中使用的示例性计算环境的框图;以及[0020] 图13是适用于在实现本文描述的实施例中使用的示例性分布式计算系统环境的框图。 具体实施方式 [0021] 分布式计算系统可以支持构建、部署和管理应用和服务。越来越多的用户和企业正在从传统的计算基础设施移向在分布式计算系统上运行其应用和服务。因此,分布式计算系统提供方面临以下挑战:支持越来越多的用户和企业共享相同的分布式计算系统资源。特别地,分布式计算系统提供方正在设计基础设施和系统以支持维护其分布式计算系统中的资源的高可用性和灾难恢复。传统的分布式计算系统难以支持大规模部署虚拟机的可用性。分布式计算系统提供方可以提供对于可用性的保证,但目前具有有限的配置选项以高效地满足对客户的保证。必须进行若干不同的考虑,诸如,如何放置副本虚拟机以避免数据丢失,如何保证最小数目的活动服务虚拟机,了解不同类型的故障及其对在其分布式计算系统上运行的应用和服务的影响。因此,可以实现全面的可用性管理系统,以改善针对分布式计算系统中的可用性管理的客户可用性供给和配置。 [0022] 本文描述的实施例涉及用于分布式计算系统中的可用性管理的方法、系统和计算机存储介质。可用性管理系统支持可定制的、分层级的和灵活的可用性配置,以最大化分布式计算系统中的计算资源的利用,从而满足对于租户基础设施(例如,客户虚拟机集)的可用性保证。可用性管理系统包括区域内的多个可用性分区。可用性分区是针对计算构造的经限定的分区层隔离故障点,其与其他可用性分区具有低延迟连接。可用性管理系统还包括被限定在可用性分区内的多个计算集群。可用性管理系统实例化与多个计算集群相关联的多个集群租户,其中集群租户是计算集群的一部分的经限定实例。如本文所使用的,集群租户区别于分布式计算系统提供方的租户(即,客户)。集群租户被分配给用于可用性隔离层(tier)(例如,故障层或更新层)的虚拟机集,该可用性隔离层限定针对计算构造的隔离故障点。基于租户限定的针对可用性的可用性参数,具有多个虚拟机实例的虚拟机集被分配给跨可用性分区的、或在单个可用性分区内的集群租户。 [0023] 在操作中,可用性管理系统的可用性配置接口支持从租户接收可用性参数,其被用来生成可用性简档。可用性简档包括可用性参数(例如,跨越或非跨越多个可用性分区,重新平衡可用性分区之间的虚拟机实例,故障域、更新域、可用性分区的数目等),该可用性参数与向多个可用性分区分配、解除分配和重新分配虚拟机集的机器实例相关联。 [0024] 可用性配置接口还支持附加的接口功能性。可用性配置接口有助于将基于可用性参数生成的可用性简档与虚拟机集相关联。可用性配置接口还可以被配置为经由可用性配置接口特定地暴露映射到经物理限定的可用性分区的、经逻辑限定的可用性分区。例如,单个经逻辑限定的可用性分区可以被映射到多个经物理限定的可用性分区,或者多个经逻辑限定的可用性分区可以被映射到单个经物理限定的可用性分区。经逻辑限定的可用性分区将虚拟机集到经物理限定的可用性分区的分配进行抽象。 [0025] 经逻辑限定的可用性分区允许用于分配虚拟机集的、与子保证(sub-guarantee)相关联的软分配。在此上下文中,经逻辑限定的可用性分区被不均匀地映射到较少数目的经物理限定的可用性分区。特别地,与较高保证相关联的实现模板或软件逻辑用第一经逻辑限定的可用性分区集被逻辑地利用,但用较小的第二经物理限定的可用性分区集被物理地实现。尽管如此,基于经逻辑限定的可用性分区到经物理限定的可用性分区的不均匀映射,虚拟机集的分配满足租户所同意的子保证。可用性配置还可以支持查询和视觉地表示基于经逻辑限定的可用性分区的租户基础设施,该经逻辑限定的可用性分区被映射到经物理限定的可用性分区。 [0026] 可用性管理系统包括可用性管理器。可用性管理器被配置为:基于可用性简档,使用分配方案跨多个可用性分区分配虚拟机集。分配方案可以是虚拟机集跨越可用性分区分配方案,其用于执行评估以确定跨至少两个可用性分区而被限定以分配虚拟机集的分配配置。当分配配置满足可用性简档的可用性参数时,分配方案选择该分配配置以用于分配虚拟机集。备选地,分配方案可以是虚拟机集非跨越可用性分区分配方案,其用于执行评估以确定针对单个可用性分区被限定且在计算集群内以分配虚拟机集的分配配置。当分配配置满足可用性简档的可用性参数时,分配方案选择该分配配置以用于分配虚拟机集。在这两种情况下,都可以基于计算集群的集群租户集来限定分配配置。 [0027] 如上文所指出的,可以预期,可以基于虚拟机集非跨越可用性分区分配方案来分配虚拟机集。因此,虚拟机规模集限于单个可用性分区。可以将虚拟机集指派给多个集群租户或单个集群租户。可用性简档可用性参数可以指示应该将虚拟机集分配给多个集群租户还是单个集群租户。将虚拟机集分配给单个集群租户支持与故障域和更新域相关联的精确子分区(例如,故障层或更新层)保证。例如,对于5个故障域,客户可以得到严格的保证:一次只有一个故障域中的虚拟机实例可能由于硬件故障而失灵(down)。这导致20%的虚拟机实例失灵,但客户准确地知道虚拟机实例中的哪20%是失灵的。相反地,将虚拟机集分配给多个集群租户提供不那么精确的可用性保证。例如,对于每个集群租户的故障域,客户可以得到80%的可用性保证,其中20%的虚拟机实例由于故障域中的硬件故障而失灵;然而,客户不知道跨多个集群租户的哪些特定虚拟机实例是失灵的。 [0028] 在一个实施例中,分配方案可以具体确定针对在至少两个可用性分区中、或在单个可用性分区内的虚拟机集的不同分配配置的分配配置分数,使得虚拟机集的分配基于分配配置分数。例如,可以将针对不同分配配置的分配配置分数与被用作虚拟机集的分配配置的、与最佳分配配置分数相关联的分配配置进行比较。可以基于以下各项来确定分配配置分数:集群租户的当前虚拟机实例计数、要被分配的剩余虚拟机实例计数以及集群租户的最大支持虚拟机计数。通过本文描述的实施例,预期了以下各项的其他变型和组合:评估针对不同分配配置的分配配置分数以及基于分配配置分数选择分配配置。 [0029] 可用性管理系统还支持用于将虚拟机集分配给计算集群的扩展、缩减和重新平衡操作。在操作中,可用性管理器具体地执行用于对虚拟机集进行分配和解除分配的扩展、缩减和重新平衡操作。满足可用性简档的可用性参数的分配配置被确定;分配配置被用于分配虚拟机集。可以使用优化方案来执行扩展、缩减和重新平衡操作,该优化方案最大化操作的执行和分布式系统资源的利用。还可以基于管理员限定的和/或租户限定的配置来实现操作。在这方面,基于可用性管理系统中的活动可用性配置选择来执行操作。因此,可以实现全面的可用性管理系统,以改善针对分布式计算系统中的可用性管理的客户可用性供给和配置。 [0030] 在整个说明书中使用了各种术语。尽管在整个说明书中提供了关于各种术语的更多细节,但是下面包括对一些术语的一般定义,以提供对本文公开的想法的更清楚的理解: [0031] 区域是具有用于提供分布式计算系统的计算基础设施的经限定地理位置。分布式计算系统提供方可以实现多个互连的(例如,配对的)或独立的区域,以提供具有高可用性和冗余度的、并且还与使用该计算基础设施的客户紧密邻近的计算基础设施。区域通常可以不彼此相关联,而是基于所使用的物理资源的地理位置、经由分布式计算系统提供方而被独立地供给。 [0032] 区域可以包括多个可用性分区,其中可用性分区是指隔离故障点(例如,计划外的事件或计划的维护)。基于分离在可用性分区之间被使用的若干子系统(例如,网络、电力、冷却等),可用性分区针对故障而被隔离。可用性分区是彼此接近以支持低延迟连接的计算构造。特别地,计算资源可以在可用性分区之间通信或迁移,以在不同场景中执行操作。 [0033] 可用性分区包括连接的计算机(例如,节点)的计算集群,其被视为单个系统。计算集群可以由集群管理器管理,因为集群管理器供应、取消供应,监测和执行针对计算集群中的计算资源的操作。计算集群可以支持作为虚拟机实例的逻辑分组的虚拟机集(例如,可用性集或虚拟机集规模集)。可用性集可以具体是指被指派给单个集群租户(例如,1:1关系)的虚拟机实例集,并且虚拟机规模集可以是指被指派给多个集群租户的虚拟机实例集。在此上下文中,可用性集可以是虚拟机规模集的子集。逻辑分组可以被保护免于硬件故障,并且逻辑分组允许基于故障域和更新域进行更新。故障域是共享公共资源的底层硬件的逻辑群组,并且更新域是可以同时经历维护或被重启的底层硬件的逻辑群组。基于计算集群的实例(即,集群租户),虚拟机实例的逻辑分组被指派给计算集群的各部分。 [0034] 参考图1,可以参考示例性分布式计算系统环境100来讨论本公开的实施例,该示例性分布式计算系统环境100是用于实现可用性管理系统110的本文描述的功能性的操作环境。可用性管理系统110包括与区域B和区域C相关联的区域A。可用性管理系统110还包括可用性分区(例如,可用性分区120、可用性分区130和可用性分区140)。参考可用性分区 120,示例性可用性分区即可用性分区120包括计算集群(例如,计算集群120A和计算集群 120B)。计算集群可以基于对应的集群管理器(例如,结构控制器)(未示出)来操作。可用性管理系统110的组件可以经由网络(未示出)彼此通信,该网络可以包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。这种联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。 [0035] 图2图示了可用性管理系统200的框图。图2包括图1中所示出和讨论的类似组件,以及支持可用性管理系统200的功能性的附加组件。图2包括客户端设备210、可用性配置接口220、可用性管理器230、可用性分区240和可用性分区250。图2还包括具有计算集群260的可用性分区240,计算集群260包括集群管理器262、集群租户264和集群租户266。可用性分区250具有计算集群270和计算集群280,其分别相应地具有集群管理器272、集群租户274,以及集群管理器282、集群租户284和集群租户286。通过组合,如本文中更详细地描述的,可用性管理系统的组件支持可用性管理系统200的功能性。 [0036] 本文使用的系统是指任何设备、过程或服务或其组合。可以使用诸如硬件、软件、固件、专用设备或其任何组合的组件来实现系统。系统可以被集成到单个设备中,或者其可以被分布在多个设备上。系统的各种组件可以是共同定位的或者分布式的。该系统可以由其他系统及其组件形成。应该理解,本文描述的这个布置和其他布置仅作为示例而被阐述。 [0037] 在标识了分布式计算环境的各种组件之后,注意,可以采用任何数目的组件来实现本公开范围内的期望功能性。为清楚起见,图1和图2的各种组件用线条示出。此外,尽管图1和图2的一些组件被描绘为单个组件,但是该描述在本质上和数目上是示例性的,并且不应被解释为限制本公开的所有实现。可以基于上面列出的组件的功能性和特征来进一步描述可用性管理系统200功能性。 [0038] 除了所示出的那些布置和元件(例如,机器、接口、功能、顺序和功能分组等)之外或代替所示出的那些布置和元件,可以使用其他布置和元件,并且可以完全省略一些元件。 此外,本文描述的许多元件是功能实体,其可以被实现为分立的或分布式组件或者与其他组件相结合,并且可以以任何合适的组合和位置而被实现。本文描述的由一个或多个实体执行的各种功能可以由硬件、固件和/或软件执行。例如,各种功能可以由执行被存储在存储器中的指令的处理器来执行。 [0039] 继续参考图2,可用性配置接口220通常可以是指与可用性管理系统200的交互点。 可用性配置接口220支持用于可用性管理系统200的软件和硬件之间的信息和配置选择的交换。特别地,可用性配置接口220可以支持从分布式计算系统的租户接收用于生成可用性简档的可用性参数。客户端设备210可以支持访问可用性配置接口220以进行对可用性参数的选择。客户端设备可以是参考图12描述的任何类型的计算设备。可用性参数是可用性管理系统200中被用来管理租户基础设施(例如,虚拟机集)的设置。可用性参数可以由可用性管理系统200的管理员标识,以向租户提供在配置租户基础设施的可用性方面的灵活性。根据管理员的配置,可用性参数可以是固定的或可改变的,并且可用性参数还可以包括由管理员专门配置但不是由租户选择的附加参数。租户被允许定制某些可用性配置。 [0040] 租户选择的可用性参数被用来生成可以与虚拟机集相关联的可用性简档,以用于分配虚拟机集。如本文所使用的,分布式计算系统提供方的租户(即,客户)区别于集群租户(即,用于虚拟机实例的底层分组的计算集群的一部分的经限定实例)。例如,租户创建要被分配在分布式计算系统中的虚拟机集,并且集群租户与故障域和更新域相关联。可用性参数可以包括选择虚拟机集应该跨可用性分区是跨越的还是非跨越的。租户还可以选择:基于所限定的触发,应该跨可用性分区自动地还是通过手动干预地、重新平衡还是不重新平衡虚拟机集。可用性参数还可以包括选择用于分配虚拟机集的可用性隔离层(即,区域层、分区层、故障层和更新层)。可用性隔离层可以是限定故障隔离或操作隔离的层,使得虚拟机集保持高可用性和冗余性。 [0041] 在此上下文中,租户对其不同的虚拟机集的可用性具有可定制的、分层级的、灵活的和粒度的实现。例如,可用性参数可以支持租户仅选择多个故障域,或者选择故障域和更新域,选择一个可用性分区或多个可用性分区。可以将不同的可用性参数(即,分配方案和一个或多个可用性隔离层)指派给不同类型的虚拟机集以实现某些可用性目标。基于确定满足可用性参数的、可用性分区中的分配配置,可以将不同类型的虚拟机集相应地指派给计算集群,其中分配配置指示分布式计算系统内的虚拟机实例的布置(即,集群租户、计算集群和可用性分区)。本文描述的实施例预期了可用性参数的其他变型和组合。 [0042] 可用性配置接口220可以支持引起可用性简档的生成。可用性参数被用来生成可以与虚拟机集相关联的可用性简档。还可以使用可用性配置接口来执行限定虚拟机集并将虚拟机集与可用性简档相关联。 [0043] 可用性配置接口220可以向租户(例如,经由客户端设备210)暴露经逻辑限定的可用性分区,该经逻辑限定的可用性分区被映射到经物理限定的可用性分区。经逻辑限定的可用性分区将虚拟机集到经物理限定的可用性分区的分配进行抽象。逻辑到物理的映射允许在将虚拟机集分配给可用性分区方面的灵活性。例如,单个数据中心可以与多个可用性分区相关联,或者多个数据中心可以限定一个可用性分区。限定可用性分区的物理计算构造可以从租户中被抽象,使得租户基于经逻辑限定的可用性分区来查看其基础设施。 [0044] 经逻辑限定的可用性分区还允许可用性配置接口220提供针对软分配的可用性参数,该软分配与用于分配虚拟机集的子保证相关联。在此上下文中,经逻辑限定的可用性分区被不均匀地映射到较少数目的经物理限定的可用性分区。特别地,用于实现可用性管理系统的底层机制(例如,软件逻辑和模板)可以与用于第一物理数目的可用性分区的第一可用性保证集相关联。但是,当存在没有足够物理可用性分区的位置时,无法满足第一可用性保证集。为了利用相同的软件逻辑和模板,可以提供具有子保证的软分配作为用于租户的备选可用性配置。在操作中,用较小的物理可用性分区集来实现逻辑可用性分区。尽管如此,基于经逻辑限定的可用性分区到经物理限定的可用性分区的不均匀映射,虚拟机集的分配满足了租户所同意的子保证。预期的是,通过本文描述的实施例,可以预期经逻辑限定的可用性分区和经物理限定的可用性分区之间的映射的其他变型和组合。例如,单个经逻辑限定的可用性分区可以被映射到多个经物理限定的可用性分区,或者多个经逻辑限定的可用性分区可以被映射到单个经物理限定的可用性分区。 [0045] 可用性配置接口220还可以支持向租户提供关于租户的基础设施(例如,虚拟机集)的信息。可用性配置接口220可以支持查询分布式计算系统中的虚拟机集及其对应的可用性设置(例如,故障域、更新域、计算集群、可用性分区等)和提供对其的视觉表示。例如,租户可以经由可用性配置接口220查询特定虚拟机集的位置,以及可以在其内提供该虚拟机集的虚拟机的可用性集域和可用性分区。可以基于经逻辑限定的可用性分区来视觉地表示虚拟机集,该经逻辑限定的可用性分区被映射到经物理限定的可用性分区。视觉表示可以包括基于与计算集群、可用性分区和虚拟机集相关联的标识符的图形表示或基于文本的表示。 [0046] 转向可用性管理系统200的可用性管理器230,可用性管理器230操作以将虚拟机集分配给计算集群(例如,计算集群260、计算集群270和计算集群280)。如本文所使用的,除非另有说明,否则分配还可以进一步意味着解除分配。可用性管理器230可以以分布式的方式来实现,并且与集群管理器(例如,可用性管理器服务或客户端-未示出)一起操作,以将虚拟机集分配给计算集群。如本文所讨论的,在集群管理器处执行的操作可以经由可用性管理器、或在基于可用性管理器服务或客户端来操作的集群管理器处被启动。可用性管理器230还支持用于将虚拟机集分配给跨可用性分区的计算集群的扩展、缩减和重新平衡操作。 [0047] 可用性配置可以基于严格的物理故障域和更新域语义。例如,将虚拟机集分配到分布式计算系统的计算集群中可以随之保证将虚拟机集分散到与计算集群相关联的、不同的故障域和更新域中。故障域(FD)本质上可以是使用相同子系统(如网络、电力、冷却等)的服务器机架。因此,例如,在相同的虚拟机集中具有2个虚拟机实例意味着可用性管理器230将它们供应到2个不同的机架中,使得例如如果网络或电力发生故障,则仅一个虚拟机实例将被影响。对于某些类别的网络或电力故障,仅一个虚拟机实例将被影响。但是,当涉及一个可用性分区与另一可用性分区相比对网络或电力故障的复原性有多大时,故障域的可用性保证弱于可用性分区的可用性保证。 [0048] 参考更新域,可能需要更新应用,或者运行VM的主机可能需要更新。可用性管理器 230支持执行更新,而无需使虚拟机实例支持的服务离线。更新域可以包括有目的的举动以关闭虚拟机实例,使得服务不会因更新而离线。尽管如此,严格基于个体计算集群及其对应的故障域和更新域而完成的虚拟机的分配可能没有充分利用分布式计算系统的资源容量,其中在区域的其他计算集群中存在更多的资源容量。 [0049] 通过本文描述的实施例,可用性管理器230可以通过跨计算构造的不同可用性隔离层(例如,故障域、更新域和可用性分区)分布虚拟机集,来支持百分比可用性。在高级别处,可以基于租户限定的可用性参数将用于租户的虚拟机集分配给分布式计算系统,租户限定的可用性参数允许在分区层、故障层和更新层隔离层处跨越的虚拟机集或非跨越的虚拟机集,以满足租户可用性目标。分配虚拟机实例可以具体地基于针对虚拟机实例、跨不同可用性分区中的若干计算集群来实例化集群租户。例如,可用性管理系统200可以被配置为允许针对虚拟机集的每个计算集群一个或多个集群租户。可用性管理器230还在扩展和缩减时将虚拟机集分配给计算集群和可用性分区。有利地,可用性管理系统200支持基于将虚拟机实例跨越在跨计算集群和可用性分区的虚拟机集中来满足可用性隔离层参数,以更好地利用分布式计算系统资源容量。特别地,跨越多个集群租户和计算集群的虚拟机集构建在每个集群租户的故障层和升级层处所提供的可用性保证之上,以供给基于整体百分比的保证。这进一步支持具有灵活的高可用性和灾难恢复保证的、针对租户的大规模虚拟机部署。 [0050] 如所讨论的,可用性管理系统200可以支持可用性配置接口220,其允许选择包括一定数目的故障域和更新域的可用性参数。尽管如此,在一个实施例中,更新域(UD)/故障域(FD)(“UD/FD”)计数是固定的(5UD/3FD)。特别地,固定的UD/FD配置可以用于虚拟机集(例如,可用性集),并且具体地用于与虚拟机集相关联的集群租户。可用性管理器230可以操作以跨计算集群和可用性分区、用固定的UD/FD来实例化集群租户。还可以基于底层物理硬件来逻辑限定可用性隔离层。在此上下文中,可以基于跨两个或更多个可用性分区的底层物理硬件来满足用于可用性隔离层的可用性参数。作为示例,可以使用每个可用性分区中的3个逻辑FD和5个逻辑UD以及基于底层物理硬件跨可用性分区的多个更多的FD和UD,来支持虚拟机集。有利地,虚拟机集可以跨可用性分区被均匀分布,以满足基于经逻辑或经物理限定的隔离计算构造的可用性参数,如本文中参考示例性算法所讨论的。 [0051] 作为示例,在可用性分区内,虚拟机集的虚拟机实例被分配给计算集群。在可用性分区中,虚拟机实例被分配给不同的计算集群或相同的计算集群内的多个集群租户。每个集群租户可以被配置为主存预限定的最大数目(例如,100)的虚拟机实例以支持计算集群的容量限制。预期的是,当执行扩展操作时,由于计算集群容量,现有集群租户可能不会被分配虚拟机实例。新的集群租户可以被实例化,以在具有容量的不同计算集群上分配虚拟机实例。在每个集群租户内,虚拟机实例可以进一步跨故障隔离构造(例如,“故障域”(FD)或“故障域:更新域”FD:UD)被均匀地分布。可用性管理器230还可以支持在基于扩展和缩减操作的、虚拟机集的分配和解除分配期间的可用性管理。 [0052] 参考扩展操作,示例性算法可以包括可用性管理器230跨由租户提供的可用性分区而均等地(或基本上均等地)分布虚拟机实例。基本上均等可以是指具有奇数数目的虚拟机实例的情形,因此,虚拟机实例被尽可能均匀地分布。可用性管理系统200还可以被配置为最初将虚拟机实例添加到具有最少数目的虚拟机实例的可用性分区。在可用性分区中的虚拟机实例计数相同(即,平局)的情形下,则可以通过任何其他预限定方法(包括随机选择)来挑选可用性分区。为简单起见,在此详细讨论中,在打破平局情形下使用随机选择的方法;然而,通过本文描述的实施例,预期了用于在打破平局情形下进行选择的其他预限定方法。 [0053] 在可用性分区内,可用性管理器230被配置为将虚拟机实例填充到与虚拟机集相关联的现有集群租户。例如,集群租户可以被配置为具有最多100个虚拟机实例 (MaxVMsPerCT)。如果由于对应的计算集群达到计算集群的最大容量而不可能扩展现有集群租户,则可用性管理器可以将虚拟机实例分配给不同计算集群上的可用性集的集群租户。如上文所讨论的,当虚拟机实例变得不均匀分布时,可用性管理器230还负责限制集群租户中的虚拟机实例的分段的影响。可用性管理器230可以基于阈值数目的虚拟机实例来停止实例化集群租户。这将消除虚拟机实例的一些未预期的分配配置。 [0054] 如图3A中所描绘的,图3A图示了通过故障域和更新域的扩展操作的结果。图3A包括可用性分区310和可用性分区320。可用性分区310包括计算集群310A和计算集群310B。如图所示,可用性分区包括在计算集群中的集群租户内的、水平构造的UD和垂直构造的FD。相应地,可用性分区310还包括具有5UD和3FD的集群租户330和具有5UD和3FD的集群租户350。 可用性分区320包括计算集群320A,其中集群租户340具有5UD和3FD。租户虚拟机集具有31个虚拟机实例,其必须被扩展到40个虚拟机实例。VMX标示在执行扩展操作之前现有的虚拟机实例,VMY是在执行扩展操作之后被分配给计算集群的虚拟机实例。 [0055] 在执行扩展操作之前,31个虚拟机实例的虚拟机集分布在2个可用性分区——可用性分区310和可用性分区320上。16个虚拟机实例位于可用性分区310中,并且15个虚拟机位于可用性分区320中。在执行扩展操作之后,4个虚拟机实例被分配给可用性分区310,并且5个虚拟机被分配给可用性分区320。在扩展之后,每个可用性分区都有20个虚拟机。 [0056] 在扩展操作期间,确定计算集群310A达到最大容量,因此,然后在可用性分区310中创建新的计算集群310B,并且然后采取动作将4个虚拟机实例分配给计算集群310B中的集群租户350,并且跨故障域和更新域分布。在可用性分区320中,计算集群320A仍具有用于集群租户340的容量,因此采取动作将5个虚拟机实例分配给集群租户340,并且跨故障域和更新域均匀地分布。 [0057] 参考图3B,图3B图示了根据本文描述的实施例的经扩展的虚拟机集。特别地,已经针对合并的更新域和故障域配置执行了扩展操作。可用性分区仅包括计算集群中的集群租户内的垂直构造的FD。如图所示,虚拟机集已从31个虚拟机实例扩展到40个虚拟机实例。 VMX标示在扩展之前已分配的虚拟机实例,并且VMY标示从扩展之后被分配以扩展虚拟机集的虚拟机实例。 [0058] 在扩展虚拟机集之前,虚拟机集被分配给2个可用性分区——可用性分区310和可用性分区320。16个虚拟机被分配给可用性分区310,并且15个虚拟机实例被分配给可用性分区320。在扩展虚拟机集之后,4个虚拟机实例被分配给可用性分区310,并且5个虚拟机实例被分配给可用性分区320。在执行扩展操作之后,现在每个可用性分区具有20个虚拟机。 [0059] 在扩展操作期间,确定计算集群310A达到最大容量并且创建具有集群租户350的新的计算集群310B。采取动作将4个虚拟机分配给计算集群310B中的集群租户350并且跨故障域分布。在可用性分区320中,计算集群320A仍具有容量,因此,采取动作以将另外5个虚拟机实例分配给计算集群320A的集群租户340并且跨故障域分布。 [0060] 参考缩减操作,示例性算法可以包括可用性管理器230支持执行缩减操作,以删除跨可用性分区和计算集群的集群租户(CT)分布的虚拟机实例。可用性管理器230可以首先确定要从每个可用性分区被删除的虚拟机实例计数。可用性管理器230将从包含大多数虚拟机实例的对应可用性分区中删除虚拟机实例。如果虚拟机实例计数在所有可用性分区中相同,则可以使用包括随机选择的预限定方法来选择可用性分区,直到虚拟机计数等于由租户指示的虚拟机实例计数。为简单起见,在详细讨论中,在打破平局情形下使用随机选择的方法;然而,通过本文描述的实施例,预期了用于在打破平局情形下进行选择的其他预限定方法。 [0061] 在操作中,对于每个可用性分区,针对每个CT:FD:UD对确定虚拟机实例计数。从具有最大虚拟机实例计数的CT:FD:UD对中移除虚拟机实例。在CT:FD:UD对内部,将移除具有最大实例ID的虚拟机实例。如果存在包含相同最大虚拟机实例计数的CT:FD:UD对,并且要被删除的虚拟机实例计数小于对计数,则采取以下动作: [0062] 选择具有最大集群租户ID的集群租户。如果集群租户中的CT:FD:UD对计数小于或等于要被删除的虚拟机实例计数,则采取动作以删除集群租户中的对中具有最大实例ID的虚拟机实例并移动到下一集群租户。如果集群租户中的CT:FD:UD对计数大于要被删除的虚拟机实例计数,则采取以下动作: [0063] 在集群租户中选择具有最大虚拟机实例计数的FD。如果存在具有相同最大虚拟机实例计数的多于一个的FD,则随机选择FD。在FD中,从包含最大虚拟机计数的UD中选择一个虚拟机实例。如果存在具有相同最大虚拟机实例计数的多于一个的UD,则随机选择UD。删除所选择的虚拟机实例,并且通过相同的逻辑继续选择要删除的下一虚拟机实例。 [0064] 如图4A中所描绘的,图4A图示了具有故障域和更新域的缩减操作的示例性结果。 图4A包括可用性分区410和可用性分区420。可用性分区410包括计算集群410A和计算集群 410B。如图所示,可用性分区包括在计算集群中的集群租户内的水平构造的UD和垂直构造的FD。相应地,可用性分区410还包括具有5UD和3FD的集群租户430和具有5UD和3FD的集群租户450。可用性分区420包括计算集群420A,其中集群租户440具有5UD和3FD。租户虚拟机集具有46个虚拟机实例,其必须被缩减到25个虚拟机实例。VMX标示在执行缩减操作之后剩余的虚拟机实例。VMY标示在执行缩减操作之后被删除的虚拟机实例。CTY标示在缩减操作之后已被移除的集群租户。 [0065] 在执行缩减操作之前,虚拟机集跨两个可用性分区——可用性分区410和可用性分区420分布。可用性分区410具有31个虚拟机,并且可用性分区420具有15个虚拟机实例。 可用性分区410在集群租户330中具有16个虚拟机实例,并且在集群租户350中具有15个虚拟机实例。执行缩减操作以删除21个虚拟机实例。从可用性分区410中删除了19个虚拟机实例,从可用性分区420中删除了2个虚拟机实例。 [0066] 在执行缩减操作之后,可用性分区410具有12个虚拟机,并且可用性分区420具有 13个虚拟机实例。具体参考可用性分区410,从中删除了19个虚拟机实例,确定CT-410A: FD3:UD1具有最大虚拟机实例计数3。因此,采取动作以从CT-410A:FD3:UD1中删除2个虚拟机实例。17个虚拟机保留在可用性分区410中。 [0067] 此外,在可用性分区410中,确定所有计算CT:FD:UD对具有1个虚拟机实例,除了集群实例CT-410A:FD3:UD5,其不具有任何虚拟机实例。因此,对于可用性分区410,存在29个候选对,虚拟机计数大于要在可用性分区410中被删除的虚拟机。 [0068] 在可用性分区410中,选择集群租户410B作为具有最大ID的集群租户。存在15对,其少于剩余要被删除的17个虚拟机实例。采取动作以删除集群租户410B中的每对中的1个虚拟机实例。集群租户410B现在是一个空的集群租户。还采取动作来删除被标示为CTY的集群租户410B。还剩下17-15=2个虚拟机实例要被删除。 [0069] 评估继续回到集群租户410A。确定FD1和FD2都具有最大虚拟机实例计数——5。随机选择FD2。在FD 2中,确定UD1、UD2、UD3和UD4具有相同的最大虚拟机实例计数。随机选择UD4。采取动作以从UD4中删除1个虚拟机实例。还剩余1个虚拟机实例要被删除。在FD1中,确定FD1具有最大虚拟机实例计数5。在FDl中,UD1、UD2和UD3具有相同的最大虚拟机计数。所以随机选择UD3。采取动作以从CT-410A:FD1:UD3中删除1个虚拟机实例。 [0070] 参考图4B,图4B图示了根据本文描述的实施例的经缩减的虚拟机集。特别地,已经针对合并的更新域和故障域配置执行了缩减操作。如图所示,可用性分区仅包括计算集群中的集群租户内的垂直构造的FD。如图所示,虚拟机集已从12个虚拟机实例缩减到5个虚拟机实例。VMX标示在缩减之后剩余的虚拟机,VMY标示在缩减之后已被移除的虚拟机实例,CTY标示在缩减操作之后已被移除的集群租户。 [0071] 在执行缩减操作之前,虚拟机集跨2个可用性分区——可用性分区410和可用性分区420分布。可用性分区410具有8个虚拟机并且可用性分区420具有4个虚拟机。在可用性分区410中,5个虚拟机位于集群实例410A中并且3个虚拟机位于集群实例410B中。 [0072] 在缩减操作期间,采取动作来删除7个虚拟机实例,特别地,从可用性分区410中删除6个虚拟机,并且从可用性分区420中删除1个虚拟机。参考可用性分区410,在执行缩减操作时,确定CT-410A:FD3对具有最大虚拟机计数3。采取动作以从CT-410A:FD3对中删除2个虚拟机实例。这使在可用性分区410中剩下4个虚拟机实例要被删除。对于可用性分区410,确定所有剩余的CT-410A:FD对都具有1个虚拟机。因此,对于可用性分区410,6个候选对是虚拟机实例计数,其大于要在可用性分区410中被删除的虚拟机。 [0073] 在可用性分区410中,选择集群租户410B作为具有最大ID的集群租户。存在3对,其少于剩余要被删除的4个VM。采取动作以删除每对中的1个虚拟机。集群租户410B现在是空的。采取动作以删除集群租户410B。剩下4-3=1个虚拟机实例要被删除。缩减操作继续到集群租户410A。确定FD1、FD2和FD3具有最大虚拟机实例计数1。随机选择FD3。采取动作以从CT-410A:FD3中删除1个虚拟机实例。 [0074] 如所讨论的,可用性管理器230支持扩展和缩减操作。可用性管理器230可以实现用于对虚拟机实例进行分配和解除分配的不同类型的优化算法。若干优化算法可以支持对虚拟机实例的高效分配、解除分配和重新平衡。可以实现基于分配-配置-分数的方案以用于分配虚拟机实例。在操作中,租户可以创建具有虚拟机实例的虚拟机集。最初,集群租户未被指派虚拟机集。可以处理虚拟机实例并将其指派给具有最低虚拟机计数的可用性分区。预期的是,当创建新的虚拟机实例时,它们也被处理并被指派给具有最低虚拟机计数的可用性分区。 [0075] 对于与可用性分区相关联的、表示的所选择的现有集群租户,确定是否未将虚拟机实例指派给集群租户。当确定尚未将虚拟机实例指派给集群租户时,确定集群租户的虚拟机实例计数是否小于每个集群租户的最大虚拟机计数(MaxVMsPerCT)。当集群租户的虚拟机实例计数不小于MaxVMsPerCT时,将选择新的集群租户以用于执行评估。当可用性的虚拟机实例计数小于MaxVMsPerCT时,进行分配配置分数确定。 [0076] 针对现有集群租户进行分配配置分数确定。针对集群租户的分配配置分数可以是基于集群租户和集群租户所在的计算集群二者的、针对虚拟机实例的可用分配容量的指示。例如,集群租户可能具有分配容量,但集群租户所在的计算集群可能进一步限制分配容量(即,分配配置分数)。分配配置分数请求可以是针对集群租户和计算集群,或者仅针对集群租户。仅针对虚拟机实例计数进行分配配置分数请求,使得集群租户中的总虚拟机计数小于MaxVMsPerCT。因此,确定针对集群租户的当前虚拟机计数加上要被分配的剩余虚拟机实例计数是否小于MaxVMsPerCT。分配配置分数确定可以被表示为:Min(当前VM计数+剩余VM实例计数,MaxVMsPerCT)。 [0077] 例如,MaxVMsPerCT可以是100个VM,并且当前虚拟机计数可以是90以及剩余的虚拟机实例计数可以是20。在这种情况下,分配配置分数的结果是MaxVMsPerCT为100,其小于 110,并且确定答案为否,并且选择另一集群租户。在另一示例中,MaxVMsPerCT也是100,并且当前虚拟机计数是90以及剩余的虚拟机计数是3。在第二种情况下,分配配置分数的结果是当前虚拟机计数加上剩余的虚拟机计数为93,并且确定答案为是。根据剩余的虚拟机实例计数(即3)、MaxVMsPerCT(即100)和当前虚拟机计数(即90)执行虚拟机实例的分配。可以基于结果为3的Min(剩余虚拟机实例计数(3),MaxVMsPerCT(100)-当前虚拟机计数(95))执行分配。因此,3个虚拟机实例被指派给集群租户。在此上下文中,分配配置分数可以指示可以被指派给集群实例的虚拟机实例的数量。当现有集群租户达到最大容量时,该算法包括创建新的集群租户并将虚拟机实例分配给新的集群租户。对于每个新的集群租户,可以在指派初始数目的虚拟机实例后确定分配配置分数,并将其指派为用于集群管理器的集群租户的属性。预期的是,将虚拟机实例指派给现有集群租户或新集群租户可以基于:最初在将虚拟机实例实际分配给现有集群租户和新的集群租户之前,在现有集群租户或新集群租户上预留分配容量。如下面更详细讨论的,在针对现有集群租户的扩展操作期间,附加的考虑或因素是集群租户所在的计算集群中的可用容量。启动针对现有集群租户的预留操作确定了计算集群中是否存在容量。此外,如果启动预留操作并且不存在可用性容量,则对其他可用计算集群执行的“获得分配分数”操作提供了对哪些计算集群具有满足扩展请求的最大可用容量的指示。 [0078] 用于分配虚拟机集的分配请求可以包括用于标识和预留计算集群的、两遍排序和过滤以及桶装(bucketing)方案。例如,接收分配请求。针对租户的虚拟机集接收分配请求。 在支持分配虚拟机集的可用性管理器230处接收分配请求。可用性管理器230可以标识用于特定区域的计算集群(例如,结构标记),该特定区域具有多个可用性分区。可用性管理器 230可以对计算集群进行排序和过滤以标识理想计算集群的子集。可用性管理器230可以最初基于多个约束来过滤计算集群。例如,可用性管理器230可以基于网络容量和虚拟机实例大小容量以及其他动态约束来过滤计算集群。可用性管理器230还可以通过生成列表(例如,“要排除的集群”列表)来过滤计算集群,该列表可以被用来对计算集群的选择进行优先排序。可用性管理器可以基于硬利用率限制、排序预留、健康分数以及其他管理员限定的过滤参数来过滤计算集群。在排序和过滤后,可用性管理器230可以生成计算集群的队列(例如,“计算集群候选队列”)。 [0079] 可用性管理器230可以操作以访问用于分配虚拟机集的队列。最初,可用性管理器 230可以使预限定数目的(例如,N个)计算集群出列以构建计算集群桶。例如,当N=5时,可用性管理器将5个计算集群从队列中出列,以生成计算集群桶。如果可用性管理器不能够使任何计算集群出列,则不存在可用于被预留的计算集群。如果可用性管理器230能够使计算集群出列,则可以执行一系列操作。 [0080] 特别地,针对计算集群桶中的计算集群,可以执行第二排序和过滤操作。第二排序和过滤操作包括:首先,获得集群租户分配配置分数,并且然后基于硬利用率限制过滤计算集群,并且通过以下各项中的一项或多项进行排序:软预留、健康分数和分配配置分数,以帮助标识哪些计算集群具有最大可用容量。对于每个计算集群,可以基于经排序和过滤的列表将虚拟机实例分配给计算集群。 [0081] 用于分配虚拟机的分配请求可以包括用于标识和预留计算集群的集群租户预留方案。确定虚拟机集中的任何虚拟机实例是否可用于被分配。可用性管理器使预限定数目的(例如,N个)未经分配的虚拟机实例出列。例如,N可以等于200。可用性管理器可以创建将对N个虚拟机实例进行初始化的集群租户限定。可以跨故障隔离计算构造(例如,故障域和/或更新域)均匀地分布虚拟机实例。预期的是,对于最后一批虚拟机实例,虚拟机实例可以被不均匀地分布。 [0082] 此外,可以确定要被排除的集群租户列表。可以从现有的集群租户放置(例如,“现有集群租户放置”)以及基于每个集群的最大租户数目(例如,“每集群的集群租户最大数目”)来选择要被排除的集群租户。可用性管理器可以提交集群租户预留请求以及要排除的集群租户列表。确定是否可以预留集群租户以用于分配虚拟机实例。 [0083] 用于扩展虚拟机的分配优化还可以包括标识平衡和不平衡的集群租户以做出分配决策。对于集群租户,确定集群租户中的虚拟机实例的数目(即,“集群租户大小”)是否小于用于集群租户的虚拟机实例的最大数目(即,“每集群租户的虚拟机实例最大数目”)。可以将集群租户分组为不平衡的集群租户列表(例如,“不平衡集群租户”)和平衡的集群租户列表(例如,“平衡集群租户列表”)。对于不平衡的集群租户和平衡的集群租户,基于剩余容量对列表进行排序,并将其放入经排序的列表队列中。可以将虚拟机实例分配给不平衡的和平衡的集群租户。可能的是,基于集群租户的容量,可用性管理器可以运行新的租户分配算法以创建新租户。 [0084] 缩减优化可以包括确定针对集群租户的重新平衡成本。可以接收针对M个虚拟机实例的缩减请求。确定是否存在其虚拟机实例未跨隔离域(例如,故障域和/或更新域)均匀分布的集群租户。当确定虚拟机实例未均匀分布时,对于每个不平衡的集群租户,可以确定重新平衡成本(例如,函数“找到具有最低成本的重新平衡计划”)。例如,需要被删除以平衡集群租户的虚拟机实例的数目。虚拟机实例计数的数目越高,重新平衡成本越高。可以按最低重新平衡成本、以升序对集群租户列表进行排序。使用具有最低成本(即,平衡的最短路径)的重新平衡计划来缩减集群租户。当确定虚拟机实例均匀地平衡时,以升序对集群租户进行排序。采取动作以从较小的集群租户开始、对每个集群租户执行积极缩放。 [0085] 参考重新平衡操作,可用性管理器可以支持执行重新平衡操作。若干不同因素可以触发重新平衡操作。重新平衡操作可以是指所采取的、在可用性分区之间移动虚拟机实例一个或多个步骤。启动重新平衡的因素可以包括基于故障的因素(例如,可用性分区失灵或不健康,使得可用性分区处的虚拟机实例不可访问)或基于变化的因素(例如,租户删除特定虚拟机实例以及租户改变用于虚拟机集的可用性参数(例如,可用性分区))。其他因素还可以包括扩展、或增加虚拟机实例的数目、或可用性分区的故障,使得必须将新的虚拟机实例指派给其他可用性分区。 [0086] 基于重新平衡的示例性实现,可以进一步描述本发明的实施例。作为示例,可以在可用性管理系统内限定四个不同的重新平衡触发。首先,可用性分区失灵或不健康,使得可用性分区处的虚拟机实例不可访问。其次,先前不健康的可用性分区现在是健康的,可以将虚拟机实例分配给可用性分区。第三,可用性分区具有附加容量(例如,基于阈值容量),使得可以将附加虚拟机实例分配给可用性分区。第四,租户动作要求重新分配虚拟机实例。 [0087] 可用性管理器可以接收已经发生重新平衡触发事件的指示,使得针对一个或多个虚拟机集启动重新平衡操作。重新平衡操作可以基于特定类型的触发。例如,如果可用性分区失灵,则可用性管理器可以将对应的可用性分区中的虚拟机实例标记为已删除,并在健康的可用性分区中创建新的虚拟机实例。对于所有其他场景,重新平衡操作可以包括在可用性分区中创建新的虚拟机实例,该可用性分区已从不健康状态恢复、或被确定为具有附加容量。特别地,基于虚拟机集的可用性简档来执行重新平衡操作。 [0088] 基于下面描述的两部分的分配和重新平衡算法,可以优化重新平衡操作。在操作中,可用性管理器经由集群管理器可以从不健康的可用性分区中逻辑上删除虚拟机实例。 可以创建新的虚拟机实例,而无需将新的虚拟机实例指派给可用性分区。可以相应地标记健康的可用性分区。对于要被删除的每个虚拟机实例,从虚拟机被分配的对应可用性分区中删除虚拟机实例,并将新的虚拟机分配给健康可用性分区。将虚拟机分配给健康可用性分区是基于:首先确定健康的可用性分区是否具有容量,其次,与其他健康的可用性分区相比,可用性分区是否具有最少的虚拟机并且被标记为可用于被分配新的虚拟机器。将新的虚拟机实例分配给健康的可用性分区还可以基于确定用于将新的虚拟机实例分配给可用性分区的分配配置分数。 [0089] 然后重新平衡可用性分区。重新平衡可用性分区还可以基于确定可用性分区中的虚拟机实例计数是否小于针对可用性分区的平均值。当虚拟机实例计数小于平均值时,采取动作以在可用性分区中创建新的虚拟机以达到虚拟机实例计数。在低于平均的可用性分区中创建的一定数目的新虚拟机可以从具有最多已故障的虚拟机实例的可用性分区中被删除。 [0090] 现在转向图5,提供了图示用于实现分布式计算系统中的可用性管理的方法500的流程图。可以使用本文描述的可用性管理系统来执行方法500。最初,在框510处,访问可用性简档。可用性简档包括用于分配虚拟机集的可用性参数。可用性参数可以包括与多个可用性分区、多个故障域和多个更新域相对应的、两个或更多个可用性隔离层。基于经逻辑限定的可用性分区来选择可用性参数,该经逻辑限定的可用性分区被映射到经物理限定的可用性分区。经逻辑限定的可用性分区对虚拟机集到经物理限定的可用性分区的分配进行抽象。 [0091] 在框520处,基于可用性简档,针对虚拟机集确定分配方案。分配方案指示如何将虚拟机集分配给计算集群。分配方案从以下各项中的一项选择:虚拟机集跨越可用性分区分配方案和虚拟机集非跨越可用性分区分配方案,用于分配虚拟机集的虚拟机跨越可用性分区分配方案包括:执行评估以确定跨至少两个可用性分区限定的、跨越的分配配置。跨越的分配配置满足可用性简档的可用性参数。用于分配虚拟机集的虚拟机非跨越可用性分区分配方案包括:执行评估以确定针对一个可用性分区限定的、非跨越的分配配置。非跨越的分配配置满足可用性简档的可用性参数。进一步预期,基于由租户所选择的可用性参数,非跨越可用性分区分配方案还指示:非跨越的分配配置应该被限制于一个可用性分区中的计算集群的一个集群租户,使得针对一个集群租户的多个故障域和多个升级域精确限定可用性保证。 [0092] 分配方案确定针对可用性分区中的虚拟机集的不同分配配置的分配配置分数,使得基于分配配置分数来选择虚拟机集的分配配置。例如,可以将针对不同分配配置的分配配置分数与被用作虚拟机集的分配配置的、与最佳分配配置分数相关联的分配配置进行比较。基于集群租户的当前虚拟机实例计数、要被分配的剩余虚拟机实例计数以及集群租户的最大支持虚拟机计数来确定分配配置分数。 [0093] 在框530处,基于分配方案来分配虚拟机集。分配虚拟机集包括:跨多个可用性分区、多个故障域和多个更新域分配虚拟机集。更新域限定了相对于故障层和分区层的、更新层隔离故障点。基于到底层物理硬件的映射,逻辑地限定用于虚拟机集的多个故障域和多个更新域。 [0094] 分配虚拟机集包括将虚拟机实例分配给具有最少数目的虚拟机实例计数的可用性分区。集群租户被配置有最大虚拟机实例计数限制,使得虚拟机集的虚拟机实例被分配给在跨至少两个可用性分区的多个计算集群上被实例化的集群租户。 [0095] 现在转向图6,提供了图示用于实现分布式计算系统中的可用性管理的方法600的流程图。可以使用本文描述的可用性管理系统来执行方法600。特别地,一种或多种计算机存储介质,具有被体现于其上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时,使一个或多个处理器执行方法600。最初,在框610处,访问可用性简档。可用性简档包括用于分配虚拟机集的可用性参数,其中可用性参数包括与多个可用性分区和多个故障域相对应的至少两个可用性隔离层。 [0096] 在框620处,基于可用性简档,针对虚拟机集确定分配方案。分配方案指示如何将虚拟机集分配给计算集群。分配方案是用于分配虚拟机集的虚拟机跨越可用性分区分配方案,该虚拟机跨越可用性分区分配方案包括:执行评估以确定跨至少两个可用性分区限定的跨越的分配配置。跨越的分配配置满足可用性简档的可用性分区和故障域可用性参数。 [0097] 在框630处,基于分配方案来分配虚拟机集。针对虚拟机集,分配方案将虚拟机集的虚拟机实例分配给集群租户集,该集群租户集在跨至少两个可用性分区的多个计算集群上被实例化。使用对应的集群管理器,各自独立地管理多个计算集群。对于第一虚拟机集,集群管理器管理在集群管理器的对应计算集群中的、第一集群租户集的子集,该第一集群租户集跨至少两个可用性分区被实例化。并且,对于第二虚拟机集,集群管理器管理在集群管理器的对应计算集群中的第二集群租户集,该第二集群租户集仅在至少两个可用性分区中的一个可用性分区中被实例化。 [0098] 现在转向图7,提供了图示用于实现分布式计算系统中的可用性管理的方法700的流程图。可以使用本文描述的可用性管理系统来执行方法700。最初,在框710处,接收第一可用性参数集,其被用来生成用于第一虚拟机集的第一可用性简档。第一可用性参数集包括用于分配第一虚拟机集的虚拟机跨越可用性分区分配方案和两个或更多个可用性隔离层,该两个或更多个可用性隔离层至少基于多个可用性分区和多个故障域。用于分配第一虚拟机集的虚拟机跨越可用性分区分配方案包括:执行评估以确定跨越的分配配置,该跨越的分配配置跨至少两个可用性分区而被限定。跨越的分配配置满足第一可用性简档的第一可用性参数集。 [0099] 在框720处,接收第二可用性参数集,其被用来生成用于第二虚拟机集的第二可用性简档。第二可用性参数集包括用于分配第二虚拟机集的虚拟机非跨越可用性分区分配方案和两个或更多个可用性隔离层,该两个或更多个可用性隔离层至少基于多个可用性分区和多个故障域。用于分配虚拟机集的虚拟机非跨越可用性分区分配方案包括:执行评估以确定非跨越的分配配置,该非跨越的分配配置针对一个可用性分区而被限定。非跨越的分配配置满足第二可用性简档的第二可用性参数集。 [0100] 在框730处,基于对应的第一可用性参数集和第二可用性参数集,使得第一可用性简档和第二可用性简档被生成。第一可用性简档与第一虚拟机集相关联,并且第二可用性简档与第二虚拟机集相关联。经由可用性配置接口接收第一可用性参数集和第二可用性参数集。可用性配置接口还被配置为提供用于虚拟机集的分配的可选择的子保证。子保证基于虚拟机集的软分配、经由经逻辑限定的可用性分区而被实现,该经逻辑限定的可用性分区被不均匀地映射到经物理限定的可用性分区。可用性配置接口还被配置为接收对虚拟机集的分配配置的查询,并且生成虚拟机集的分配配置的视觉表示。 [0101] 现在转向图8,提供了图示用于实现分布式计算系统中的可用性管理的方法800的流程图。可以使用本文描述的可用性管理系统来执行方法800。特别地,一种或多种计算机存储介质,具有被体现于其上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时,可以使一个或多个处理器执行方法800。最初,在框810处,接收第一可用性参数集,其被用来用于生成第一虚拟机集的第一可用性简档。第一可用性参数集包括用于分配第一虚拟机集的虚拟机跨越可用性分区分配方案和两个或更多个可用性隔离层,该两个或更多个可用性隔离层至少基于多个可用性分区和多个故障域。用于分配第一虚拟机集的虚拟机跨越可用性分区分配方案包括:执行评估以确定跨越的分配配置,该跨越的分配配置跨至少两个可用性分区而被限定。跨越的分配配置满足第一可用性简档的第一可用性参数集。 [0102] 在框820处,在第一可用性参数集中标识用于分配第一虚拟机集的子保证选择。子保证基于虚拟机集的软分配、经由经逻辑限定的可用性分区而被实现,该经逻辑限定的可用性分区被不均匀地映射到经物理限定的可用性分区。被映射到经物理限定的可用性分区的经逻辑限定的可用性分区将虚拟机集到经物理限定的可用性分区的分配抽象化。在框 830处,使基于可用性参数和子保证选择的可用性简档被生成。可用性简档与虚拟机集关联。 [0103] 现在转向图9,提供了图示用于实现分布式计算系统中的可用性管理的方法900的流程图。可以使用本文描述的可用性管理系统来执行方法900。特别地,一种或多种计算机存储介质,具有被体现于其上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时,可以使一个或多个处理器执行方法900。 [0104] 最初,在框910处,访问虚拟机集。该虚拟机集与用于分配虚拟机实例集的可用性简档相关联,该虚拟机实例集与多个可用性分区和多个故障域中的虚拟机集相关联。 [0105] 在框920处,使用虚拟机跨越可用性分区分配方案,跨多个可用性分区和多个故障域分配虚拟机集。用于分配虚拟机集的虚拟机跨越方案包括:执行评估以确定跨越的分配配置,该跨越的分配配置跨至少两个可用性分区而被限定。分配配置满足可用性简档中的可用性分区和故障域可用性参数。分配虚拟机集基于两遍排序和过滤与桶装方案,以用于标识计算集群的子集以针对执行扩展操作进行优先排序。 [0106] 现在转向图10,提供了图示用于实现分布式计算系统中的可用性管理的方法1000的流程图。可以使用本文描述的可用性管理系统来执行方法1000。 [0107] 最初,在框1010处,访问虚拟机集。虚拟机集与可用性简档相关联,该可用性简档用于从多个可用性分区和多个故障域中解除分配虚拟机集的虚拟机实例的至少一个子集。 [0108] 在框1020处,使用虚拟机跨越可用性分区分配方案,从多个可用性分区和多个故障域中解除分配虚拟机实例的子集。用于解除分配虚拟机集的虚拟机跨越方案包括:执行评估以确定跨越的解除分配配置,该跨越的解除分配配置跨至少两个可用性分区而被限定。分配配置满足可用性简档中的可用性分区和故障域可用性参数。解除分配虚拟机集还包括:遍历集群租户、故障域和更新域对,以从具有最大虚拟机实例计数的所选择的集群租户、故障域和更新域对中删除虚拟机实例。 [0109] 遍历集群租户、故障域和更新域对包括:确定每个集群租户、故障域和更新域对中的虚拟机实例计数;以及从具有最大虚拟机实例计数的集群租户、故障域和更新域对中删除一个或多个虚拟机。遍历集群租户、故障域和更新域对还可以基于:确定针对集群租户、故障域和更新域对的虚拟机计数大于要被删除的虚拟机计数,针对故障域选择具有最大虚拟机实例计数的故障域。在故障域中,针对更新域选择具有最大支持虚拟机计数的更新域,并且从更新域中删除虚拟机实例。在实施例中,解除分配虚拟机集至少部分地基于:确定用于集群租户的重新平衡成本,重新平衡成本是对到达平衡的集群租户的最短路径的度量。 [0110] 现在转向图11,提供了图示用于实现分布式计算系统中的可用性管理的方法1100的流程图。可以使用本文描述的可用性管理系统来执行方法1100。最初,在框1110处,接收对执行针对虚拟机集的重新平衡的指示。基于触发事件的发生来接收指示。在框1120处,确定触发事件的类型,其中触发事件的类型指示如何重新平衡计算集群中的虚拟机集。在框 1130处,基于触发事件的类型重新平衡虚拟机集。重新平衡虚拟机集包括:基于对应的虚拟机集的可用性简档来删除和创建新虚拟机实例。 [0111] 参考可用性管理系统,本文描述的实施例支持可定制的、分层级的和灵活的可用性配置,以最大化分布式计算系统中的计算资源的利用,以满足针对租户基础设施(例如,客户虚拟机集)的可用性保证。可用性管理系统组件是指用于可用性管理的集成组件。集成组件是指支持使用可用性管理系统的可用性管理功能性的硬件架构和软件框架。硬件架构是指物理组件及其相互关系,并且软件框架是指提供可以用设备上体现的硬件实现的功能性的软件。端到端的、基于软件的可用性管理系统可以在可用性管理系统组件内操作,以操作计算机硬件以提供可用性管理系统功能性。因此,可用性管理系统组件可以管理资源并提供用于可用性管理系统功能性的服务。通过本发明的实施例,预期了任何其他变型和组合。 [0112] 作为示例,可用性管理系统可以包括API库,该API库包括针对例程的规范、数据结构、对象类,并且变量可以支持设备的硬件架构和可用性管理系统的软件框架之间的交互。 这些API包括针对可用性管理系统的配置规范,使得其中的不同组件可以在可用性管理系统中彼此通信,如本文所述。 [0113] 已经简要描述了本发明的实施例的概述,下面描述其中可以实现本发明的实施例的示例性操作环境,以便提供用于本发明的各个方面的一般上下文。首先特别地参考图12,用于实现本发明的实施例的示例性操作环境被示出,并且通常被指定为计算设备1200。计算设备1200只是合适的计算环境的一个示例,并不旨在对本发明的使用范围或功能性提出任何限制。也不应将计算设备1200解释为具有与所图示组件中的任何一个或组合有关的任何依赖性或要求。 [0114] 本发明可以在计算机代码或机器可用指令的一般上下文中描述,包括由诸如个人数据助理或其他手持设备之类的计算机或其他机器执行的、诸如程序模块之类的计算机可执行指令。通常,包括例程、程序、对象、组件、数据结构等的程序模块是指执行特定任务或实现特定抽象数据类型的代码。本发明可以在各种系统配置中被实践,包括手持设备、消费电子产品、通用计算机、更专业性的计算设备等。本发明还可以在分布式计算环境中被实践,其中任务由通过通信网络链接的远程处理设备执行。 [0115] 参考图12,计算设备1200包括总线1210,其直接或间接耦合以下设备:存储器 1212、一个或多个处理器1214、一个或多个呈现组件1216、输入/输出端口1218、输入/输出组件1220、以及说明性电源1222。总线1210表示可以是一个或多个总线(诸如地址总线、数据总线或其组合)的总线。尽管为了清楚起见,图12的各个框都是用线条示出,但是实际上,并不是那么清楚地划定各种组件,并且比喻地,线条将更准确地是灰色和模糊的。例如,可以将诸如显示设备之类的呈现组件视为I/O组件。此外,处理器具有存储器。我们认识到这是本领域的本质,并重申图12的图仅仅是说明可以结合本发明的一个或多个实施例而使用的示例性计算设备。在诸如“工作站”、“服务器”、“膝上型计算机”、“手持设备”等类别之间不进行区分,因为所有这些都在图12的范围内并参考为“计算设备”。 [0116] 计算设备1200通常包括各种计算机可读介质。计算机可读介质可以是可以由计算设备1200访问的任何可用介质,并且包括易失性和非易失性介质、可移除和不可移除介质。 作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。 [0117] 计算机存储介质包括易失性和非易失性、可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术而被实现。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字通用盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或可以被用来存储所期望的信息并且可以由计算设备1200访问的任何其他介质。计算机存储介质不包括信号本身。 [0118] 通信介质通常以诸如载波或其他传输机制之类的经调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息递送介质。术语“经调制数据信号”意指以对信号中的信息进行编码的方式设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质以及诸如声学、RF、红外和其他无线介质之类的无线介质。上述任何组合也应被包括在计算机可读介质的范围内。 [0119] 存储器1212包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移除的、不可移除的或其组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备1200包括从诸如存储器1212或I/O组件1220之类的各种实体读取数据的一个或多个处理器。(多个)呈现组件1216向用户或其他设备呈现数据指示。示例性呈现组件包括显示设备、扬声器、打印组件、振动组件等。 [0120] I/O端口1218允许计算设备1200逻辑地耦合到包括I/O组件1220的其他设备,其中一些可以被内置。说明性组件包括麦克风、操纵杆、游戏手柄、卫星天线、扫描仪、打印机、无线设备等。 [0121] 现在参考图13,图13图示了示例性分布式计算环境1300,其中可以采用本公开的实现。特别地,图13示出了云计算平台1310中的可用性管理系统(“系统”)的高级别架构,其中系统支持对软件组件的无缝修改。应该理解,本文描述的这个和其他布置仅作为示例而被阐述。除了所示的那些布置和元件之外或代替所示的那些,可以使用其他布置和元件(例如,机器、接口、功能、顺序和功能分组等),并且可以完全省略一些元件。此外,本文描述的许多元件是功能实体,其可以被实现为分立或分布式组件或者结合其他组件而被实现,并且可以以任何合适的组合和位置而被实现。本文描述的由一个或多个实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,各种功能可以由执行被存储在存储器中的指令的处理器来执行。 [0122] 数据中心可以支持分布式计算环境1300,其包括云计算平台1310、机架1320和机架1320中的节点1330(例如,计算设备、处理单元或刀片)。该系统可以用云计算平台1310实现,该云计算平台1310运行跨不同的数据中心和地理区域的云服务。云计算平台1310可以实现集群管理器1340组件,以用于供应和管理云服务的资源分配、部署、升级和管理。通常,云计算平台1310用于以分布式方式存储数据或运行服务应用。数据中心中的云计算基础设施1310可以被配置为主存和支持特定服务应用的端点的操作。云计算基础设施1310可以是公共云、私有云或专用云。 [0123] 可以向节点1330供应主机1350(例如,操作系统或运行时环境),该主机1350在节点1330上运行经限定的软件堆栈。节点1330还可以被配置为执行云计算平台1310内的专用功能性(例如,计算节点或存储节点)。节点1330被分配以运行租户的服务应用的一个或多个部分。租户可以是指利用云计算平台1310的资源的客户。支持特定租户的云计算平台 1310的服务应用组件可以被称为租户基础设施或租赁物。术语服务应用、应用或服务在本文中可互换使用,并且宽泛地是指在数据中心之上运行或访问数据中心内的存储和计算设备位置的任何软件或软件的部分。 [0124] 当节点1330支持多于一个单独的服务应用时,可以将节点划分为虚拟机(例如,虚拟机1352和虚拟机1354)。物理机还可以同时运行单独的服务应用。虚拟机或物理机可以被配置为由云计算平台1310中的资源1360(例如,硬件资源和软件资源)支持的个性化计算环境。预期可以为特定服务应用配置资源。此外,每个服务应用可以被划分为功能部分,使得每个功能部分能够在单独的虚拟机上运行。在云计算平台1310中,可以使用多个服务器来运行服务应用并且在集群中执行数据存储操作。特别地,服务器可以独立地执行数据操作,但是被暴露为被称为集群的单个设备。集群中的每个服务器都可以被实现为节点。 [0125] 客户端设备1380可以被链接到云计算平台1310中的服务应用。客户端设备1380可以是任何类型的计算设备,其例如可以对应于参考图13描述的计算设备1300。客户端设备 1380可以被配置为向云计算平台1310发出命令。在实施例中,客户端设备1380可以通过虚拟互联网协议(IP)和负载平衡器或将通信请求引导到云计算平台1310中的指定端点的其他装置来与服务应用通信。云计算平台1310的组件可以通过网络(未示出)彼此通信,该网络可以包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。 [0126] 已经描述了分布式计算环境1300和云计算平台1310的各个方面,注意,可以采用任何数目的组件来实现本公开范围内的期望功能性。尽管为了清楚起见,图13的各种组件都是用线条示出,但是实际上,并不是那么清楚地划定各种组件,并且比喻地,线条将更准确地是灰色和模糊的。此外,尽管图13的一些组件被描绘为单个组件,但是描述在本质上和数目上是示例性的,并且不应被解释为限制本公开的所有实现。 [0127] 以下段落中描述的实施例可以与一个或多个具体描述的备选方案组合。特别地,所要求保护的实施例可以在备选方案中包含对一个以上其他实施例的引用。所要求保护的实施例可以指定对所要求保护的主题的进一步限制。 [0128] 本文中具体描述了本发明实施例的主题以满足法定要求。然而,描述本身并不旨在限制本专利的范围。相反,发明人已经预期所要求保护的主题还可以以其他方式来体现,以包括与本文档中描述的步骤类似的不同步骤或步骤组合,结合其他现有或未来技术。此外,尽管本文可以使用术语“步骤”和/或“框”来表示所采用的方法的不同元素,但是这些术语不应被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各个步骤的顺序时除外。 [0129] 出于本公开的目的,词语“包括”具有与词语“包含”相同的宽泛含义,并且词语“访问”包括“接收”、“引用”或“取回”。另外,除非另有说明,否则诸如“一”和“一个”之类的词语包括复数以及单数。因此,例如,存在一个或多个特征的情况满足“一个特征”的约束。此外,术语“或”包括联合、分离和两者(因此,a或b包括:a或b、以及a和b)。 [0130] 出于以上详细讨论的目的,参考分布式计算环境描述了本发明的实施例;然而,本文描述的分布式计算环境仅是示例性的。组件可以被配置用于执行实施例的新颖方面,其中术语“被配置用于”可以指“被编程为”使用代码实现特定抽象数据类型或执行特定任务。 此外,虽然本发明的实施例通常可以参考本文描述的可用性管理系统和示意图,但是应该理解,所描述的技术可以扩展到其他实现上下文。 [0131] 已经结合特定实施例描述了本发明的实施例,这些特定实施例在所有方面都旨在是说明性的而不是限制性的。在不脱离本发明的范围的情况下,备选实施例对于本发明所属领域的普通技术人员将变得显而易见。 [0132] 从上述内容可以看出,本发明很好地适用于达到上文所述的所有目的和目标,以及其他显而易见且结构固有的优点。 [0133] 应当理解,某些特征和子组合是有用的,并且可以在不参考其他特征或子组合的情况下被采用。这是预期的并且在权利要求的范围内。