首页> 中国专利> 具有成本效益的高可用性的多单租户服务

具有成本效益的高可用性的多单租户服务

摘要

VM的辅池用于运行辅服务或辅作业,所述辅服务或辅作业可能在相应的主VM发生故障时被驱逐。在检测到主资源发生故障时,将辅服务或辅作业从辅池资源中驱逐出,并且可以将辅池资源自动分配给发生故障的主资源的作业。在这方面,辅作业可以被认为是可抢占的作业,并且包括优先级比主资源上的服务或作业低的服务或作业。通过使用辅池中的计算资源来运行辅作业或可抢占的作业,这个技术利用了否则是空闲的资源。这有利地避免不得不为辅作业分配额外的和另外的计算资源,从而更有效地利用网络资源,并减少成本。

著录项

  • 公开/公告号CN112805682A

    专利类型发明专利

  • 公开/公告日2021-05-14

    原文格式PDF

  • 申请/专利权人 谷歌有限责任公司;

    申请/专利号CN201980065764.X

  • 申请日2019-11-22

  • 分类号G06F9/50(20060101);G06F11/20(20060101);

  • 代理机构11219 中原信达知识产权代理有限责任公司;

  • 代理人李宝泉;任庆威

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:58:46

说明书

相关申请的交叉引用

本申请是在2019年3月8日提交的美国专利申请No.16/297,054的继续,其公开内容通过引用合并于此。

背景技术

多单租户(MST)服务在隔离环境中(诸如在分开的虚拟机(VM)中)运行个体服务实例。云SQL是此类服务的示例。因为个体服务实例在单个VM上运行,所以VM的故障将导致该服务实例不可用。故障可能是有计划的或者计划外的,但是都需要拆掉VM。计划内的故障示例是VM更新,诸如对内核的重要安全补丁。服务的控制平面可能能够检测VM故障,并将故障转移到新创建的VM。对于计划内的故障转移,可以通过在拆掉旧WM之前重新创建新的WM来减少WM的不可用时间。但是,这两种方法更倾向于引起VM缺货的情况,其中由于目标区域中所请求类型的机器容量不足,用户无法创建VM。这是不可接受的,因为它会使客户的现有服务实例在不确定的时间段内不可用。

发明内容

一些MST服务,诸如云SQL,提供高可用性(HA)解决方案,其中热备份辅VM始终保持在主要VM旁边,以避免在所述主要VM出现故障的情况下缺货,并且能够在主要VM发生故障或需要更新的情况下进行快速故障转移。通常将主要VM和辅VM放置在负载平衡器端点之后,使得实例的IP地址在整个故障转移期间保持稳定。对于需要这种主动-被动模型的服务,辅VM仅在故障转移期间使用,否则处于空闲状态。这是很昂贵的,因为它会使与单个服务实例相关联的计算资源翻倍,并且可能使服务成本增加将近一倍。对于这种增加的成本,辅VM通常每1-2年大约仅用于计划外故障一次,并且每季度用于计划内更新一次。

本公开提供了一种解决方案,该解决方案减少在HA解决方案中维护备用VM的成本而又不牺牲可用性特性,诸如正常运行时间、故障转移时间等。VM的辅池,或更一般地计算资源,用于运行辅服务或作业。在检测到给定VM发生故障时,从辅池资源中驱逐辅服务或作业,使得可以将这些辅池资源自动分配给发生故障的VM上的主作业或服务。在这方面,辅助工作可以被认为是可抢占的工作,并且包括比故障的服务或工作具有更低优先级的服务或工作。通过使用辅池中的计算资源来运行辅助或可抢占的作业,这个技术利用了否则是空闲的资源。这有利地避免必须为辅作业分配额外的和分开的计算资源。这导致网络资源的更有效使用,并潜在地减轻在其它情况下不得不产生潜在未充分利用的网络,其将导致高可用性(“HA”)成本的减少。

本公开的一个方面提供了一种用于管理用于在分布式系统中提供服务的池化计算资源的方法。该方法包括:由分布式系统的数据处理硬件确定被指定用于运行一个或多个主作业的计算资源的主池;由分布式系统的数据处理硬件确定被指定用于运行与一个或多个主作业不同的一个或多个辅作业的计算资源的辅池;在检测到与使用来自辅池的计算资源运行的一个或多个主作业中给定的一个相关联的故障情况时,抢占使用来自辅池的计算资源的一个或多个辅作业中的给定一个;以及将来自给定的辅作业的辅计算资源分配给与故障情况相关联的给定的主作业。

本公开的另一方面提供了一种用于管理用于在分布式系统中提供服务的池化计算资源的系统。该系统包括计算资源的主池,该计算资源的主池被指定用于运行一个或多个主作业;计算资源的辅池,该计算资源的辅池被指定用于运行与一个或多个主作业不同的一个或多个辅作业;以及一个或多个处理器。一个或多个处理器被配置成检测与使用来自于主池中的计算资源运行的一个或多个主作业中给定的一个主作业相关联的故障情况;在检测到故障情况时,抢占使用来自辅池的计算资源的一个或多个辅作业中的给定一个辅作业;并且将来自给定辅作业的辅计算资源分配给与故障情况相关联的给定主作业。故障情况可能是,例如,计划内的系统更新、意外故障或导致计算资源不可用的另一事件。

一种非暂时性计算机可读介质,其存储可由一个或多个处理器执行的指令,以执行用于管理用于在分布式系统中提供服务的池化的计算资源的方法,该方法包括确定指定用于运行一个或多个主作业的计算资源的主池,确定指定用于运行与一个或多个主作业不同的一个或多个辅作业的计算资源的辅池,在检测到与使用来自主池的计算资源运行的一个或多个主作业中给定的一个主作业相关联的故障情况时,抢占使用来自辅池的计算资源的一个或多个辅作业中的给定一个辅作业;以及将来自给定的辅作业的辅计算资源分配给与故障情况相关联的给定的主作业。

