技术领域
[0001] 本发明涉及在数据中心中的应用分配。具体地,本发明涉及数据中心的分配实体、操作数据中心的分配实体的方法、计算机程序、计算机程序产品、以及操作数据中心的方法和这样的数据中心。
相关背景技术
[0002] 近来数据中心由于其提供应用的远程和/或分布式执行而吸引了更大的关注。尽管应用在远离用户的地方运行,后者可以从任何地方经由网络(例如,互联网)来使用、访问、和操作可以在虚拟机上运行的应用。
[0003] 在该上下文中,已经设计了术语云计算作为基于互联网的计算的形式,在云计算中,通过互联网向用户提供共享资源、软件和信息。换言之,可以将云计算视为利用和销售数据中心的能力的新方式。在后者中,应用实际运行,且处理相应用户数据。对于云来说通常是使用虚拟机镜像,在虚拟机镜像中,安装了应用组。按照需要在数据中心的服务器上启动这种镜像。如果针对特定应用的需求改变,可以启动或移除提供该应用的具有相同或类似类型的镜像。从而,术语应用可以指定这样的应用或一个或多个应用运行于其上的虚拟机镜像(或简称为镜像)。
[0004] 通常以分级方式来组织数据中心。如结合图1所示出的,数据中心1′包括多个处理单元(所谓的刀片服务器)10。这些处理单元10经由至少一个交换机级200耦合到某种数据中心接入点。接入点可以是外部网关或路由器,例如所示网关实体30。在所示结果中,实际上存在3个交换机级201、202、203,它们构成了数据中心1′的分级结构。可以因此将提供针对应用的通常虚拟化平台的处理单元10组织为机架(racks),进而将机架组织为行,进而将行组织为所谓的区。例如,区的分级将对应于交换机级201,行的分级将对应于交换机级202,以及机架的分级将对应于交换机级203。数据路径40(也可以被称为网络路径)通向每个处理单元10。
[0005] 诸如网关实体30之类的中心路由器将整个数据中心1′连接到如同互联网的外部网络,并将数据中心内的数据业务分发到各分级级别。因此,提供了分发数据中心中的数据业务的后续交换机或路由器。在所示示例中,区交换机将数据业务分发到行。行交换机分发到机架,以及最终,机架交换机将刀片服务器或处理单元连接到数据中心的其余部分。
[0006] 作为选项,数据中心中的上述分级结构还可以由数据中心各部分之间的附加直接捷径来实现,引入这些附加直接捷径以增加内部联网能力。例如,两个机架路由器交换机23还可以彼此直接通信,而不管经由相关联的行路由器交换机22的相应通信如何。此外,分级级别的数目可以根据数据中心的大小和复杂度而变化。
[0007] 为了运行对联网能力有大量需求的应用,数据中心及其组件(分级级别、交换机、路由器等等)应当提供充足的网络通信能力以满足应用对通信业务的需求。这可以意味着需要将物理上对应用(或镜像)的实例进行执行的一个处理单元经由网络路径耦合到满足该应用的联网需求的互联网,该网络路径通过数据中心分级以及外部互联(网关)。取决于应用和镜像,这些联网需求可以例如是特定的最小数据传输带宽。
[0008] 当分配数据中心中的应用时,需要考虑镜像及其应用的处理需求。在有充足处理容量可用的刀片服务器上启动应用/镜像。通常仅使用尽力而为(best effort)策略来考虑上述联网需求:进行对高和低联网能力的大致分类,并在应用分配中使用这种大致分类。这可以导致以下情形:应用原则上将能够处理其任务,但是其与数据中心的其他部分或外部用户的通信可能出现拥塞。结果将是对处理能力的糟糕使用,且最终导致糟糕的用户体验。在用户体验以及对应用或服务的响应性是关键性能指标的很多应用场景中,该情形是不可接受的。例如,这是针对电信服务的情况。如果数据中心的其他部分将具有用于向应用的需求提供服务的充足联网能力,则该情形可以导致缺点。在该情况下,数据中心中的镜像和应用的不同分配将导致显著增强的整体服务。
具体实施方式
[0026] 在本发明中,所谓的应用可以标识传统意义上的应用,即为了向用户提供所需功能而执行的应用程序。这种功能包括文本处理、电子表格计算、数据库和管理、图像和图形数据的处理/生成/管理等。然而,术语应用还可以标识要被理解为虚拟机的镜像。虚拟机是在另一个实体(即物理机)上提供一个虚拟处理实体的软件集合。例如,虚拟机可以是在采用基于Linux的操作系统的计算机上实际运行的虚拟Windows(TM)计算机。然而,在虚拟机和运行虚拟机的处理单元之间的操作系统可以不一定彼此不同。无论如何,虚拟机的特征在于:其向一个或多个用户提供了用于执行应用的一个封装实体,其中,应用的执行以及因此的虚拟机的运行不干扰运行在相同处理单元上的其他虚拟机(至少在某个给定的限制下)。
[0027] 在本发明中,处理单元应当被理解为用于在数据中心中处理数据和/或通信的一个单元。前述所谓的刀片服务器可以构成一个这种处理单元。然而,处理单元还可以是独立PC或服务器,多个该独立PC或服务器被布置为彼此互连以形成数据中心。可以至少借助交换机级来使用所述互联,然而通常交换机级对应于多个处理单元的物理设置,即区、行、机架等。然而处理单元还可以将其各自能力限制为数据转发、路由和/或交换。因此,还可以将处理单元理解为其本身不运行镜像的交换机或路由器实体,而是当在处理单元上运行应用时,应用可以构成路由器/交换机实体。
[0028] 如已经解释的,数据中心采用至少一个交换机级,其可以反映多个处理单元的物理设置。如果例如将处理单元安装在机架上,进而将机架布置为行,且其中多个这种行构成所谓的区,将存在至少3个这种交换机级,例如用区交换机级、行交换机级和机架交换机级来表示。在不同交换机级的两个交换/路由实体之间,存在至少一个用于数据通信的连接。可以将2个不同或相邻交换机级的2个这种实体之间的连接的部分表示为所谓的网络子路径,其中,将所谓的网络路径定义为在来自多个处理单元中的一个特定处理单元处结束。
[0029] 换言之,网络路径是针对被调度去往或来自特定处理单元的数据的可能路径。网络路径可以在另一端在另一处理单元处或在某种中央接入点(例如,前述网关实体)处结束。从而,可以根据要求和所需数据流来定义网络路径的另一端。例如,如果要将来自和去往相应处理单元的数据路由至例如互联网,可以在相应处理单元和某种高级接入点之间形成网络路径。然而,网络路径也可以很好地保持在一个数据中心内,例如在连接2个不同处理单元时。如果例如在若干处理单元之间分布一个应用,或当一个应用与运行在另一处理单元上的另一应用交互时,则这种数据流可以变为必不可少。示例可以是作为第一处理单元上的第一应用运行的web服务器和作为第二处理上第二应用运行的视频流服务器:两个服务器应用可以交互之处在于:web服务器利用视频流服务器来提供基于web的视频流应用。
[0030] 在上述若干交换机级的设置中,通常存在树状路径结构,即一个交换机级的一个交换机/路由器实体与更高交换机级的一个实体接收和发送数据,反之,存在从一个交换机/路由器实体向更低交换机级的实体展开(fanout)若干连接。这样,如也在下面更全面解释的,在每个交换机级上对展开可能之一的选择定义了通向特定处理单元的网络路径。
[0031] 根据本发明的各方面,当向数据中心添加应用/镜像实例时,可以允许考虑数据中心的联网能力。具体地,可以考虑数据中心的各部分的当前通信负载以及本地和临时可用的联网容量。这允许数据中心中更好的联网负载分布,且其可以避免在使用数据中心提供的应用和服务时可能引起糟糕用户体验的瓶颈情形。
[0032] 此外,本发明的各方面还允许在整个数据中心中对容量的(软)预留,从而与通常的尽力而为方案将会允许的相比,能够以更受控的方式来提供服务级别协议(SLA)。与没有该可能性的数据中心相比,这可以提供若干优点,其中,可以用非常保守和谨慎的方式来给出SLA保证(如果有的话)。
[0033] 图2和4示出了根据本发明的实施例的数据中心的示意图。多个处理单元10经由至少一个交换机级200耦合到网关实体30。如上文已经描述的,交换机级200可以实际上包括与处理单元10的实际物理设置相对应的多于一个交换机级(区级、行级、机架级等等)。可以由相应交换机实体来表示交换机级,例如区交换机21、行交换机22、以及机架交换机23。
[0034] 根据本实施例,提供了数据中心1中的分配实体50,其从网关实体30、一个或多个交换机级200、以及处理单元10接收数据和/或信息。借助所接收的数据,分配实体50可以收集与将网关实体30连接到各个处理实体10的所有网络路径40相关的信息。更具体地,分配实体50可以收集与网关实体30和每个处理单元10之间的实际的、预测的、或调度的网络负载相关的信息。所述信息可以涉及当前和/或给定间隔和/或将来的时间点。换言之,分配实体50被配置为获取路径网络负载信息,该路径网络负载信息指示通向多个处理单元10的至少一部分的网络路径的网络负载。
[0035] 此外,分配实体50被配置为接收用于向数据中心1的多个处理单元10之一分配应用的应用分配请求500。应用分配请求500包括所谓的应用网络负载信息,应用网络负载信息在为了正确操作而要求的所需网络负载和/或由应用引起的所需网络负载方面对向多个处理单元中的一个处理单元分配的应用进行表征。还可以在保证服务质量(QoS)或指定最大响应时间方面来定义所述正确操作。
[0036] 此外,所述应用分配请求或所述应用网络负载信息可以包括所谓的应用网络负载简档,该应用网络负载简档指定在事件、特定时间点或时间间隔等方面的所需网络负载。这样,分配实体50可以变得知道被请求分配的特定应用在特定时间点上要求或引起多少网络负载。
[0037] 因此,分配实体50能够选择特定处理单元10′,该特定处理单元10′经由满足应用网络负载信息所阐述的要求的一个特定网络路径40′耦合到网关实体30。例如,要分配给多个处理单元10之一的分配可以是要求大量网络负载的视频流服务器,因为视频数据量通常很大。知道该应用的实际网络要求,分配实体50可以选择处理单元10′以分配应用,因为其相应网络路径40′能够处理当前、将来或将来的特定时间和时间间隔处所要求的网络负载。
[0038] 换言之,将分配实体50作为新节点(即,业务意识应用/镜像分配器)加以引入,其允许在数据中心内找到对于应用/镜像合适的分配。为了这么做,该节点收集与数据中心内的所有联网链路上的寿命联网负载情形相关的数据。使用路由器和交换机的业务测量接口来收集该信息。如果需要分配新的应用/镜像,分配实体50可以执行搜索模式,该搜索模式在数据中心的外部互联节点(网关实体50)开始,并通过选取具有最低联网负载的路径,通过联网节点/交换机的分级进行至刀片服务器(在所示示例中,处理单元10′)。
[0039] 这样,还引入了负载意识管理层。该层将数据中心结构的虚拟镜像(从而,数据中心的模型)与瞬时联网负载情形一起保存。此外,所分配的应用/镜像附有对应的应用网络负载信息或对应的联网负载简档。这是对应用的联网负载要求的描述。当在数据中心中分配应用时,负载意识管理层始终根据负载简档通过数据中心为该应用虚拟地预留联网负载。如果业务意识镜像分配器对虚拟数据中心模型而不是实际数据中心执行其搜索模式,为了找到针对该应用的最优位置,即处理单元10′,可以将根据其他镜像的联网负载简档的对其它镜像的预留和潜在负载需要考虑在内。
[0040] 一般而言,不管数据中心中分配应用的决定的联网方面如何,当然可以存在可以影响该决定的很多其他标准。本发明提出的实体和方法向整体决定过程提供了贡献。
[0041] 现在参照图3和4,分配实体50具有通向数据中心1的分级和树状网络结构中的交换机/路由器21、22、23和处理单元10的接口。此外,分配实体50具有通向数据中心管理系统64的接口66。通过该接口66,分配实体50可以接收用于搜索可以在数据中心1内分配新应用的位置的命令。将该搜索的结果传输回数据中心管理,其进而可以相应分配应用/镜像。
[0042] 为了获得关于应用的要求的信息,分配实体50具有通向应用和或镜像的仓库(即,数据存储器600)的接口65,应用或镜像存储在该仓库中或在该仓库中描述。接口65可以由应用/镜像管理API(应用编程接口)来构成。除了通常存储的与这种应用相关的信息(数据存储器61中的代码、应用数据和库71)之外,引入了应用网络负载信息72,其与应用/镜像相关联,以提供与要求相关的附加信息,具体地,关于网络负载的附加信息。所述信息72可以存储在分离的数据存储器62中,或应用数据71和信息72可以存储在一个单一的公共数据存储器600中。
[0043] 信息的源位于通向数据中心网络节点63的接口67的可用性中,该接口67允许取回与所有节点及其网络链路(即涉及的交换机21、22、23、网关实体30、以及处理单元10)相关的当前实况网络负载情形。因此,将至少一部分节点和链路耦合到分配实体50,以提供这种信息(图2&4中的虚线)。
[0044] 在一个实施例中,分配实体50可以主动地请求与其当前考虑/观察的节点和链路的负载情形相关的瞬时信息,或在另一实施例中,其可以规律地向整个数据中心1轮询负载信息,并存储该信息以用在搜索算法中。在又一实施例中,可以在数据中心的网络节点(即所有涉及的交换机21、22、23)处注册分配实体50,以接收与网络负载信息相关的规律更新。此外,可以将取回和处理负载情形的这些概念加以组合,且可以用不同方式来处理数据中心1的不同部分。
[0045] 当应当向数据中心1添加新应用或添加其上安装了应用的虚拟镜像时,分配实体50参与以下决定:在数据中心1中应当分配应用/镜像。其找到数据中心1中具有最高空闲联网容量,且具体地,在从处理单元10到外部(即网关实体30)的整个网络路径40′上具有空闲并合适的容量的合适处理单元10。执行该搜索的命令通常来自于数据中心管理
64,且向数据中心管理64报告回结果。这允许数据中心管理系统64在分配应用/镜像的新实例时将网络负载考虑在内。
[0046] 如上面已经提到的,应用/镜像还可以附有描述其联网负载需要的简档。在一个实施例中,可以例如在这种负载简档的仓库(即,数据存储器62)中的单独文件72中存储这种负载简档。在该情况下,针对每个应用/镜像单独选择合适的简档。在另一实施例中,可以将应用网络负载信息与应用/镜像存储在一起,或甚至存储在镜像文件或镜像描述的区中。
[0047] 应用网络负载信息的简档可以包含例如将始终不超过的所需最小带宽或最大带宽的信息。然而,该简档还可以包含与条件性或时间性带宽特征(figure)相关的信息。例如,可以针对一天中不同的时间或一周中不同的天来提供单独的带宽要求。分配实体50可以使用该负载简档来决定要选择的网络链路是否适合支持被假定要部署在数据中心1中的应用/镜像的所有要求。可以将所述应用网络负载简档扩展为还包含与应用/镜像的不涉及联网的其他方面相关的要求。例如,此处可以与联网需求一起来指定处理容量需求。
[0048] 现在参照图5和6,在分配实体50中还可以提供数据中心负载控制器51。数据中心负载控制器51在数据中心网络负载的测量中建立了中间层。数据中心负载控制器51可以将数据中心拓扑的地图与当前负载情形的特征一起存储。对于数据中心的每个物理节点以及数据中心节点中的每个链路,数据中心负载控制器保存与其联网负载情形相关的信息。同样地,所述节点可以由交换机21、22、23、实体30、和/或单元10来构成。所述链路可以构成上述子路径。这样,数据中心负载控制器51维护实际数据中心负载情形的抽象镜像。信息的取回和负载特征的连续更新可以类似于与本发明的其他实施例一起描述的方式来进行。
[0049] 随着该中间层在恰当位置上,分配实体50将不直接从实际数据中心节点接收负载特征,而是从数据中心负载控制器51接收其维护的抽象数据中心地图中取得的负载特征。除了在寻找新应用/镜像的位置的算法中的该变化,其他可以保持相同。
[0050] 该实施例基于数据中心的抽象镜像,而不是数据中心本身。基于数据中心1的其抽象镜像,数据中心负载控制器51可以针对每个节点和链路来执行网络容量的预留。因此,数据中心负载控制器51可以接收或获得路径网络预留信息。注意到:最终在数据中心1上部署应用实例,且向其通知为该应用实例找到的网络路径40′。一旦部署了其实例,且在沿着被选择用于向该应用实例提供联网服务的路径40′上的所有虚拟数据中心节点和虚拟数据中心链路处存储该网络负载简档,数据中心负载控制器501访问应用的相应应用网络负载简档(或一般的,应用网络负载信息)。
[0051] 如果分配实体50为新的应用实例搜索位置,则针对每个节点和链路所呈现的负载特征可以是寿命(当前)负载,或其可以是基于在数据中心负载控制器50中存储的负载简档定义的累积要求的潜在负载。此外,可以使用实况负载特征和累积要求的组合。
[0052] 这样,可以达到网络容量的软预留,因为在分配新应用时,将已经部署的应用实例所要求的容量考虑在内。尽管当前负载情形将指示留有容量,但是针对新的部署,可以拒绝已经具有与联网相关的高潜在需求的路径40。数据中心负载控制器51知道由该路径所服务的应用具有潜在高的需求。因此,可以避免将来的瓶颈。
[0053] 由于网络负载简档可以提供例如在不同时间和日期上区分负载要求的复杂特征,因此当决定特定节点或链路是否能够获取另一应用的负载时,也可以将这点考虑在内。不仅可以匹配当前的要求,还可以匹配将来的要求。需要由数据中心管理向数据中心负载控制器51通知所有的镜像部署和移除。如果移除或移动应用实例,需要移除或重新布置与指派的网络负载简档一起对应存储的路径。
[0054] 图7示出了根据本发明的另一实施例的分配实体内部设置的示意图。该分配实体50包括处理器501和存储器502。处理器执行在存储器502中作为单元503存储的代码。
从而,可以由单元503来实现或执行如结合本发明的实施例所描述的实体的任何特征或方法的任何步骤,其中,由处理器501来执行其相应代码。
[0055] 图8A示出了本发明的方法实施例的示意流程图。因此,在步骤S1中,接收用于向数据中心的多个处理单元中的一个处理单元分配应用的应用分配请求。应用分配请求包括应用网络负载信息。此外,在步骤S2中,获取路径网络负载信息,该路径网络负信息指示通向多个处理单元中的至少一部分的网络路径的网络负载的。最终,在步骤S3中,基于应用网络负载信息和路径网络负载信息,从多个处理单元中选择处理单元以分配应用。
[0056] 图8B示出了本发明的另一方法实施例的示意流程图。该实施例描述了用于在数据中心中针对要分配的特定应用来搜索合适的处理单元的可能方法。根据该实施例,在第一步骤S11中,搜索合适的处理单元在数据中心的网关实体处开始。然后,在步骤S12中,分配实体检查与到后续节点/路由器/交换机的所有路径相关的负载情形。基于该情形,在步骤S15中,分配实体选择在本搜索过程中之前尚未尝试的、到具有最高空闲容量的后续节点(即,下一个分级级别的交换机)的链路(子路径)。
[0057] 如果在S13中,在当前检查的节点/路由器/交换机中找不到具有充足空闲联网容量的链路,则搜索返回之前的网络节点和该算法的步骤S12。如果由于不存在更高分级级别的之前的网络节点/路由器/交换机而使得这不可能,则搜索失败且不能在数据中心中分配该应用(S14)。如果在所选链路之后的后续节点同样是路由器/交换机,算法在步骤S12中继续。然而如果在所选链路之后的后续节点是处理单元,在步骤S17中检查该单元是否满足要分配的应用/镜像的所有要求。这不仅可以检查处理单元的联网负载情形,还可以例如将处理负载或存储器利用率考虑在内。如果在步骤S17中找到的处理单元满足所有要求,则在步骤S18中在该处理单元18上分配/部署该应用。
[0058] 然而在步骤S17中如果找到的处理单元不满足所有要求,搜索返回之前的网络节点和该算法的步骤S12。如果由于没有之前的网络节点/路由器/交换机而使得这不可能,则搜索失败且不能在数据中心中分配该应用/镜像(同样,S14)。
[0059] 上述算法能够为对外部网络(例如,公共互联网)有高联网需求的应用/镜像找到合适的分配。可以提供修改的算法用于为对数据中心的其他部分有高联网需求的应用/镜像找到合适的分配。在该情况下,在步骤S11中,搜索将在要应用的应用/镜像对其具有高联网需求的处理单元处开始。所呈现的算法包含以下检查:链路的可用容量是否充分支持要分配的应用/镜像的要求。可以使用如上所述的应用/镜像负载简档来确定与这些要求相关的信息。如果这种信息不可用,则算法还可以仅选择最佳路径,而不控制其容量是否将充足。
[0060] 在本发明的上述实施例中,至少设想了以下修改:根据修改,可以相应实现分配实体以在数据中心上运行,即作为由数据中心的一个或多个处理单元执行的代码。
[0061] 尽管已描述了详细的实施例,这些实施例仅用于提供对由所附权利要求限定的本发明的更好的理解,且预期不应将这些实施例视为是限制性的。