本申请要求于2019年8月16日提交的美国专利申请No.16/543,250的优先权,其全部内容通过引用并入本文。
技术领域
本公开总体上涉及向分布式集群应用提供关于正在运行该分布式集群应用的物理服务器集群的信息。
背景技术
云计算为用户提供对计算资源的访问,以满足用户的计算资源需求。在一些示例中,服务供应商可以管理并向用户提供云计算资源以满足他们的需求,而无需用户投资和维护他们自己的计算基础设施。云计算常常涉及对数据中心网络的使用,该网络中包含服务器、路由器和为用户提供计算资源的其他设备,例如计算资源、网络资源、存储资源、数据库资源、应用资源等。可以使用虚拟化技术来为用户分配计算资源中对于用户的需求高峰保持可用的部分。计算资源的该虚拟化部分或虚拟化网络可以根据给定用户的计算需求按比例放大(或缩小),而无需维护过多的计算容量。例如,在线零售商可以缩放计算资源的虚拟化网络以满足假日购物季节期间不断增长的需求,而无需维护用于提供零售商在线状态的底层物理计算基础设施。
为了支持使用云计算的应用,可以利用集群技术将多个物理服务器组织成集群(或表现得像单个系统的一组服务器)。集群服务器可以提高集群应用或服务的可用性和可缩放性。例如,如果物理底层集群中的一个或多个节点(或服务器)发生故障,则其他节点开始提供应用或服务,以使得该故障不会终止用户的集群应用的功能。
通常,单个物理服务器可以使用虚拟化技术运行集群应用中的多个应用实例,例如多个虚拟机和/或运行该应用的多个应用容器。集群应用的应用容器每个都可以访问(例如,读取、写入等)跨多个物理服务器(例如在数据库实例中)维护的一组稳定的复制数据。通过运行在物理底层集群中的不同物理服务器上维护同一数据集的数据库实例,为应用容器在访问该数据集时提供了冗余和高可用性。因此,为以更高的冗余和可用性维护同一数据集,可能是有利的是,在物理底层集群中的不同物理服务器上实例化数据库实例(或其他存储实例)。
附图说明
下面参考附图进行详细描述。在各图中,参考编号最左边的(一个或多个)数字标识该参考编号第一次出现的图。在不同的图中使用相同的附图标记表示相似或相同的项。附图中描绘的系统未按比例绘制,并且各图中的组件可能未按比例绘制。
图1图示了示例环境的系统架构示图,在该示例环境中,服务器标识组件向分布式集群应用提供关于正在运行该分布式集群应用的物理服务器集群的信息。
图2图示了集群节点上的应用容器执行DNS查找以标识正在运行最近的数据库实例的物理服务器的示例流程的组件示图。
图3图示了图示出云计算网络的示例组件的组件示图。
图4图示了针对虚拟资源的示例方法的流程图,该虚拟资源支持集群应用接收关于在物理服务器集群中最近的物理服务器上运行的数据库实例的信息并且访问该数据库实例。
图5图示了针对应用容器的示例方法的流程图,该应用容器支持集群应用接收关于在物理服务器集群中最近的物理服务器上运行的数据库实例的信息并且访问该数据库实例。
图6图示了用于向支持集群应用的应用容器提供关于正在运行该集群应用的物理服务器集群的信息的示例方法的流程图。
图7图示了计算系统示图,该计算系统示图图示出可用于实现本文公开的技术的各方面的数据中心的配置。
图8是示出用于实现服务器设备的说明性计算机硬件架构的计算机架构示图,该服务器设备可以用于实现这里呈现的各种技术的各方面。
具体实施方式
概述
本发明的各方面在独立权利要求中陈述并且优选特征在从属权利要求中陈述。一个方面的特征可以单独应用于每个方面或与其他方面组合。
本公开描述了用于向集群应用的虚拟资源(例如,容器、虚拟机等)提供关于正在运行该分布式集群应用的物理服务器集群的信息的技术。该方法包括在物理服务器集群中的物理服务器上执行支持集群应用的虚拟资源。该方法还包括接收对在物理服务器集群中离该物理服务器最近的特定物理服务器上运行的数据库实例的指示。数据库实例可以包括在一组数据库实例中,该组数据库实例在物理服务器组中的各个物理服务器上维护公共数据集。此外,该方法包括至少部分地基于在离物理服务器最近的特定服务器上运行的数据库实例,使虚拟资源访问该特定物理服务器上的数据库实例。
此外,本文描述的技术可由具有存储有计算机可执行指令的非暂态计算机可读介质的系统和/或设备执行,这些计算机可执行指令在由一个或多个处理器执行时执行上述方法。
示例实施例
服务器虚拟化的有用性(从虚拟机到容器再到存储装置)已经导致云计算和数据中心的快速增长。利用虚拟化技术,单个物理服务器可以使用服务器虚拟化(例如,称为管理程序的软件层)托管多个应用、操作系统和/或数据存储实例。以此方式,多个应用或进程可以在单个物理服务器上执行以提高该物理服务器的整体硬件利用率。一些云计算系统可以利用应用集群(或软件集群),其中多个物理服务器变成物理服务器集群或服务器组,就像单个系统一样。物理集群中的每个服务器均维护同一数据集并共同运行或支持同一应用(本文称为集群应用)。例如,虚拟机(VM)和/或应用容器可以运行应用的进程以提供分布式集群应用。在物理服务器集群上运行的分布式集群应用具有多种优势,例如提高的可用性、提高的可伸缩放性和故障转移保护。
在集群应用中,多个应用容器(或其他虚拟资源)可以在单个服务器上运行,其中每个应用容器运行应用或服务的单独实例。由于这些应用容器正在运行同一应用的实例,因此这些容器通常需要访问支持该应用或由该应用使用的同一数据集。例如,在线零售商可以利用云计算来支持包括有多个应用容器的集群应用,将这些应用容器进行缩放以处理使用这些零售商的在线站点或应用所做出的订单。这些应用容器可能需要访问公共数据集,例如零售商提供的商品的商品目录、用于执行交易的数据等。因此,物理服务器集群可以进一步支持在这些物理服务器上运行的一组数据库实例以维护这些物理服务器上的可由应用容器访问的同一数据集。这些数据库实例可以在多个物理服务器上的容器本身内运行,使得这些容器形成了集群本身,或者形成了数据库实例组。
通常,每个数据库实例可能具有与存储有实际持久数据集或卷的物理服务器绑定的亲缘关系(affinity)。可以向运行集群应用的实例的应用容器提供数据库实例组中的成员列表,因为这些应用容器可以利用底层集群中任意物理服务器(或节点)上的任意数据库实例(由于组中的每个数据库实例都维护同一数据集)。然而,因为这些容器可以利用任意数据库实例,所以当应用容器访问(例如,读取或写入)特定数据库实例时,效率可能低下。例如,应用容器可以在集群物理服务器中的第一物理服务器上运行,并确定访问由在集群物理服务器中的第二物理服务器上运行的数据库实例所维护的数据集。
然而,因为应用容器对集群物理服务器的基础设施以及数据库实例在何处运行一无所知,所以第二物理服务器有可能位于离第一物理服务器相对较远的距离上,而这可能导致不期望的延迟。例如,第一服务器与第二服务器之间的距离可能很大和/或可能需要在节点之间进行大量跳跃,这使得在应用容器对数据集进行访问时的延迟过大。因此,因为由各种数据库实例维护的任意数据集都有可能被应用容器所利用,并且因为应用容器对正在运行数据库实例的服务器的位置一无所知,所以应用容器可能会访问位于底层集群中导致不期望延迟的物理服务器上的数据集。
本公开描述了一种技术,用于向集群应用的应用容器(和/或其他虚拟资源)提供指示包括在物理服务器集群中的正在运行分布式集群应用的服务器的位置的信息。如上所述,集群应用可以访问由在物理服务器集群上运行的组数据库实例跨物理服务器集群复制和维护的公共数据集。本文描述的技术包括向应用容器提供关于哪个数据库实例正在本地运行与该应用容器相同的物理服务器上或以其他方式位于“最接近”该应用容器的信息。以此方式,应用容器可以以维护数据集的本地数据库实例或以其他方式最近的数据库实例为目标,以减少由应用容器进行的访问事件的延迟。
在一些示例中,服务器标识组件可以标识在物理集群中的不同物理服务器上实例化了哪些容器或其他虚拟资源。例如,服务器标识组件可以包含在应用容器、数据库实例等的调度器/编排器中或与其相关联。当物理服务器或节点被添加到底层物理集群时,服务器标识组件便可以标识在物理集群中的每个物理节点上实例化的数据库实例或其他容器服务。当新的数据库实例被实例化时,服务器标识组件可以使用为每个数据库实例提供唯一可标识的DNS条目的方案而以算法方式命名该实例。
在一些示例中,服务器标识组件可以维护各种物理集群数据,例如指示物理服务器在集群中的位置的服务器位置数据、指示不同物理服务器之间的延迟的延迟数据、指示物理服务器有多少容量的资源可用性数据和/或其他数据。服务器标识组件可以周期性地或连续地收集数据以确定物理服务器相对于彼此的位置,以及物理服务器之间的访问事件的总延迟。服务器标识组件可以存储关于哪些数据库实例正在运行在物理集群中的哪些物理服务器上的指示,还有关于容器在何处被实例化、在何处运行或将在何处被实例化的指示。服务器标识组件可以基于各种度量来确定容器的最近数据库实例,例如正在运行容器和数据库实例的各个服务器之间的地理接近度和/或延迟。
当新的容器应用在物理集群上增添或实例化时,服务器标识组件可以向该容器应用传送最近的数据库实例(例如,本地运行的数据库实例)的名称或其他指示。容器应用然后可以存储对最近的数据库实例的指示,并且当容器应用需要访问(例如,读取、写入等)由该数据库实例维护的复制数据集时,容器应用可以与该最近的数据库实例通信。
在一些示例中,服务器标识组件可以向应用容器提供数据库实例的排名列表,其中数据库实例基于它们与应用容器有多近(例如,位置接近度、延迟时间等)进行排名。应用容器可以访问列表中指示的排名最高或最近的数据库实例。然而,如果对列表中排名靠前的数据库实例的访问出现问题(例如,超时、数据库实例故障等),应用容器可以在排名数据库实例列表中向下移动以访问下一个离容器最近的数据库实例。以此方式,减少了应用容器访问数据库实例所需的时间和资源,并且提高了应用容器的性能。
尽管本文描述的技术主要是参考应用容器的,但是这些技术通常适用于包括虚拟机在内的任何虚拟计算资源。此外,虽然参考分布式数据库应用描述了这些技术,但这些技术同样适用于部署在物理服务器集群之上的任何分布式应用。例如,这些技术可以同样适用于提供对象存储或其他长期存储和/或更大对象存储的存储实例。
本文描述的技术提供了关于分布式集群应用的各种改进和效率。例如,本文描述的技术可以减少应用容器或集群应用的其他虚拟资源处理工作负载和/或响应请求的时间量或延迟。此外,由于应用容器访问的是最近的数据库实例,而不是访问可能位于物理集群中远离应用容器的服务器上的数据库实例,因此可以使用本文描述的技术减少跨物理服务器集群的网络流量的量。
下面将参考附图更全面地描述本公开的某些实施方式和实施例,其中示出了各个方面。然而,这些各个方面可以以许多不同的形式实现并且不应被解释为限于本文阐述的实施方式。本公开包括如本文所述的实施例的各种变体。相同的数字始终指代相同的元素。
图1图示了示例环境100的系统架构图,在该示例环境中,服务器标识组件向分布式集群应用提供关于正在运行该分布式集群应用的物理服务器集群的信息。
在一些示例中,云计算网络102的计算资源可以由虚拟工作负载编排组件104利用以实例化、支持、运行和/或执行虚拟资源(例如,虚拟机、容器等)。云计算网络102可以包括受管物理服务器106(1)-106(N)的集群,其中,N是大于“1”的任何整数。服务器106可以存储在位置跨地理区域分布的数据中心中。云计算网络102可以是分布式网络,用户(通常是客户)可以通过该分布式网络经由用户设备进行交互以管理由云计算网络102提供的服务或以其他方式与由云计算网络102提供的服务交互。
云计算网络102可以提供计算系统资源的按需可用性,这些资源例如是数据存储、计算能力(例如,CPU、GPU等)、网络、数据库等,而无需用户的直接主动管理。在一些示例中,云计算网络102可以由服务供应商管理和维护,使得用户不必为他们的计算资源需求投资和维护计算基础设施。通常,可以向用户提供对云计算网络102中的一部分计算资源的访问或分配使用。云计算网络102可以基于个体用户的需求进行缩放,例如通过增加资源或减少资源。云计算网络102中的一些部分可以使用硬件虚拟化来分配,使得云计算网络102的这些部分可以由用户来配置和管理(例如,安全配置、负载平衡配置等)。然而,云计算网络102不必由服务供应商管理,并且可以由任何实体管理,包括运行应用或服务的用户本身。在
一些示例中,云计算网络102的用户可以请求将云计算网络102中的多个物理服务器106分组到物理集群110中,其中,每个服务器106是集群节点108。通常,物理集群110可以指代在系统或网络中一起工作以向用户提供应用或服务的更高可用性等好处的一组服务器106。物理集群110中的每个节点108可以运行或执行一个或多个虚拟资源,例如运行应用、服务、进程等的应用容器112、虚拟机等。通过在不同集群节点108上运行应用容器112,物理集群110可以通过允许另一服务器106在中断事件中接管来减少停机时间和中断。例如,如果这些服务器106中的一个经历服务中断,则该服务器106上的工作负载可以在客户端经历任何停机时间之前重新分布到另一服务器106。以此方式,物理集群110可以以更高级别(相比单个服务器106所提供的级别)的可用性、可靠性和可缩放性来支持应用和服务。
如上所述,物理集群110中的每个物理服务器106(或集群节点108)可以支持一个或多个应用容器112。应用容器112可以各自封装应用或服务的文件、依赖项、库等以在物理服务器106的操作系统上运行。在一些示例中,单个物理服务器106可以同时在同一操作系统上运行多个应用容器112。以此方式,物理服务器106可以运行多个应用容器112,每个应用容器运行同一应用的各独立实例。然而,在一些实例中,物理服务器106可以运行一个或多个虚拟机,其中每个虚拟机运行应用、服务或其他进程的一独立实例。应用容器112通常可以运行或支持任何服务、应用、集群环境等。
在一些示例中,集群应用的应用容器112可以访问(例如,读取、写入等)跨多个物理服务器106维护的一个或多个数据集副本116(1)-116(N),例如通过在存储有数据集副本116的物理服务器116上运行的相应数据库实例114。数据库实例114可以包括在运行在物理集群110上的数据库实例组118中。例如,数据库实例114可以在多个物理服务器106上的容器本身内运行,使得这些容器形成了集群本身,或者形成了数据库实例组118。
通常,每个数据库实例114具有与存储有实际持久数据集副本116或卷的物理服务器106绑定的亲缘关系。通过运行在物理集群110中的不同物理服务器106上维护同一数据集116的数据库实例114,为应用容器112在访问数据集116时提供了冗余和高可用性。因此,为以更高冗余和可用性维护数据集副本116,可能是有利的是,在物理集群110中的不同物理服务器106上实例化数据库实例114(或其他存储实例)。
如上所述,应用容器112通常可以利用组118中的任何数据库实例114,因为这些数据库实例维护公共数据集副本116。然而,当应用容器112访问(例如,读取或写入)特定的数据库实例114时可能存在低效率。例如,应用容器112可以在物理集群110中的第一物理服务器106(1)上运行,并且确定访问由在物理集群110中的第二物理服务器106(N)上运行的数据库实例114(1)所维护的数据集副本116(N)。然而,第二物理服务器106(N)可能位于离物理集群110中的第一物理服务器106(1)相对较远的距离,这可能导致不期望的延迟。
本文描述的技术包括收集各种数据,例如指示应用容器112和数据库实例114正在哪个物理服务器106上运行的物理集群110的基础设施数据和位置数据。在一些示例中,虚拟工作负载编排组件104可以是应用容器112的编排平台,该编排平台在集群环境中管理容器化应用。虚拟工作负载编排组件104可以执行或管理诸如容器112部署、缩放、配置、版本控制、滚动更新之类的任务。虚拟工作负载编排组件104可以包括调度器组件120,该调度器组件通过将应用容器112部署到集群节点108来管理集群应用。通常,根据本领域已知的技术,调度器组件120尝试将应用容器112和/或数据库实例114与集群节点108上的合适资源集相匹配。
虚拟工作负载编排组件104可以包括服务器标识组件112,该服务器标识组件确定应用容器112和数据库实例114正在哪个物理服务器106上运行。例如,服务器标识组件122可以标识将在物理集群110中的每个集群节点108上实例化的应用容器112、数据库实例114和/或其他容器服务。当新的数据库实例114被实例化时,服务器标识组件122可以使用为每个数据库实例114提供唯一可标识的DNS条目的方案而以算法方式命名该数据库实例114。服务器标识组件122可以唯一地命名数据库实例114,使得应用容器112可以执行DNS查找以标识数据库实例114所在的位置。
在一些示例中,服务器标识组件122可以维护物理集群110的各种数据,例如指示物理服务器106在物理集群110中的位置的服务器位置数据、指示不同物理服务器106之间的延迟的延迟数据、指示物理服务器106具有多少容量的资源可用性数据和/或其他数据。服务器标识组件122可以周期性地或连续地收集数据以确定物理服务器106相对于彼此的位置,以及物理服务器106之间的访问事件的总延迟。服务器标识组件122可以存储关于哪些数据库实例114正在运行在物理集群110中的哪些物理服务器106上的指示,还有关于应用容器112在何处被实例化、在何处运行或将在何处被实例化的指示。服务器标识组件122可以基于各种度量来确定应用容器112的(一个或多个)最近数据库实例114,例如正在运行应用容器112和数据库实例114的各个物理服务器106之间的地理接近度和/或延迟。
当新的容器应用112在物理集群110上增添或实例化时,服务器标识组件122可以将最近的数据库实例114(例如在本地运行的数据库实例)的名称或其他指示传送到该容器应用112。额外地或替代地,服务器标识组件122可以连续地或周期性地向容器应用112发送对最近的数据库实例114的更新指示。容器应用112然后可以存储对最近数据库实例114的指示,并且当容器应用112需要访问(例如,读取、写入等)由该数据库实例114维护的数据集副本116时,容器应用112可以与该最近的数据库实例114通信。
在一些示例中,服务器标识组件122可以向应用容器112提供数据库实例114的排名列表124,其中数据库实例114基于它们离被提供该列表124的应用容器112有多近(例如,位置接近度、延迟时间等)进行排名。应用容器112可以访问在排名列表124中指示的排名最高或最近的数据库实例112。然而,如果访问排名列表124中排名最高的数据库实例114出现问题(例如,超时、数据库实例故障等),则应用容器112可以在排名数据库实例114的排名列表124中向下移动以访问下一个离应用容器112最近的数据库实例114。以此方式,减少了应用容器112访问数据库实例114所需的时间和资源量,并且提高了应用容器112的性能。
如图2中更详细地描述的,应用容器112可以执行DNS查找以基于排名列表124中提供的数据库实例114的名称来标识最近的数据库实例114的位置。然而,在一些示例中,与排名列表124的情况相反的是,可以仅向应用容器112提供仅最近的数据库实例114的指示或名称。
如图所示,在集群节点108(1)上运行的应用容器112可能已经接收到关于数据库实例114(1)正在集群节点108(1)上本地运行着并且数据库实例114(1)是维护数据集副本116(1)最近的实例的指示。因此,在集群节点108(1)上运行的应用容器112可以访问由数据库实例114(1)维护的数据集副本116(1)。如进一步所示,在集群节点108(2)上运行的应用容器112可以接收关于最近的数据库实例114(1)正在集群节点108(1)上运行着的指示,并访问由该数据库实例114(1)维护的数据集副本116(1)。此外,在一些示例中,如果最近的数据库实例114发生故障,则应用容器112可以开始访问由虚拟工作负载编排组件104提供的排名列表124中的下一个最高排名的数据库实例114。
在一些示例中,虚拟工作负载编排组件104可以对数据库实例114的数目设置上限,使得数据库实例组118中的成员数目小于物理集群110的大小(或成员数目)。当底层物理集群110中存在大量物理服务器106时,此上限可能是有益的或合乎需要的。作为另一示例,虚拟工作负载编排组件104可能希望将数据库实例114限制为物理节点成员和避免基于虚拟机(VM)的节点成员。
在一些示例中,应用容器112的数目可以基于与集群应用交互的用户126的数目来缩放。用户126可以包括经由各自的用户设备128与云计算网络102交互的个体用户、用户组、组织、企业或其他实体中的一者或多者。用户设备128可以是能够经由合适的数据通信网络130连接到云计算网络102的任何类型的计算设备,例如但不限于膝上型或台式计算机、平板计算设备、服务器计算机、电视或移动电话。云计算网络102的运营商所雇用的管理用户——例如管理云计算网络102的操作的管理员——也可以以类似的方式连接、管理和利用由服务供应商网络102提供的资源。
用户126可以经由(一个或多个)网络130提供输入数据132以与由在物理集群110上运行的应用容器112支持的集群应用交互。例如,用户126可以提交诸如处理数据、取回数据、存储数据之类的请求,使得增加或减少应用容器112以基于需求处理请求。
在一些情况下,服务器标识组件122可能不包括在虚拟工作负载编排组件104中。相反,服务器标识组件122可以在另一个服务或组件中,这取决于云计算网络102的架构和相关联的组件。在进一步的示例中,服务器标识组件122可以包括在调度器组件120中。通常,服务器标识组件122的逻辑可以位于不同的位置、与不同的实体相关联、在不同的服务器上运行、包括跨多个服务器的逻辑、和/或是取决于所利用的架构的任何其他布置。
图2图示了集群节点108上的应用容器112执行DNS查找以标识正在运行最近的数据库实例114的物理服务器106的示例流程的组件示图200。如图所示,服务器标识组件122可以向在集群节点108(1)上运行的应用容器112提供数据库实例114的名称的排名列表124(1)。应用容器112可以在集群节点108(1)本地存储数据库实例114的排名列表124(1)。
在一些示例中,排名列表中的数据库实例114的名称可以指示相应数据库实例114正在哪个集群节点108上运行。例如,指示数据库实例114的名称还可以指示相关联的集群节点108的名称。此外,名称还可以指示数据库实例114是在本地集群节点108上(例如,应用容器108和数据库实例114在同一集群节点108上运行)还是在远处的集群节点108上。
为了确定正在执行最近的数据库实例114的集群节点108的地址,应用容器112可以利用DNS服务器204来执行DNS查找202。例如,应用容器112可以在DNS查找请求202中向DNS服务器204转发或提供最近的数据库实例114的名称(例如,域名)。然后DNS服务器可以在DNS表206中找到对应于该最近的数据库实例114的名称的条目。地址可以包括IP地址、MAC地址和/或可以定位最近的数据库实例114的任何其他类型的地址。DNS服务器204可以标识对应的地址并将该地址返回到集群节点108(1)上的应用容器112。应用容器112然后可以使用从DNS服务器204提供的地址来访问数据库实例114(1)。在一些实例中,最近的数据库实例114是在与应用容器112相同的集群节点108(1)上运行的本地数据库实例114(1)。然而,在一些示例中,最近的数据库实例114可以位于物理集群110中的离集群节点108(1)上的应用容器112最近(例如,最低的延迟、最近的地理接近度等)的另一集群节点108上。
图3图示了云计算网络102的示例组件的组件示图300。如图所示,服务供应商网络102可以包括一个或多个硬件处理器302(处理器),这些硬件处理器被配置成执行一个或多个存储指令。(一个或多个)处理器302可包括一个或多个核。此外,云计算网络102可以包括一个或多个网络接口304,这些网络接口被配置成提供云计算网络102与其他设备(例如,(一个或多个)用户设备128)之间的通信以及云计算网络102中的设备(例如,集群节点108、负载平衡器、路由器等)之间的通信。网络接口304可以包括被配置成耦合到个域网(PAN)、有线和无线局域网(LAN)、有线和无线广域网(WAN)等的设备。例如,网络接口304可以包括与以太网、Wi-FiTM等兼容的设备。
云计算网络102可以包括存储一个或多个操作系统310的计算机可读介质306。(一个或多个)操作系统310通常可以支持云计算网络102中的设备的基本功能,例如在设备上调度任务、在设备上执行应用、控制外围设备等等。计算机可读介质306还可以存储虚拟工作负载编排组件104,该组件被配置成在由(一个或多个)处理器302执行时至少执行本文描述的功能。除了调度器组件120和服务器标识组件122之外,虚拟工作负载编排组件104还可以存储一个或多个控制器组件312和一个或多个API 314。
控制器组件312可以执行例行任务以确保数据库实例114和/或应用容器112的期望状态与观察到的状态相匹配。例如,控制器组件312可以确定正确数目的应用容器112和/或数据库实例114正在为它们各自的集群或组运行。例如,控制器组件312可以标识物理服务器106的状态并在服务器106停机时做出响应。在一些示例中,控制器组件312可以标识要响应的物理服务器的状态,例如当服务器106内的组件使服务器106“停机”时、当虚拟机实例发生故障时和/或当控制器组件312要做出响应的任何其他事件可能发生时。API 314通常可以作为用于虚拟工作负载编排组件104的声明式配置方案的基础。
云计算网络102还可以包括上述物理集群110,该物理集群又包括正在执行应用容器112和数据库实例114的集群节点108。例如,每个集群节点108可以包括一个或多个处理器302,这些处理器被配置成执行本文描述的应用容器112(和/或虚拟机)和数据库实例114(和/或其他存储实例)。
云计算网络102可以包括在云计算网络102的设备上或跨云计算网络102的多个设备存储的数据存储库308。该数据存储库可以包括文件存储库316,该文件存储库包括一个或多个镜像,这些镜像可以包括含有静态文件,该静态文件包括用于运行隔离进程的可执行代码,这些镜像例如是应用容器112镜像、虚拟机镜像、数据库实例114镜像等。镜像318可以包括系统库、系统工具和软件程序需要在虚拟化平台上运行的其他平台设置。
数据存储库308还可以存储物理集群数据330,例如服务器位置数据332、延迟数据334和资源可用性数据336。服务器位置数据332可以包括指示集群节点108的位置的各种类型的数据。例如,服务器位置数据332可以指示集群节点108的地理位置、集群节点108之间的物理距离、集群节点之间的网络通信距离等。延迟数据334可以指示集群节点108之间的延迟。例如,延迟数据108可以指示集群节点108之间的延迟,使得可以确定物理集群110中的任意两个节点之间的总延迟。资源可用性数据336可以指示在每个集群节点108上可用的不同类型的计算资源(例如,计算、存储、数据库、网络等)的量。在一些情况下,可以在确定应用容器112要访问哪个数据库实例114时考虑资源可用性数据336。例如,如果两个数据库实例114都紧邻应用容器112,则应用容器112可以访问具有更大资源可用性的数据库实例114。
服务器标识组件122可以利用服务器位置数据332、延迟数据334和/或资源可用性数据336中的一者或多者来确定如本文所述的数据库实例114的排名列表124(例如,基于最低延迟的排名、基于最近位置的排名、在多个附近实例当中考虑资源可用性等)。此外,数据存储库308可以存储数据库实例名称338,这些存储数据库实例名称是基于运行不同数据库实例114的物理服务器106为这些数据库实例114确定的。
图4、图5和图6图示了示例方法400、500和600的流程图,这些流程图图示了至少部分地由图1-图3中描述的云计算网络102执行的功能的各方面。本文关于图4、图5和图6描述的逻辑操作可以实现为:(1)在计算系统上运行的计算机实现的动作或程序模块的序列和/或(2)计算系统内的互连机器逻辑电路或电路模块。
本文描述的各种组件的实现是取决于计算系统的性能和其他要求的选择问题。因此,本文描述的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以以软件、固件、专用数字逻辑及其任何组合来实现。还应当理解,可以执行比图4、图5和图6和在本文中描述中所示更多或更少的操作。这些操作也可以并行执行,或者以与本文描述的那些不同的顺序执行。这些操作中的一些或所有操作也可以由那些特别标识的组件之外的组件来执行。尽管本公开中描述的技术参考特定组件,但在其他示例中,这些技术可以由更少的组件、更多的组件、不同的组件或任意配置的组件来实现。
图4图示了针对虚拟资源(例如,应用容器112、虚拟机等)的示例方法400的流程图,该虚拟资源支持集群应用接收关于在物理服务器集群中最近的物理服务器106上运行的数据库实例114的信息并访问该数据库实例114。虚拟资源可以在物理集群110中包括的物理服务器106的一个或多个处理器上执行。物理服务器106可以包括一个或多个处理器和存储有计算机可读执行指令(例如,应用容器112)的一个或多个非暂态计算机可读介质,这些计算机可读执行指令在由一个或多个处理器执行时,使该一个或多个处理器执行方法400。
在402,物理服务器106可以执行支持集群应用的虚拟资源(例如,应用容器112、虚拟机等)。虚拟资源可以包括在一组虚拟资源中,这组虚拟资源在物理服务器集群(例如,物理集群110)中的各个物理服务器106上运行并且支持集群应用。虚拟资源可以在实例化之后执行,也可以在应用或服务的正常执行期间执行。
在404,物理服务器106可以接收对在物理服务器集群110中离物理服务器106最近的特定物理服务器105上运行的数据库实例114的指示。数据库实例114可以包括在一组数据库实例(例如,数据库实例组118)中,该组数据库实例在物理服务器集群110中的各个物理服务器106上维护公共数据集(例如,数据集副本116)。
在406,物理服务器106可以至少部分地基于作为离物理服务器106最近的特定物理服务器106,来从该组数据库实例118中选择该数据库实例114。在一些示例中,正在运行数据库实例114的特定物理服务器106可以与正在运行(例如,本地地)虚拟资源的物理服务器106是同一者。在一些示例中,特定物理服务器106与物理服务器106是不同的物理服务器,并且正在运行数据库实例114的特定物理服务器106离虚拟资源的物理服务器106最近,使得至少出现以下两项之一:虚拟资源以最少的网络延迟访问该组数据库实例中的数据库实例114,或者物理服务器106位于物理服务器集群110中离特定物理服务器106最近的位置。
在408,物理服务器106可以使虚拟资源访问数据库实例114(例如,从数据集副本116读取数据和/或向其写入数据)。
在一些实例中,由物理服务器106执行的方法400还可以包括接收数据库实例114的排名列表124,其中至少部分地基于物理服务器106离实例化有数据库实例114的各个物理服务器106有多近来对这些数据库实例114进行排名。在示例中,如果物理服务器106确定在特定物理服务器106上运行的数据库实例114不可用于由虚拟资源访问(例如,由于故障),则物理服务器106可以从排名列表124中标识可由虚拟资源访问的次级数据库实例114,并使该虚拟资源访问次级数据库实例114。
图5图示了针对应用容器112的示例方法500的流程图,该应用容器支持集群应用接收对在物理服务器110集群中最近的物理服务器106上运行的数据库实例114的信息并访问该数据库实例114。
在502处,应用容器112可以在物理服务器集群110中的物理服务器106上执行。在一些示例中,应用容器112包括在物理服务器集群106上执行的集群应用的一组应用容器112中。
在504处,应用容器112可以接收对在物理服务器集群110中离物理服务器106最近的特定物理服务器106上运行的数据库实例114的指示(例如,域名)。数据库实例114可以包括在一组数据库实例118中,该组数据库实例在物理服务器集群110中的各个物理服务器106上维护公共数据集116。
在506,应用容器112可以至少部分地基于作为离物理服务器106最近的特定物理服务器106,来从该组数据库实例118中选择数据库实例114。例如,应用容器112可以根据排名列表124(或对单个、最近的实例114的指示)将数据库实例114标识为最近的数据库实例114。
在508,应用容器112可以至少部分地基于特定数据库实例114在离物理服务器106最近的特定服务器106上,来访问该数据库实例114。例如,应用容器112可以从由被确定为最近应用容器112的数据库实例114维护的数据集副本116进行读取、向其写入或以其他方式对其进行访问。
图6图示了用于向支持集群应用的应用容器112提供关于正在运行集群应用的物理服务器集群110的信息的示例方法600的流程图。在一些示例中,方法600可以由包括一个或多个处理器和存储有计算机可执行指令的一个或多个非暂态计算机可读介质的系统来执行,这些计算机可读执行指令在由一个或多个处理器执行时,使该一个或多个处理器执行各种操作。执行方法600的系统可以在单个设备上,或者在每者均具有至少一个相应处理器的多个设备上。在一些示例中,系统可以对应于或包括虚拟工作负载编排组件104的一个或多个组件。
在602,系统可以在物理服务器集群110中的第一物理服务器106上实例化应用容器112。在示例中,应用容器112包括在物理服务器集群110上执行的集群应用的一组应用容器中。
在604,系统可以接收基础设施数据(例如,物理集群数据330),该基础设施数据指示物理服务器集群110中正在运行一组数据库实例118中的各个数据库实例114的各个物理服务器106。该组数据库实例114可以维护公共数据集(例如,数据集副本116)。
在606,系统可以从基础设施数据中指示的各个物理服务器106中标识离第一物理服务器106最近的第二物理服务器106。可以基于所存储的对正在运行容器112和实例114的服务器106的指示,将特定数据库实例114指示为在第二物理服务器106上运行。
在608,系统可以向第一物理服务器106发送对特定数据库实例114或第二物理服务器106中的至少一者的指示。例如,系统可以向应用容器(或正在运行应用容器112的第一物理服务器106)发送通知112,指示特定数据库实例114的名称,和/或仅指示正在运行特定数据库实例114的第二物理服务器106。
在一些示例中,系统可以进一步确定(使用延迟数据334)第一物理服务器106与物理服务器集群110中正在运行各个数据库实例114的各个物理服务器106之间的网络延迟。然后,系统可以确定第一物理服务器106与第二物理服务器106之间的网络延迟是这些网络延迟中最低的。在示例中,至少部分地基于该网络延迟是这些网络延迟中最低的,将第二物理服务器106标识为最接近第一物理服务器106。
在示例中,系统可以进一步确定(使用基础设施数据)物理服务器集群110中正在运行各个数据库实例114的各个物理服务器106的位置。系统可以进一步根据位置来确定第一物理服务器106的第一位置在各个物理服务器106的位置中离第二物理服务器106的第二位置最近。在示例中,至少部分地基于第一位置最接近第二位置,将第二理服务器106标识为最接近第一物理服务器106。
图7是图示了可用于实现本文公开的技术的各方面的数据中心700的配置的计算系统示图。图7中所示的示例数据中心700包括用于提供计算资源的若干服务器计算机702A-702F(其在本文中在单数概念上可被称为“服务器计算机702”或在复数上同样可被称为“服务器计算机702”)。在一些示例中,资源和/或服务器计算机702可以包括或对应于本文描述的物理服务器106。
服务器计算机702可以是被适当地配置用于提供本文描述的计算资源的标准的塔式、机架式或刀片式服务器计算机。如上所述,由云计算网络102提供的计算资源可以是数据处理资源,例如VM实例或硬件计算系统、数据库集群、计算集群、存储集群、数据存储资源、数据库资源、网络资源等。一些服务器702还可以被配置成执行能够实例化和/或管理计算资源的资源管理器。例如,在VM实例的情况下,资源管理器可以是管理程序或被配置成使多个VM实例能够在单个服务器计算机702上执行的其他类型的程序。数据中心700中的服务器计算机702也可以被配置成提供网络服务和其他类型的服务。
在图7中所示的示例数据中心700中,还利用适当的LAN 708来互连服务器计算机702A-702F。应当理解,本文描述的配置和网络拓扑已经大大简化,并且可以利用更多的计算系统、软件组件、网络和网络设备来互连本文公开的各种计算系统并提供上述功能。适当的负载平衡设备或其他类型的网络基础设施组件也可用于平衡数据中心700之间、每个数据中心700中的每个服务器计算机702A-702F之间、以及可能的在每个服务器计算机702中的计算资源之间的负载。应当理解,参考图7描述的数据中心700的配置仅仅是说明性的并且可以利用其他实施方式。
如图7中所示,服务器计算机702可以各自执行访问由数据库实例114管理和维护的数据集副本116的一个或多个应用容器112。通常,服务器计算机702可以运行被指定支持单个集群应用或者指定用于多个集群应用的应用容器112。
在一些实例中,云计算网络102可以在永久或按需的基础上提供计算资源,例如应用容器112、VM实例和存储。在其他类型的功能中,由云计算网络102提供的计算资源可用于实现上述各种服务。由云计算网络102提供的计算资源可以包括各种类型的计算资源,例如应用容器112和VM实例等的数据处理资源、数据存储资源、网络资源、数据通信资源、网络服务等。
由云计算网络102提供的每种类型的计算资源可以是通用的或者可以在多种特定配置中可用。例如,数据处理资源可以作为多种不同配置的物理计算机或VM实例使用。VM实例可以被配置成执行应用,包括网络服务器、应用服务器、媒体服务器、数据库服务器、上述网络服务中的一些或全部、和/或其他类型的程序。数据存储资源可以包括文件存储设备、块存储设备等。云计算网络102还可以被配置成提供本文没有具体提及的其他类型的计算资源。
在一个实施例中,由云计算网络102提供的计算资源可以由一个或多个数据中心700(在本文中在单数概念上可被称为“数据中心700”或在复数上同样可被称为“数据中心700”)启用。数据中心700是用于容纳和操作计算机系统和相关联的组件的设施。数据中心700通常包括冗余以及备用电源、通信、冷却和安全系统。数据中心700还可以位于地理上不同的位置。可用于实现本文公开的技术的数据中心700的一个说明性实施例将在下面参考图7进行描述。
图8示出了能够执行用于实现上述功能的程序组件的服务器计算机702的示例计算机架构。图8中所示的计算机架构图示了传统的服务器计算机、工作站、台式计算机、膝上型计算机、平板电脑、网络设备、电子阅读器、智能电话或其他计算设备,并且可以用来执行本文呈现的任何软件组件。在一些示例中,服务器计算机702可以对应于本文描述的物理服务器106。
计算机702包括作为印刷电路板的基板802或“主板”,多个组件或设备可以通过系统总线或其他电气通信路径连接到该印刷电路板。在一种说明性配置中,一个或多个中央处理单元(“CPU”)804与芯片组806一起进行操作。CPU 804可以是标准可编程处理器,其执行计算机702的操作所需的算术和逻辑操作。
CPU 804通过下述方式来执行操作:操作区分和改变离散的物理状态的开关元件从一个状态转换到下一个状态。开关元件通常包括维护两个二元状态之一的电子电路(例如触发器),以及基于一个或多个其他开关元件的状态的逻辑组合提供输出状态的电子电路(例如逻辑门)。这些基本的开关元件可以组合起来创建更复杂的逻辑电路,包括寄存器、加法器-减法器、算术逻辑单元、浮点单元等。
芯片组806提供CPU 804与基板802上其余组件及器件之间的接口。芯片组806可提供至用作计算机702中的主存储器的RAM 808的接口。芯片组806还可提供到计算机可读存储介质的接口,例如只读存储器(“ROM”)810或非易失性RAM(“NVRAM”),用于存储有助于启动计算机702并在各种组件和器件之间传输信息的基本例程。根据本文描述的配置,ROM 810或NVRAM还可以存储计算机702的操作所需的其他软件组件。
计算机702可以使用到远程计算设备和计算机系统的逻辑连接经由网络(例如网络708)在联网环境中进行操作。芯片组806可以包括用于经由NIC 812(例如千兆以太网适配器)提供网络连接性的功能。NIC 812能够通过网络708(或130)将计算机702连接到其他计算设备。应当理解,多个NIC 812可以存在于计算机702中,从而将计算机连接到其他类型的网络和远程计算机系统。
计算机702可以连接到为计算机提供非易失性存储的存储设备818。存储设备818可以存储操作系统820、程序822和数据,对此本文已经更详细地进行了描述。存储设备818可以通过连接到芯片组806的存储控制器814连接到计算机702。存储设备818可以由一个或多个物理存储单元组成。存储控制器814可以通过串行连接SCSI(“SAS”)接口、串行高级技术连接(“SATA”)接口、光纤通道(“FC”)接口或其他类型的接口与物理存储单元相接口,以便物理连接和传输用于在计算机与物理存储单元之间的数据。
计算机702可以通过转换物理存储单元的物理状态以反映被存储的信息来将数据存储在存储设备818上。在本说明书的不同实施例中,物理状态的具体转换可取决于各种因素。此类因素的示例可包括但不限于用于实现物理存储单元的技术、存储设备818的特征是主存储装置还是辅助存储装置,等等。
例如,计算机702可以通过存储控制器814发出指令来将信息存储到存储设备818,以改变磁盘驱动单元内特定位置的磁特性、在光学存储单元中的特定位置的反射或折射特性、或固态存储单元中特定电容器、晶体管或其他分立组件的电气特性。在不脱离本描述的范围和精神的情况下,物理介质的其他变换是可能的,所提供的前述示例只是为了促使本描述。计算机702还可以通过检测物理存储单元内一个或多个特定位置的物理状态或特性来从存储设备818读取信息。
除了上述大容量存储设备818之外,计算机702可以访问其他计算机可读存储介质以存储和取回信息,例如程序模块、数据结构或其他数据。本领域技术人员应当理解,计算机可读存储介质是提供对数据的非暂态存储并且可由计算机702访问的任何可用介质。在一些示例中,由云计算网络102执行的操作和/或其中包括的任何组件可由一个或多个类似于计算机702的设备支持。换句话说,由云计算网络102和/或其中包括的任何组件执行的一些或全部操作可以是由在基于云的布置中操作的一个或多个计算机设备702执行。
作为示例而非进行限制,计算机可读存储介质可以包括以任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机可读存储介质包括但不限于RAM、ROM、可擦除可编程ROM(“EPROM”)、电可擦除可编程ROM(“EEPROM”)、闪存存储器或其他固态存储技术、光盘ROM(“CD-ROM”)、数字通用磁盘(“DVD”)、高清DVD(“HD-DVD”)、BLU-RAY或其他光存储装置、盒式磁带、磁带、磁盘存储或其他磁存储设备或可用于以非暂态方式存储所需信息的任何其他介质。
如上所述,存储设备818可以存储用于控制计算机702的操作的操作系统820。根据一个实施例,操作系统包括LINUX操作系统。根据另一个实施例,操作系统包括来自华盛顿州雷德蒙德的微软公司的SERVER操作系统。根据进一步的实施例,操作系统可以包括UNIX操作系统或其变体之一。应当理解,也可以使用其他操作系统。存储设备818可以由存储计算机702使用的其他系统或应用和数据。
在一个实施例中,存储设备818或其他计算机可读存储介质用计算机可执行指令编码,这些计算机可执行指令在加载到计算机702中时,将该计算机从通用计算系统转变为能够实现本文描述的实施例的专用计算机。如上所述,这些计算机可执行指令通过指定CPU 804如何在状态之间转换来转换计算机702。根据一个实施例,计算机702可以访问存储有计算机可执行指令的计算机可读存储介质,这些计算机可执行指令在由计算机702执行时执行上文关于图1-图6描述的各种过程。计算机702还可以包括计算机可读存储介质,其上存储有用于执行本文描述的任何其他计算机实现的操作的指令。
计算机702还可以包括一个或多个输入/输出控制器816,用于接收和处理来自多个输入设备(例如键盘、鼠标、触摸板、触摸屏、电子手写笔或其他类型的输入设备)的输入。类似地,输入/输出控制器816可以向显示器提供输出,显示器例如是计算机监视器、平板显示器、数字投影仪、打印机或其他类型的输出设备。应当理解,计算机702可能不包括图8中所示的所有组件,可以包括未在图8中明确示出的其他组件,或者可以利用与图8中所示的架构完全不同的架构。
服务器计算机702可以支持虚拟化层824,例如在操作系统802中执行的一个或多个应用容器112。在一些示例中,虚拟化层824可以由提供运行在服务器计算机702上的一个或多个虚拟机的管理程序支持以执行本文描述的功能。虚拟化层824通常可以支持执行本文描述的技术的至少部分的虚拟资源。例如,如图所示,应用容器112可以从虚拟工作负载编排组件104接收数据库实例114的排名列表124。然后应用容器112可以访问最近的数据库实例114,该最近的数据库实例可以是维护服务器计算机702上的数据集副本116的本地数据库实例114。
总而言之,本公开描述了用于向集群应用的虚拟资源(例如,容器、虚拟机等)提供关于正在运行该分布式集群应用的物理服务器集群的信息的技术。支持集群应用的虚拟资源在物理服务器集群中的物理服务器上执行。虚拟资源可以接收对在物理服务器集群中离物理服务器最近的特定物理服务器上运行的数据库实例(或其他应用)的指示。数据库实例可以包括在一组数据库实例中,该组数据库实例在物理服务器组中的各个物理服务器上维护公共数据集。虚拟资源然后可以至少部分地基于在离物理服务器最近的特定服务器上运行的数据库实例,来访问特定物理服务器上的数据库实例。
虽然本发明是关于具体示例进行描述的,但应理解本发明的范围不限于这些具体示例。由于为适应特定操作要求和环境而变化的其他修改和变化对本领域技术人员来说是显而易见的,因此并不被认为本发明限于为公开目的所选的示例,而是涵盖不构成脱离本发明的真正精神和范围的所有变化和修改。
虽然本申请描述了具有特定结构特征和/或方法动作的实施例,但是应当理解,权利要求书不必限于所描述的特定特征或动作。相反,特定特征和动作仅是说明落入本申请权利要求范围内的一些实施例。