附图说明

图1是根据本公开的各方面的示例系统的示意图,该示例系统包括通过网络与分布式系统通信的用户设备。

图2图示根据本公开的各方面的在故障转移期间的图1的系统的示例。

图3是根据本公开的各方面的执行虚拟计算环境的示例分布式系统的示意图。

图4是根据本公开的各方面的具有主虚拟机池和辅虚拟机池的示例虚拟计算环境的示意图。

图5是根据本公开的各方面的示例计算设备。

图6是根据本公开的各方面的维持虚拟机实例的可用性的示例方法的流程图。

具体实施方式

VM的辅池用于运行辅服务或作业,其可以在对应的主VM发生故障时被驱逐。例如,在检测到主资源发生故障时,从辅池资源中驱逐辅服务或作业,并且可以将辅池资源自动分配给已发生故障的主资源的作业。在这方面,辅作业可以被认为是可抢占的作业,并且包括其优先级比主资源上的服务或作业低的服务或作业。通过使用辅池中的计算资源来运行辅作业或可抢占的作业,这个技术利用了否则是空闲的资源。这有利地避免不得不为辅作业分配额外的和分开的计算资源。这导致网络资源的更加有效使用,并且潜在地减轻在其它情况下不得不产生潜在未充分利用的网络,从而减少HA成本。

这个技术的一个子方面包括响应于检测到故障转移情况,适度地向下拨号并将计算资源从辅作业转移到已故障或正在故障的作业。例如,如果可抢占的作业或辅作业正在通过使用辅池中的资源在容器(例如,docker,lxc等)中运行,则可以将这些资源从辅作业动态位移到主作业或主要作业。资源的动态位移或分配包括逐渐减少辅作业正在使用的资源(例如,CPU、存储器、联网等),并与该减少相一致地将释放的或现在未使用的资源分配给主作业。然后,仅作为示例,释放的资源可以在VM上在另一个docker(码头工人)容器中运行主作业。假定在其上运行的VM是故障源,则该主作业可能会故障转移到不同的VM。从辅VM池中分配了不同的VM。在要动态分配的资源包括CPU的情况下,可以压制CPU的数量或每个正在使用的CPU的性能,以实现所需的结果。下拨和重新分配计算资源可能会影响辅作业的性能,但至少为其提供了适度地关闭的机会,同时避免显著地影响主作业的性能。

可以将计算资源的下拨和重新分配设置为在预定时间段内发生,例如,所谓的“宽限期”。在此期间,随着辅作业使用的计算资源被下拨,它们被分配给主作业使用。宽限期结束后,辅作业被终止,例如,辅作业的容器被拆除。在宽限期期间,在辅作业和主作业之间的计算资源重新分配实际上包括反比例关系。也就是说,在下拨或缓降用于辅作业的计算资源的同时,主作业可以从可供其使用的资源开始,并且当通过完成辅作业而释放资源时,可以增加可供主作业使用的资源。

可以存在下述情况,其中主作业在创建VM时启动,并使用当时可用的任何资源(例如,单个虚拟CPU(“vCPU”)),并且然后这些资源在故障转移时间的宽限期期间可能被增加。作为示例,各种主作业可能会在辅VM上在可以被称为空闲模式的模式下运行,其中它们不服务于业务。将为这些作业分配少量的资源,诸如CPU、存储器、网络,因为所述资源的大多数通常会被分配给辅作业。在此示例中,当运行主作业X的VM发生故障时,该主作业可以快速地故障转移到辅VM,并且主作业X可能已经在辅VM上运行,并且因此它仅需要被分配更多资源。

作为另一个示例,这个技术也可以被应用在“裸金属”(bare metal)环境中,其中,服务器用作单租户物理服务器。更一般而言,“裸金属”涉及从主机中移除虚拟化技术或任何形式的容器化。例如,如果作业如上所述在VM上运行,则现在它将在整个物理机上运行,并且对使所述机器崩溃的故障的处理方式将类似于相对于VM来处理故障的方式。在这种环境下,可以在特定的裸金属主机上保留资源插槽。可以在该插槽上创建的容器中运行辅作业。在裸金属示例中,应用不在VM中运行,而是在物理机的操作系统(OS)上运行。因此,当辅作业位于VM或容器中时,主工作负载直接在所述机器的OS上运行。因此,本公开也适用于不使用虚拟化层的集群。

在这种技术的另一方面中,可以调整故障转移或辅VM池的大小以适应最坏情况故障场景。例如,可以留出故障转移或辅VM池的预定部分以用于运行辅作业或可抢占作业,使得可能发生的故障转移不受影响。在这方面,能够标识阈值,该阈值指示必须保持自由并且可用于故障转移的故障转移VM的数目。该阈值可以基于可抢占或辅作业的运行时间以及可能发生的故障转移的典型数目。作为特定示例,如果可抢占作业具有最小运行时间和最大运行时间(例如,必须运行至少10分钟并且不超过24小时),则能够对能够在不影响需要发生的故障转移的典型数目的情况下执行的可抢占作业的最大数目进行预测。因此,可以满足并且继续启动可抢占作业请求,直到消耗了最大阈值的计算资源并且为可抢占作业留出的计算资源不可用或不足为止。此时,将不在辅池或可抢占池中启动故障转移作业。此外,如果故障转移的数目变得足够大以致需要附加故障转移或辅池计算资源,则可以驱逐在所述池的阈值段内的可抢占作业的某个部分以释放资源来容纳附加故障转移请求。以这种方式,可用阈值资源将减少至阈值极限以下的某个水平。

作为选项,可抢占作业或辅作业可以跨可用VM均匀地散布或者可以跨可用VM串联分布,以便在使用另一VM之前完全地消耗给定VM的资源。

示例系统

图1图示示例性系统100,该示例性系统100包括分布式系统200,该分布式系统200被配置为在虚拟计算环境300中运行在主VM实例350P的池上执行的服务360(诸如软件应用)。与用户130(诸如客户)相关联的用户设备120(诸如计算机)经由网络140与分布式系统200通信,以提供用于部署、移除或修改在虚拟计算环境300中运行的主VM实例350P的命令150。主VM实例350P的池中的主VM实例350P的数量可以基于从用户设备120接收的命令150而动态地改变。在一些示例中,软件应用360与MST服务相关联,并且每个主VM实例350P被配置为执行软件应用360的对应的各个服务实例362(例如,MST服务的单租户)。

虚拟环境300还包括运行辅作业的辅VM实例350S的池。例如,辅作业可以具有比在主VM实例350P上运行的服务360低的优先级,使得对辅作业的中断与对主实例的中断比问题更少。如在下面关于图2进一步讨论的,在一个或多个主VM实例350P变得不可用的情况下,分布式系统200执行计算设备112,该计算设备被配置成标识辅VM实例350S中的一个或多个以运行来自不可用VM实例的故障转移的作业。

在一些示例中,主VM实例350P的池与单个用户/客户130相关联,并且辅VM实例350S的池也供所述单个用户/客户130使用。在其他示例中,主VM实例350P的池包括主VM实例350P的多个子池,其中每个子池与不同的用户/客户130相关联并且与其他子池隔离。在这些示例中,在任一子池中的一个或多个主VM实例350P不可用的情况下,在多个不同的用户/客户130之间共享辅VM实例350S的池。

在一些实施方式中,虚拟计算环境300覆盖在分布式系统200的资源110、110a-n上。资源110可以包括硬件资源110和软件资源110。硬件资源110可以包括计算设备112(也被称为数据处理设备和数据处理硬件)或非暂时性存储器114(也被称为存储器硬件)。软件资源110可以包括软件应用、软件服务、应用编程接口(API)等等。软件资源110可以驻留在硬件资源110中。例如,软件资源110可以被存储在存储器硬件114中,或者硬件资源110(例如,计算设备112)可以执行软件资源110。

网络140可以包括各种类型的网络,诸如局域网(LAN)、广域网(WAN)和/或互联网。尽管网络140可以表示远程网络(例如,互联网或WAN),但是在一些实施方式中,网络140包括短距离网络,诸如局域网(LAN)。在一些实施方式中,网络140使用标准通信技术和/或协议。因此,网络140可以包括使用诸如以太网、无线保真(WiFi)(例如802.11)、全球微波接入互通(WiMAX)、3G、长期演进(LTE)、数字用户线(DSL)、异步传输模式(ATM)、InfiniBand(无限带宽)、PCI Express先进交换、蓝牙、蓝牙低功耗(BLE)等的技术的链路。类似地,网络132上使用的联网协议可以包括多协议标签交换(MPLS)、传输控制协议/网际协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、简单邮件传输协议(SMTP)、文件传输协议(FTP)等。在网络140上交换的数据可以使用包括超文本标记语言(HTML)、可扩展标记语言(XML)等的技术和/或格式来表示。此外,可以使用常规加密技术(诸如安全套接层(SSL)、传输层安全性(TLS)、虚拟专用网(VPN)、网际协议安全性(IPsec)等)来加密所有或某些链路。在其他示例中,代替上述技术或除了上述技术之外,网络140还使用自定义和/或专用数据通信技术。

如图2所示,由于在计划外和意外的故障、重新创建主VM实例350P时的延迟、和/或由于主VM实例350P的计划维护时间段,例如针对主VM实例350P的内核的关键安全补丁的更新,主VM实例350P可能变得不可用。当计划或者检测到一个或多个主VM实例350P的不可用性时,诸如在更新期间或者在故障期间,主实例可以自动地故障转移到辅VM 350S中的一个或多个。例如,分布式系统200执行计算设备112,该计算设备被配置成标识辅VM实例350S中的一个或多个以运行来自不可用VM实例的作业。在这方面,分布式系统维护与不可用的主VM实例350P相关联的一个或多个个体的服务实例362的可用性。因为所标识的一个或多个辅VM已经正在运行辅作业,所以可以下拔并且移除那些作业,以便释放用于来自已故障的主VM实例的作业的资源。例如,将辅服务或作业从辅池资源中驱逐,并且能够将辅池资源自动地分配给已故障的主资源的作业。在这方面,辅作业可以被认为是可抢占作业并且包括优先级比主资源上的服务或作业低的服务或作业。通过使用辅池中的计算资源来运行辅作业或可抢占作业,这种技术利用在其他情况下将是空闲的资源。这有利地避免不得不为辅作业分配附加的和分开的计算资源。这导致对网络资源的更高效使用并且潜在地减轻在其他情况下将不得不产生潜在地未充分利用的网络,从而降低HA成本。

虽然以上公开内容将资源称为VM实例,但是应该理解,可以使用其他类型的资源,诸如容器、裸金属环境中的服务器插槽等。例如,可以在“裸金属”环境中应用在辅资源上运行的辅作业的布置,在该“裸金属”环境中,服务器用作单租户物理服务器。更一般地,“裸金属”涉及移除虚拟化技术或用于从主机容器化的任何形式。例如,可以在整个物理机上运行作业,并且以类似于如何相对于VM处理故障来处理使所述物理机停机的故障。在这样的环境中,能够在特定裸金属主机上保留资源的插槽。能够在该插槽上创建的容器中运行辅作业。在裸金属示例中,应用不在VM中运行,而是相反地在物理机的操作系统(OS)上运行。所以当辅作业在VM或容器中时,主工作负载直接在机器的OS上运行。因此,本公开还适用于未使用虚拟化层的集群。

在图3所示的示例中,分布式系统200包括执行虚拟计算环境300的资源110(例如,硬件资源110)的集合210。虚拟计算环境300包括虚拟机管理器(VMM)320和运行一个或多个虚拟机(VM)350、350a-n的虚拟机(VM)层340,所述一个或多个虚拟机(VM)350、350a-n被配置为执行一个或多个软件应用360的实例362a、362a-n。每个硬件资源110可以包括一个或多个物理中央处理单元(pCPU)112(“数据处理硬件112”)和存储器硬件114。虽然示出的每个硬件资源110具有单个物理处理器112,但是任何硬件资源110可以包括多个物理处理器112。主机操作系统(OS)312可以在资源110的集合220上执行。

在一些示例中,VMM 320对应于虚拟机监视器320(例如,计算引擎),其包括被配置为创建、实例化/部署和执行VM 350的软件、固件或硬件中的至少一个。与执行一个或多个VM 350的VMM 320相关联的计算机(诸如数据处理硬件112)可以被称为主机310,而每个VM350可以被称为客户机。在此,VMM 320或虚拟机监视器被配置为向每个VM 350提供具有虚拟操作平台的相应客户操作系统(OS)354、354a-n,并且管理VM 350上的相应客户OS 354的执行。如本文所使用的,每个VM 350可以被称为“实例”或“VM实例”。在一些示例中,各种操作系统的多个实例可以共享虚拟化资源。例如,

VM层340包括一个或多个虚拟机350。分布式系统200使用户130能够按需启动VM350,即,通过经由网络140向分布式系统200发送命令150(图1)。例如,命令150可以包括与相应的操作系统312相关联的图像或快照,并且分布式系统200可以使用该图像或快照来为相应的VM 350创建根资源110。在此,命令150内的图像或快照可以包括引导加载器、相应的操作系统312和根文件系统。响应于接收到命令150,分布式系统200可以实例化相应的VM350,并且在实例化时自动地启动VM 350。VM 350模拟真实的计算机系统(例如,主机310),并且基于真实的计算机系统或假设的计算机系统的计算机架构和功能进行操作,该计算机架构和功能可能涉及专用硬件、软件或其组合。在一些示例中,分布式系统200在启动一个或多个VM 350之前,对用户130进行授权和认证。软件应用360的实例362,或简称为实例,是指在分布式系统200的处理硬件112上托管(在其上执行)的VM 350。

主机OS 312虚拟化底层主机硬件,并且管理一个或多个VM实例350的并行执行。例如,主机OS 312可以管理VM实例350a-n,并且每个VM实例350可以包括底层主机硬件的模拟版本或不同的计算机架构。与每个VM实例350、350a-n相关联的硬件的模拟版本被称为虚拟硬件352、352a-n。虚拟硬件352可以包括用于模拟主机310的一个或多个物理处理器112的一个或多个虚拟中央处理单元(vCPU)(“虚拟处理器”)(图3)。虚拟处理器可以可互换地称为与VM实例350相关联的“计算资源”。计算资源可以包括执行相应的单个服务实例362所需的目标计算资源级。

虚拟硬件352可以进一步包括与虚拟处理器通信并且存储可由虚拟处理器执行以执行操作的客户指令(例如,客户软件)的虚拟存储器。例如,虚拟处理器可以执行来自虚拟存储器的指令,该指令使虚拟处理器执行软件应用360的相应的个体服务实例362。在此,个体服务实例362可以被称为客户实例,所述客户实例无法确定其正由虚拟硬件352还是由物理数据处理硬件112执行。如果在相应VM实例350上执行的客户服务实例362或VM实例350本身发生故障或中止,则执行相应的个体服务实例362的其他VM实例将不受影响。主机的微处理器可以包括处理器级的机制,以使虚拟硬件352通过允许客户软件指令直接在主机的微处理器上执行而无需代码重写、重新编译或指令仿真,来有效地执行应用360的软件实例362。虚拟存储器可以可互换地称为与VM实例350相关联的“存储器资源”。存储器资源可以包括执行相应的个体服务实例362所需的目标存储器资源级。

虚拟硬件352可以进一步包括至少一个虚拟存储设备,其为物理存储器硬件114上的服务提供存储容量。该至少一个虚拟存储设备可以被称为与VM实例350相关联的存储资源。存储资源可以包括执行相应的个体服务实例362所需的目标存储资源级。在每个VM实例350上执行的客户软件可以进一步分配网络边界(例如,分配网络地址),相应客户软件可以通过该网络边界与可通过内部网络330(图3)、外部网络140(图1)或两者达到的其他过程通信。网络边界可以被称为与VM实例350相关联的网络资源。

在每个VM 350上执行的客户OS 354包括用于控制由VM实例350执行应用360的相应个体服务实例362、362a-n的软件。在VM实例350、350a-n上执行的客户OS 354、354a-n可以与在其他VM实例350上执行的其他客户OS 354相同或不同。在一些实施方式中,VM实例350不需要客户OS 354以便执行个体服务实例362。主机OS 312可以进一步包括为主机OS312的内核316保留的虚拟存储器。内核316可以包括内核扩展和设备驱动程序,并且可以执行某些特权操作,对在主机OS 312的用户进程空间中运行的过程禁止这些特权操作。特权操作的示例包括对不同地址空间的访问、对主机310中的特殊功能处理器单元(诸如存储器管理单元)的访问等等。在主机OS 312上运行的通信过程314可以提供VM网络通信功能的一部分,并且可以在用户进程空间或与内核316相关联的内核进程空间中执行。

参考图4,在一些实施方式中,在分布式系统200上运行的虚拟计算环境300包括可以位于不同的物理位置并且可以具有不同的功能和计算机架构的多个主机310、310a-n(例如,一个或多个数据处理装置,诸如机架式服务器或不同的计算设备)。主机310可以通过内部数据通信网络330(内部网络)彼此通信。内部网络330可以包括例如一个或多个有线网络(例如,以太网)或无线网络(例如,Wi-Fi)。在一些实施方式中,内部网络330是内联网。可选地,主机310还可以与诸如因特网的外部网络140上的设备通信。其他类型的外部网络也是可能的。

在所示的示例中,每个主机310执行相应的主机操作系统(OS)312、312a-n,该主机操作系统(OS)312、312a-n虚拟化主机310的底层硬件(即数据处理硬件112和存储器硬件114)并且管理多个VM实例350的并行执行。例如,主机操作系统312a-312n-1各自管理多个主VM实例350P的并行执行,以共同地提供主VM 350P的池,而在主机310n上执行的主机操作系统312n管理辅VM实例350S的池的执行。在此,专用主机(例如,主机310n)托管辅VM实例350S的整个池,由此确保在故障转移的情况下,有足够的资源可用于由辅VM实例350S使用(不需要故障转移辅VM实例350S迁移到具有足够资源的不同主机310)。然而,在其他示例中,可以跨多个主机310来实例化一个或多个辅VM实例350S,所述多个主机310也可以执行一个或多个主VM实例350P。

在一些实施方式中,虚拟机管理器320使用主VM管理器322在主VM实例350的池中创建和部署每个主VM实例350P以在指定的主机310上执行。VMM 320可以通过分配用于执行相应的个体服务实例362所需的计算资源级、存储器资源级、网络规范和/或存储资源级,来创建每个主VM实例350。因此,主VM实例350P的池中的每个主VM实例350P可以包括相应的VM类型380,其指示用于相应的主VM实例350的存储器资源需求、计算资源需求、网络规范需求或存储资源需求中的至少一项。在所示的示例中,主VM实例350P的池中的所有主VM实例350P具有类型A或类型B的VM类型380。因此,类型A的VM类型380可以包括与类型B的VM类型380不同的计算资源级、存储器资源级、网络规范或存储资源级中的至少一个。

VMM 320处的主VM管理器322可以维护部署到主VM实例350P的池中的每个VM实例350P的活动日志、每个VM实例350P的VM类型380以及在每个主VM实例350P上执行的相应的个体服务实例362。当主VM实例350P被部署到主VM实例350P的池中或从主VM实例350P的池中移除时,日志可以被更新。另外,可以基于将主VM实例350P分布在诸如建筑物、区域或地区的各种故障域中,将主VM实例350P的池进一步分成子池。在一些实施方式中,各个服务实例362的每一个在相应容器中执行,所述相应容器在具有多个其他容器的单个主VM实例350P上运行。因此,日志可以指示在每个主VM实例350P上运行的容器的列表,以及在每个容器中执行的相应服务实例362。

主VM管理器322进一步获得每个主VM实例350P的不可用率。例如,每个主VM实例350P可以包括对应的平均故障时间(MTTF),该MTTF指示主VM实例350P预期在引发故障之前可工作多长时间(例如,天数)。MTTF值可能是365天(例如,1年)或720天(例如,2年)。每个主VM实例350P的不可用率还可以包括用于重新创建所对应的主VM实例的预期时间长度(例如,缺货值)。例如,当分布式系统200等待资源(即,处理资源和/或存储器资源)变得可用于重新创建VM实例350时,VM实例350可以与缺货值相关联。能够通过观察具有相同或类似的VM类型(即,处理资源、存储器资源、存储资源、网络配置)的VM实例350的执行,来经由统计分析和/或机器学习技术获得用于重新创建每个主VM实例350P的MTTF和预期时间长度。

在一些示例中,主VM实例350P的池中的所有主VM实例350P包括相同的不可用率。在其他示例中,与类型A VM类型380相关联的主VM实例350P的不可用率不同于与类型B VM类型380相关联的主VM实例350P的不可用率。如上所述,每个主VM实例350P可以包括相应的MTTF值和缺货值,所述相应的MTTF值指示在发生故障之前期望主VM实例350P运行多长时间(例如,天数),所述缺货值指示用于重新创建主VM实例350P的预期时间长度。可以从所观察的监视数据以及用于随着时间观察相似VM实例350的执行的机器学习算法,来推导MTTF值和缺货值。

VMM 320可以进一步维护用于指示在主VM实例350P的池中的相应的主VM实例350P上执行的软件应用360的每个个体服务实例362的服务实例存储库324以及用于执行相应的个体服务实例362所需的目标资源级。VMM 320还可以在服务实例储存库324中维护正在每个辅VM实例350S中运行的辅作业的指示。在这方面,VMM 320可以在主VM 350P中的一个或多个发生故障时确定要从辅VM 350S驱逐哪些作业,以便在辅VM 350S上运行来自故障的主VM的实例。这种确定可以基于例如与辅作业相关联的优先级值、运行从已故障的主VM故障转移的主实例所需的空间量、撤出特定辅作业所需的时间量、已故障的主VM预期不可用的时间量、RM类型(例如,A或B)、或各种其他因素中的任一个。

在一些示例中,VMM 320包括维护调度器326,当主VM实例350P的池中的一个或多个主VM实例350P将不可用于离线执行的维护/更新时,该维护调度器326标识维护时间段。例如,维护调度器326可以指示在执行维护/更新的计划的维护时间段期间将不可用的主VM实例350P的数量。在一个示例中,分布式系统200以百分之二(2%)的部署率(或其他百分比/值),周期性地推出内核更新,使得在完成更新的计划维护时间段期间,主VM实例350P的池中的百分之二的主VM实例350P将不可用。内核更新可以在与VM实例350相关联的内核216中包括修复安全补丁。在一些示例中,VMM 320从计算设备304接收计划故障转移消息302,该消息指示在执行维护/更新的计划维护时间段期间将不可用的主VM实例350P的数量(或百分比)。计算设备304可以属于分布式系统200的管理员。可选地,当用户130想要更新主VM实例350P的池中的一个或多个主VM实例350P时,用户设备120可以经由外部网络140提供计划故障转移消息302。

在一些实施方式中,当客户/用户130部署大量的主VM实例350P并且具有用于防止与分布式系统200的其他用户/客户共享辅VM实例350S的池的特定联网或隔离需求时,辅VM实例350S的池是每个客户/用户130的,而不是全局的。在其他实施方式中,辅VM实例350S的池在分布式系统200的所有客户/用户之间的所有个体服务实例362之间共享。

在一些示例中,VMM 320包括辅VM管理器328,其可以确定如何将从主VM 350P故障转移的实例分配给辅VM 350S。例如,辅VM管理器328可以确定应该从哪些辅VM 350S驱逐哪些作业,以便为已故障转移的主VM实例腾出空间。如以上所提及的,这种确定可以基于例如与辅作业相关联的优先级值、运行从已故障的主VM故障转移的主实例所需的空间量、撤出特定辅作业所需的时间量、已故障的主RM预期不可用的时间量、VM类型(例如,A或B)、或各种其他因素中的任一个。可以暂时停止已驱逐的辅作业,直到已故障转移的主实例不再需要辅池资源为止。例如,一旦已故障的VM被备份并且正在运行主实例,辅VM就可以恢复先前驱逐的辅作业。在其他示例中,可以在宽限期之后适度地关闭并且然后杀死辅作业。例如,作业可以从系统接收它将在X秒内被关闭的通知,并且可以选择它完成适度关闭意味着什么。例如,一些应用可以选择将状态刷新到稳定存储。

根据一些实施方式,驱逐辅作业包括响应于检测到故障转移条件而将计算资源从辅作业下拨和转移到已故障或正故障的作业。例如,如果可抢占作业或辅作业正在辅VM350S之一中运行,则能够将指派给辅VM的资源从辅作业动态地转移到主作业或主要作业。资源的动态转移或分配可以包括逐渐地减少由辅作业正在使用的资源,同时将已释放的资源分配给主作业。例如,辅资源可以随着它们被释放而被分配。已释放的资源然后可以运行主作业。在正在动态地分配的资源包括CPU的情况下,可以压制CPU的数目或正在使用的每个CPU的性能以实现期望的结果。计算资源的下拨和重新分配可以影响辅作业的性能,但是至少提供用于它适度地关闭的机会,然而同时避免显著地影响主作业的性能。

可以将计算资源的下拨和重新分配设定成在预定时段例如所谓的“宽限期”期间发生。在此时段期间,随着由辅作业使用的计算资源被下拨,它们被分配以供主作业使用。一旦宽限期结束,辅作业就被终止,例如,辅作业的容器被拆除。在宽限期期间,计算资源在辅作业与主作业之间的重新分配实际上包括反比例关系。也就是说,在用于辅作业的计算资源被下拨或者缓降的同时,主作业能够从可提供给它的资源开始,并且当可提供给主作业的资源由于辅作业完成而被释放时,能够增加可提供给主作业的资源。

存在许多不同的方式,其中辅作业能够与主故障转移作业缓升其资源成比例地适度地缓降并且使用更少的资源。例如,能够动态地调谐容器的输入/输出(I/O)量。因此,可以为辅工作分配预定时间量,诸如10s、30s、2分钟等,以在被杀死之前逐步停止。预定时间量对所有辅作业来说可以是相同的,或者它可以基于作业的类型、分配给辅作业的资源、已故障的主作业的紧迫性、或任何其他因素而不同。在该预定时间量内,主作业故障转移到由辅作业释放的资源。作为另一示例,指派给辅作业的资源可以增量地例如每5s、10s、30s或其他时间间隔减少。随着这些资源被增量地释放,可以将它们分配给正在缓升的主故障转移作业。虽然这些是可以如何执行动态资源分配的几个示例,但是应该理解,许多其他方式是可能的。

执行动态资源分配的方式可以基于例如正在缓降的可抢占辅作业的类型。例如,需要许多I/O的辅作业能够在维护类似量的I/O的同时初步降低其CPU使用率,然后稍后减少其I/O。作为另一示例,动态资源分配可以基于辅作业在主作业故障时的处理状态。例如,如果辅作业仅在做少量计算,诸如小于特定预定义阈值,则能够在相对短的时间段内杀死该作业。例如,分配给辅作业以在它被杀死之前缓降的时间可以与正由辅作业执行的计算量成比例。

根据一些示例,不是在适度的缓降之后杀死辅作业,而是辅作业可以使用更少的资源来保持运行。例如,辅作业可以指定所需资源的范围,诸如在该范围的较低端的CPU的最小数目、存储器、I/O的量等、以及在该范围的较高端的资源的最大期望数目。在辅作业可能正在使用更接近所述范围的较高端的资源量来运行的同时,当发生主实例的故障转移时,辅作业可以缓降。例如,可以释放已分配资源中的一些以用于运行故障转移作业,使得辅作业然后使用更接近所述范围的较低端的资源量来运行。

存在如下情况:主作业可能在创建VM时被启动并且使用在那时可用的无论什么资源(例如,单个虚拟CPU(“vCPU”)),然后可能在故障转移时间的宽限期期间增加那些资源。作为示例,可以在辅VM上在可以称为空闲模式的模式下运行各种主作业,在该空闲模式下它们不被服务于业务。可以为这些作业分配适量的资源,诸如CPU、存储器、网络,因为所述资源的大多数通常被分配给辅作业。在此示例中,当运行主作业X的VM故障时,该主作业能够迅速地故障转移到辅VM,因为它不需要被移动。相反,主作业X的空闲模式将开始运行。

根据一些示例,辅VM管理器328可以包括用于控制辅作业的不同方面的多个分开的管理器。仅作为示例,辅VM管理器328可以包括用于控制关于辅资源的信息的集群资源管理器。此外,辅VM管理器328可以包括故障转移过渡管理器。当发生故障时,故障转移过渡管理器可以确定要故障转移到哪一个节点并且编排过渡。辅VM管理器328还可以包括可抢占作业调度器。例如,当接收到要运行可抢占作业的请求时,可抢占作业调度器可以找出在辅池中哪些资源可用并且将此类资源分配给请求。虽然将这些其他管理器描述为辅VM管理器328的可能的子管理器,但是应该理解,这些其他管理器中的一些或全部可以是由辅VM管理器328或者由诸如主CM管理器322、维护调度器326等的其他管理器处理的功能。在其他示例中,这些其他管理器中的一些或全部可以是VM管理器320内的附加管理器。

在一些情况下,VMM 320(或主机310)识别主VM实例350P的池中的主VM实例350P之一的不可用性。例如,每个主VM实例350P可以采用代理来收集操作状态370,该操作状态370指示主VM实例350P是正在操作还是由于故障而不可用。主机310除了彼此之外还可以将VM实例350的操作状态370传达给VMM 320。如本文所使用的,术语“代理”是广义的术语,涵盖其平常和普通的含义,包括但不限于部署在VM实例350内部的一部分代码(作为客户OS 354一部分和/或作为在客户OS 354上运行的应用)以标识VM实例350的操作状态370。因此,VMM320和/或主机310可以接收用于指示主VM实例350之一的不可用性的操作状态370,并且使不可用的主VM实例350P故障转移到辅VM实例350S之一,以开始执行与不可用的主VM实例350P相关联的个体服务实例362。在图3所示的例子中,操作状态370指示在主机310n-1上执行并且具有类型B的VM类型380的主VM实例350P之一的(例如,由于故障而导致的)不可用性,由此使得主VM实例350P故障转移到具有类型B'的VM类型380的辅VM实例350S,以开始执行与具有类型B型的VM类型380的不可用的主VM实例350P相关联的个体服务实例362。

VM管理器320可以选择哪些辅作业要抢占。可以基于多种因素中的任一个来以多种方式中的任一种执行这种选择。根据一个示例,VM管理器320可以在辅池中标识给它提供最多的资源的节点,诸如VM或裸金属。例如,它可以标识具有最多的CPU、最多的存储器、最多的I/O或这些的任何组合的节点。在一些示例中,机器学习技术可以用于预测哪一个节点将在给定时间点具有最多的可用资源。例如,可以随着时间的推移而跟踪主实例的故障以及被选择用于抢占以释放资源以进行故障转移的辅作业。这种信息可以用于创建用于预测特定主实例何时将故障的模型。该模型还可以预测哪一个辅作业要在那时抢占,例如通过确定哪些辅节点将在那时具有最多的可用资源。

根据其他示例,可以基于位置来选择要抢占的辅作业。例如,全球云提供商可能在世界各地的不同城市或国家拥有多个数据中心。可以选择与故障节点物理接近的节点来处理故障转移作业,使得可以在较短的物理距离上发送故障转移作业,并且因此可以更快地在所选节点上进行缓升。

根据又一示例,可以基于故障转移作业的应用类型和该应用所需的硬件资源的类型,来选择要抢占的辅作业。例如,一些应用可能需要图形处理单元(GPU)、加速器等。因此,可以选择具有故障转移应用所需的这种硬件资源的节点,并且可以抢占在此类节点上运行的辅作业。

软件应用(即,软件资源110)可以指引起计算设备执行任务的计算机软件。在某些示例中,软件应用可以称为“应用”、“app”或“程序”。示例应用包括但不限于系统诊断应用、系统管理应用、系统维护应用、文字处理应用、电子表格应用、消息传递应用、媒体流应用、社交网络应用以及游戏应用。

非暂时性存储器(例如,存储器硬件114)可以是用于基于临时或永久存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备(例如,数据处理硬件112)使用的物理设备。非易失性存储器114可以是易失性和/或非易失性可寻址半导体存储器。非易失性存储器的示例可以包括但不限于闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦可编程只读存储器(EPROM)/电子可擦可编程只读存储器(EEPROM)(例如,通常用于固件,诸如启动程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、相变存储器(PCM)以及磁盘或磁带。

图5是可用于实施本文档中所述的系统和方法的示例计算设备500的示意图。计算设备500旨在代表各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机以及其它适当的计算机。本文所示的组件、它们的连接和关系以及它们的功能仅是示例,并不意味着限制本文档中描述和/或要求保护的发明的实施方式。计算设备500包括处理器510、存储器520、存储设备530、连接到存储器520和高速扩展端口550的高速接口/控制器540、以及连接到低速总线570和存储设备530的低速接口/控制器560。组件510、520、530、540、550和560中的每个组件使用各种总线互连,并且可以安装在公共主板上或以其它适当的方式安装。处理器510能够处理用于在计算设备500内执行的指令,包括存储在存储器520中或存储在存储设备530上的指令,以在诸如耦合到高速接口540的显示器580之类的外部输入/输出设备上显示用于图形用户界面(GUI)的图形信息。在其它实施方式中,可以适当地使用多个处理器和/或多个总线、以及多个存储器和存储器类型。而且,可以连接多个计算设备500,其中每个设备提供必要操作的部分(例如,作为服务器组、刀片服务器组或多处理器系统)。

存储器520在计算设备500内非暂时性地存储信息。存储器520可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非暂时性存储器520可以是用于临时或永久地存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备500使用的物理设备。

非易失性存储器的示例包括但不限于闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦可编程只读存储器(EPROM)/电子可擦可编程只读存储器(EEPROM)(例如,通常用于固件,诸如启动程序)。

易失性存储器的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、相变存储器(PCM)以及磁盘或磁带。

存储设备530能够为计算设备500提供大容量存储。在一些实施方式中,存储设备530是计算机可读介质。在各种不同的实施方式中,存储设备530可以是软盘设备、硬盘设备、光盘设备或磁带设备、闪存或其它类似的固态存储设备,或设备阵列,包括在存储区域网络或其它配置中的设备。在另外的实施方式中,计算机程序产品有形地体现为信息载体。该计算机程序产品包含在被执行时执行一种或多种方法,诸如上述那些方法的指令。信息载体是计算机或机器可读介质,诸如存储器520、存储设备530或处理器510上的存储器。

仅通过示例,高速控制器540管理计算设备500的带宽密集型操作,而低速控制器560管理较低带宽密集型操作。在一些实施方式中,高速控制器540耦合到存储器520、显示器580(例如,通过图形处理器或加速器)和可以接受各种扩展卡(未示出)的高速扩展端口550。在一些实施方式中,低速控制器560耦合到存储设备530和低速扩展端口590。可能包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口590可以例如通过网络适配器耦合到一个或多个输入/输出设备,例如键盘、定点设备、扫描仪或网络设备,例如交换机或路由器。

如图所示,可以以多种不同形式来实施计算设备500。例如,计算设备500可以被实施为标准服务器500a或在一组这样的服务器500a中多次实施,被实施为膝上型计算机500b或被实施为机架服务器系统500c的一部分。

本文所述的系统和技术的各种实施方式能够以数字电子和/或光学回路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合实现。这些各种实施方式能够包括在一个或多个计算机程序中的实施方案,该计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用的或通用的,被耦合以从存储系统、至少一个输入设备以及至少一个输出设备接收数据和指令,并将数据和指令发送到这些设备。

这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且能够以高级过程和/或面向对象的编程语言和/或以汇编/机器语言来实施。本文中使用的术语“机器可读介质”和“计算机可读介质”是指任何计算机程序产品、非暂时性计算机可读介质、用于向可编程处理器提供机器指令和/或数据的装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD),包括用于接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。

本说明书中所述的过程和逻辑流程能够由执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能的一个或多个可编程处理器来执行。过程和逻辑流程也能够由专用逻辑电路执行,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。例如,适于执行计算机程序的处理器包括通用和专用微处理器、以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备例如磁盘、磁光盘或光盘,或可操作地耦合至大容量存储设备以从中接收数据或对其传输数据,或者两者。然而,计算机不是必须具有此类设备。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器能够由专用逻辑电路补充或被并入专用逻辑电路中。

为了提供与用户的交互,本公开的一个或多个方面能够在具有显示设备和可选的键盘与定点设备的计算机上实施,显示设备例如是CRT(阴极射线管)、LCD(液晶显示器)监视器或触摸屏,以向用户显示信息,定点设备例如为鼠标和轨迹球,用户能够通过其向计算机提供输入。其它类型的设备也能够用于提供与用户的交互;例如,提供给用户的反馈能够为任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且能够以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机能够通过向用户使用的设备发送文档以及从用户使用的设备接收文档来与用户进行交互;例如,通过响应于从Web浏览器收到的请求,将网页发送到用户客户端设备上的Web浏览器。

已经描述了许多实施方式。然而,应理解,在不脱离本公开的精神和范围的情况下,可以做出各种修改。因而,其它实施方式也在所附权利要求的范围内。

示例方法

除了上述和附图中图示的操作之外,现在将描述各种操作。可以理解,不必以下面描述的精确顺序执行以下操作。而是,可以以不同的顺序或同时地处理各种步骤,并且还可以添加或省略步骤。

图6图示在辅资源上运行辅作业的示例方法600,其中在需要运行主实例时释放这些资源。

在框610中,指定计算资源的主池用于运行一个或多个主作业。计算资源可以包括例如虚拟机、容器、服务器等。主作业可以与为客户执行的服务有关,例如MST服务。

在框620中,计算资源的辅池被指定用于运行一个或多个辅作业。辅作业不同于主作业,并且优先级低于主作业。例如,可以为辅作业指配较低的优先级值,并且可以与可抢占任务相关,在这些任务中的中断比对主作业的中断的危害要小。计算资源的辅池可以是与主池相同类型的资源,也可以是不同。例如,辅资源可以具有不同的计算能力、网络容量等。虽然在一些示例中,相同数量的辅资源可以被指定为多个主资源,但是在其他示例中,辅资源的数量可以不同。

在框630中,检测与一个或多个主作业中的给定一个相关联的故障情况。例如,故障情况可能是计划的停机(诸如系统更新)或意外故障。

在框640中,在检测到故障情况之后,一个或多个辅作业中的给定的一个被抢占。例如,辅作业可以被暂停,并且可以从辅资源中驱逐出。此时,此类辅资源已经释放能力以处理一个或多个主作业。

在框650中,将与故障情况相关联的主作业分配给辅资源。在这方面,可以以最小的中断来继续主工作的服务。但是,与此同时,备份资源不是空闲的。

根据一些示例,当主资源被恢复并且主作业在主资源上被恢复时,被驱逐的辅作业可以被恢复到辅资源。根据其他示例,辅作业可以在一段时间后终止。

这种技术允许诸如VM的计算资源的有效分配,其产生了操作效率并降低操作成本。例如,这种技术不是使计算资源池处于空闲状态,而是允许将这些资源用于辅作业,其在其它情况下将产生对计算和网络资源的需求。在这方面,使用其他空闲资源增加网络和计算环境的运营效率。前述技术在MST服务中尤其有利,其中多个用户(租户)的每一个有他们自己的数据库,并且每个数据库都有为该特定用户运行的多个应用。但是,应理解,上述特征也可以应用于其他类型的服务架构中。

除非另有说明,否则前述替代示例不是互相排斥的,而是可以以各种组合实现以实现独特的优点。因为可以在不背离权利要求所限定的主题的情况下利用以上讨论的特征的这些和其他变形以及组合,所以对实施例的前述描述应当通过说明的方式而不是通过对权利要求所限定的主题进行限制的方式来进行。另外,提供在此描述的示例以及用短语表达为“诸如”、“包括”等的子句不应被解释为将权利要求的主题限制于特定示例;相反,这些示例仅旨在说明许多可能的实施例之一。此外,不同附图中的相同附图标记可以标识相同或相似的元件。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号