服务器集群的制作方法

文档序号:7550353阅读:112来源:国知局
专利名称:服务器集群的制作方法
技术领域
本发明涉及服务器的集群。特别地,本发明涉及计算机服务器集群中的负载平衡。
背景技术
在信息技术和电信产业中,典型地,系统接收请求消息并响应于该请求而执行一些处理。许多这样的系统被设计为使得其为可扩缩的。可扩缩系统使得能够通过以下操作来提高性能将附加模块添加至现有系统,而不是设计和实现具有更高性能硬件和软件的新系统。图I是作为可扩缩系统的示例的负载平衡集群的框图,该负载平衡集群总体由参考标记I指示。集群I包括调度器2、第一服务器4、第二服务器6和第三服务器8。可以根据系统I的所需或所期望的容量,增加或减少服务器的数目。在使用中,调度器2接收多个请求。该请求由调度器2路由至服务器4、6和8中·的一个或多个。服务器负责服务请求所需的实际服务处理(该请求的服务的性质与本发明的原理不相关)。为了实现请求的路由,调度器2包括负载平衡机制,需要该负载平衡机制来调度服务器之间的服务请求。负载平衡机制的目的在于充分利用形成服务器集群的服务器4、6和8中的每一个,并避免服务器中的一些相对繁忙且其他服务器相对空闲的情形。本领域公知多种调度方法,例如随机选择、轮循(round robin)、最不繁忙等等。本领域技术人员将知道可使用的许多可替换负载平衡算法。术语“服务器集群”通常用于描述由本地网络连接和/或物理上或逻辑上协同定位(colocate)的服务器。在本说明书中,术语“服务器集群”和“集群”是在较宽的意义上使用的,并应当被理解为涵盖其中服务器被分布(例如,分布在广域网(WAN)上或互联网上)的情形。对于无状态应用(例如,数据库查询),系统I中的调度器2的目的相对直接,即,在服务器4、6和8之间均匀地平衡负载。在这些系统中,一旦输入请求已被服务器处理,该特定请求就完成,并且关于该请求不需要进一步动作。然而,对于许多网络应用,客户端和服务器建立某种上下文,以在多个请求和响应的交换期间维持正在进行的状态。在应用级,该上下文可以被称为“会话”在互联网协议(IP)级,该上下文可以被称为“连接”。在本说明书中一般互换地使用术语“上下文”、“会话”和“连接”。对于具有上下文的网络应用,集群(例如,图I中所示的集群)给高吞吐量系统架构提供可扩缩性、负载平衡和高可用性是更富有挑战性的。例如,可以存在多于一个请求属于特定上下文。当在集群中的一个或不同服务器中处理这些请求时,应当正确地接入和修改该上下文。为了实现期望的负载平衡,调度器2需要在转发请求时考虑目的地服务器对所涉及的上下文的可接入性(此外考虑服务器4、6和8的相对负载)。可替换地,服务器可以利用某种机制来保证所调度的服务器对请求的上下文的可接入性。以下描述用于在应用具有上下文数据的情况下实现服务器集群的三个方法。在第一种方法(通常被称为“粘性会话”)中,应当将特定会话的所有请求发送至相同服务器,并且该服务器维持会话本身。第二种方法是将一个服务器中的会话复制至相同集群中的所有其他服务器。因此,可以将请求调度至任何服务器以供处理。第三种方法是使服务器能够使用共享存储器来存储会话,例如存储区域网络(SAN)。集群中的任何服务器可以接入该共享存储器中的会话。还可以将请求调度至任何服务器,这是由于任何服务器可以接入请求的所涉及的会话。在第一种(粘性会话)方法中,服务器4、6和8是简单的,但调度器2必须维持会话信息并区分不同会话的请求。当会话的数目非常大时,将需要调度器2足够强大以存储会话表并提供查找功能,以针对每个请求而识别会话。由于调度器后的服务器的性能可以非常高,因此调度器2可能变成系统I中的瓶颈。 在第二种(会话复制)方法中,调度器2是简单的,这是由于调度器不需要存储上下文信息并仅将请求转发至通过某种简单算法(例如,上述随机选择、轮循和最不繁忙算法之一)选择的服务器。然而,对服务器4、6和8来说,存在更多需求。服务器管理彼此之间的会话的复制,这需要全网状复制。该复制意味着高网络带宽和计算能力开销。在高吞吐量系统中,上下文信息可以是巨大的。此外,由于所需的全网状复制,使得集群系统不是可容易扩缩的。在第三种(共享会话)方法中,调度器2是简单的,但是需要昂贵的高性能SAN (图I未示出)来存储和管理会话信息。对于需要非常频繁上下文修改的高吞吐量应用,与会话信息共享的会话方法可以不提供足够性能。在这种布置中,对SAN的接入可能变成系统I中的瓶颈。在集群内的服务器发生故障的情况下出现另一问题。在这种情况下,需要在集群中的其他服务器之间重新分配由服务器处理的请求;该过程在系统I中由调度器2处理。作为示例,假定第一服务器4发生故障。需要将由服务器处理的会话重新分配给第二服务器6和/或第三服务器8。一些简单机制(例如,简单地使用下一可用服务器来处理会话)可以导致一个服务器在集群中的另一服务器发生故障的情况下变为过载。

发明内容
本发明力求解决上述问题中的一些。本发明提供了如独立权利要求中阐述的设备和方法。本发明力求提供以下优势中的至少一些
以低成本实现由服务器组提供的服务的高可用性;
对具有适度存储需求的请求调度的快速查找;
高设备利用比率;
不需要昂贵的存储区域网络(SAN)介质和网络;
需要有限的会话复制。本发明提供了一种方法,包括接收请求;选择要将所述请求转发至的第一虚拟服务器,其中,所述第一虚拟服务器由多个(物理)服务器之一提供,其中,所述(物理)服务器中的至少一些(通常是全部)包括或提供多个虚拟服务器;以及在所选择的第一虚拟服务器不能够接收到所述请求的情况下,将所述请求转发至所述第一虚拟服务器的相邻虚拟服务器,其中,所述第一虚拟服务器的相邻虚拟服务器是与所述第一虚拟服务器不同的服务器的一部分。因此,第一虚拟服务器的相邻服务器充当用于该服务器的备份。所述方法可以包括将所述请求转发或试图将所述请求转发至所述第一虚拟服务器。本发明还提供了一种设备(例如,调度器),包括用于接收请求的输入;用于将所述请求转发(或试图将所述请求转发)至第一虚拟服务器的输出,其中,所述第一虚拟服务器由多个服务器之一提供,并且其中,所述服务器中的至少一些提供多个虚拟服务器;以及用于选择所述第一虚拟服务器的处理器,其中,在所选择的第一虚拟服务器发生故障(例如,所述第一虚拟服务器形成其一部分的服务器发生故障)的情况下,所述处理器选择所述第一虚拟服务器的相邻(虚拟)服务器,并且所述调度器的输出将所述请求转发至所述相邻服务器,其中,所述第一虚拟服务器的相邻服务器是由与所述第一虚拟服务器不同的服务器提供的虚拟服务器。相邻服务器可以是与第一虚拟服务器同时被选择的(而不是在第一虚拟服务器不可用或不可操作的情况下选择的)。(物理)服务器的每个虚拟服务器可以具有由不同其他(物理)服务器提供的相邻服务器。因此,如果特定物理服务器变为不可操作,则在多个不同其他服务器之间分发由物理服务器提供的各个虚拟服务器的负载。在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他(物理)服务器提供的相邻服务器。因此,不仅在第一物理服务器变为不可操作的情况下,该服务器的负载得以分发,而且在第二物理服务器也变为不可操作的情况下,在多个不同其他服务器之间分发由第二物理服务器提供的各个虚拟服务器的负载。可替换地,在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余(物理)服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务器。例如,当以上阐述的前一条件在数学上不可能时,该情形可能发生。可以将与请求相关联的会话信息发送至所选择的第一虚拟服务器以及该所选择的第一虚拟服务器的相邻服务器。例如,本发明的设备的输出可以将与请求相关联的会话信息提供给所选择的第一虚拟服务器以及所选择的第一虚拟服务器的所选择的邻居。因此,在虚拟服务器不可用,以使得代之以将被指派给该虚拟服务器的任务发送至该虚拟服务器的相邻服务器的情况下,那么该相邻服务器已经可接入与该任务相关联的会话信息。因此,可以容易地将具有与之相关联的上下文的请求重新指派给相邻服务器,而无需全网状复制或者高性能SAN或某种其他存储机制的提供,如上所述。本发明还提供了一种包括多个虚拟服务器的服务器,其中,所述服务器形成包括多个服务器的系统的一部分,其中,所述多个服务器中的至少一些(通常是全部)包括多个虚拟服务器,所述服务器被适配为使得每个虚拟服务器与相邻虚拟服务器相关联,其中,每个虚拟服务器的相邻服务器是不同服务器的一部分,并且其中,虚拟服务器的相邻服务器充当用于该服务器的备份。可以将在请求中提供给第一虚拟服务器的会话数据拷贝至第一虚拟服务器的相邻虚拟服务器。因此,可以容易地将具有与之相关联的上下文的请求重新指派给相邻服务器,而无需全网状复制或者高性能SAN或某种其他存储机制的提供,如上所述。·
在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他(物理)服务器提供的相邻服务器。在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余(物理)服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且所述服务器的任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务。 在本发明的许多形式中,以下条件中的一个或多个适用
I.对于任何虚拟服务器/节点(对等端),该虚拟服务器及其邻居(接替者)由不同(物理)服务器提供。2.对于相同物理服务器中的任何两个虚拟服务器/节点(对等端),其邻居位于不同其他物理服务器中。3.即使在任何一个物理服务器发生故障之后,对于任何虚拟服务器/节点,该节点虚拟服务器及其邻居仍位于不同物理服务器中。4.在两个物理服务器损坏的情况下,对于任何虚拟服务器/节点(对等端),该虚拟服务器及其邻居位于由不同物理服务器提供的位置。本发明又还提供了一种包括多个服务器的系统,其中,所述服务器中的至少一些(通常是全部)包括多个虚拟服务器,其中,每个虚拟服务器与相邻服务器相关联,其中,每个虚拟服务器的相邻服务器是不同其他服务器的一部分,并且其中,虚拟服务器的相邻服务器充当用于该服务器的备份。 在本发明的许多形式中,所述服务器中的每一个包括(或提供)多个虚拟服务器。在本发明的许多形式中,由特定(物理)服务器提供的多个虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务器。因此,在特定物理服务器变为不可操作的情况下,在多个不同其他服务器之间分发由物理服务器提供的各个虚拟服务器的负载。所述系统还可以包括调度器,其中,所述调度器包括用于接收请求的输入;用于将所述请求转发至第一虚拟服务器的输出;以及用于选择所述第一虚拟服务器的处理器。此外,在所选择的虚拟服务器发生故障(例如,虚拟服务器形成其一部分的服务器发生故障)的情况下,所述处理器可以选择所述第一虚拟服务器的相邻服务器,并且所述调度器的输出可以将所述请求转发至所述相邻服务器。可以将在请求中提供给第一虚拟服务器的所述会话数据拷贝至所述第一虚拟服务器的相邻虚拟服务器。在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他(物理)服务器提供的相邻服务器。在本发明的一些形式中,在(物理)服务器不可操作的情况下,其余(物理)服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且所述服务器的任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务器。本发明又还包括一种计算机程序,包括用于接收请求的代码(或某其他装置);用于选择要将所述请求转发至的第一虚拟服务器的代码(或某其他装置),其中,所述第一虚拟服务器由多个(物理)服务器之一提供,其中,所述(物理)服务器中的至少一些(通常是全部)包括或提供多个虚拟服务器;以及用于在所选择的第一虚拟服务器不能够接收到所述请求的情况下将所述请求转发至所述第一虚拟服务器的相邻虚拟服务器的代码(或某其他
7装置),其中,所述第一虚拟服务器的相邻虚拟服务器由与所述第一虚拟服务器不同的服务器提供。所述计算机程序可以是包括计算机可读介质的计算机程序产品,所述计算机可读介质承载了其中实现的与计算机一起使用的计算机程序代码。


以下参照以下编号的示意图,仅作为示例,描述本发明的示例实施例。图I是用于在集群的多个服务器之间分配请求的已知系统的框 图2是根据本发明的一方面的系统的框 图3示出了根据本发明的一方面的虚拟服务器布置;
图4示出了其中一些虚拟服务器不可操作的图3的虚拟服务器布置; 图5示出了根据本发明的另一方面的虚拟服务器布置;
图6示出了其中一些虚拟服务器不可操作的图5的虚拟服务器布置;
图7示出了其中一些虚拟服务器不可操作的图5和6的虚拟服务器布置。
具体实施例方式图2是根据本发明的一方面的系统的框图,该系统总体由参考标记10指示。系统10包括调度器12、第一服务器16、第二服务器17和第三服务器18。第一服务器16包括第一虚拟服务器21和第二虚拟服务器22。第二服务器17包括第一虚拟服务器23和第二虚拟服务器24。第三服务器18包括第一虚拟服务器25和第二虚拟服务器26。在系统10中,调度器12负责接收输入请求并根据某种算法将请求转发至服务器。虚拟服务器21至26被指派有标识(ID)。原理上,虚拟服务器21至26可以实现任何算法;由虚拟服务器21至26实现的算法与本发明不相关。调度器12将请求转发至服务器21至26,保持每个服务器的负载平衡。调度器应当被设计为使得用于目的地服务器的查找应当简单,以便提供高速请求转发。类似地,应当提供用于在服务器发生故障的情况下选择备份服务器的快速且简单的算法。以下进一步讨论用于在正常目的地服务器发生故障的情况下选择“正常”目的地(虚拟)服务器和备份(虚拟)服务器的算法。最后,调度器12不应当需要太多存储器。作为示例,可以提供基于散列的查找。在基于散列的查找方法中,当在调度器12处接收到请求时,调度器基于会话的某标识符来计算散列值,该标识符可以是从请求消息获取的,例如客户端的IP地址和端口号、客户端在SIP中的URL、在GTP中的TEID等。由于每个服务器(或虚拟服务器)负责整个值空间中的值的范围,因此调度器将找出哪个服务器的范围覆盖这个所计算出的散列值,并将请求转发至该服务器。利用合适的散列函数,可以在值空间中获得散列值的均匀分布。因此,可以选择或者甚至调整服务器的值范围,以适合每个服务器的实际处理能力。当测量具有会话号的负载时,通过基于散列值对请求进行调度来实现负载平衡。对于用于寻找具有给定值的匹配范围的详细查找方法,存在可以使用的许多可用算法,例如线性搜索、二进制搜索、自平衡二进制搜索树等。另一种可替换搜索方法是利用会话标识符的散列值作为索引来查找负责的目的地服务器。我们可以将精确的散列值用作索引,并构建较大的表以存储用于每个索引值的对应服务器信息。然而,由于存储需求,该方法一般不是优选的。如果忽略索引值的一些比特,则可以减小索引表的这种大小。例如,我们可以通过仅使用索引中的一些前缀比特来减小该表的大小。使用散列值的前缀等价于将ID空间分区到小分段中,其中,该索引表中的每个条目表示分段。前缀比特的数目确定了值空间中的对应分段的大小。我们可以将这些分段称为“元分段”。如果每个服务器的范围仅覆盖一个或多个元分段,则具有给定值的覆盖范围的查找的任务可以变为利用散列值作为索引来查找散列表,以找到覆盖元分段。详细地,范围的查找由两个步骤构成。第一步骤是使用会话标识符的散列值作为索引来寻找匹配的元分段。在第二步骤中,寻找与元分段对应的服务器范围。因此,需要另一服务器表存储服务器的信息。索引表中的元分段的每个条目将指向服务器表中的表示覆盖服务器范围的条目。因此,可以使用两个查找表来获得从散列值至某服务器范围的映射。如上所述,将服务器16、17和18中的每一个划分为多个虚拟服务器。典型地,虚拟服务器中的每一个被提供有标识(ID)。图3示出了圆(circle)中的虚拟服务器21至26的布置,该布置总体由参考标记20指示。在顶部处开始并绕图3的圆顺时针移动,按以下顺序提供虚拟服务器
I.第一服务器16的第一虚拟服务器21。2.第二服务器17的第一虚拟服务器23。3.第三服务器18的第一虚拟服务器25。4.第二服务器17的第二虚拟服务器24。5.第一服务器16的第二虚拟服务器22。6.第三服务器18的第二虚拟服务器26。在本发明中,将相邻服务器定义为沿顺时针方向的下一个虚拟服务器。因此,虚拟服务器23是虚拟服务器21的邻居,虚拟服务器25是虚拟服务器23的邻居,虚拟服务器24是虚拟服务器25的邻居,虚拟服务器22是虚拟服务器24的邻居,虚拟服务器26是虚拟服务器22的邻居,并且虚拟服务器21是虚拟服务器26的邻居。本发明将一个服务器中的会话复制到其下一个相邻服务器。在定义了相邻服务器的情况下,利用特定服务器(或虚拟服务器)对会话的处理可以在第一服务器发生故障的情况下容易地由相邻服务器接管。该故障转移(failover)需要调度器在该故障时段期间将请求转发至恰当的目的地。当然,可以以其他方式定义相邻服务器。关键点在于调度器12必须容易确定特定服务器的邻居。当使用邻居作为备份时,存在过载条件出现的潜在性。如果第一服务器A发生故障,则其所处理的请求将被传送至服务器A的备份服务器,比如服务器B。因此,服务器A的负载将被添加至服务器B的负载。用于保证服务器B未过载的最简单机制是确保服务器A和B在故障前的正常负载小于这些服务器的全部容量的50% (假定这些服务器的容量类似)。当然,这浪费了大量的容量。对多个虚拟服务器和图3中所示的布置的使用改进了该情形,如下所述。图4示出了分布在圆中的虚拟服务器21至26的布置,该布置由参考标记20’指示。布置20’与以上参照图3描述的装置20的区别在于服务器16不运行。因此,虚拟服务器21和22 (其由物理服务器16提供)不运行,并在布置20’中以点线示出。根据上述邻居原理,将已对虚拟服务器21进行的请求现在将被路由至虚拟服务器23 (绕布置20顺时针移动的下一虚拟服务器)。将已对虚拟服务器22进行的请求现在将被路由至虚拟服务器26(绕布置20顺时针移动的下一虚拟服务器)。该路由由调度器12处理。当然,作为邻居,虚拟服务器23和26将已经分别接收到与服务器21和22相关的上下文数据。虚拟服务器23是第二服务 器17的一部分,并且虚拟服务器26是第三服务器18的一部分。因此,在服务器17和18的虚拟服务器之间分割将已对服务器16的虚拟服务器进行的请求。因此,在该情形中,每个运行的物理备份服务器不会从故障服务器接管太多负载。如果每个物理服务器将其负载保持为约60%,那么当故障服务器的负载被添加至其备份服务器的负载时,总负载为约90% (假定用于服务器的容量和负载类似)。原理上,可以使用每物理服务器更多虚拟服务器,将故障服务器的负载进一步分发给更多其他物理服务器。因此,可以进一步提高在正常情形中每个服务器的可允许的负载。当服务器(例如服务器16)发生故障时,调度器12应当快速反应,以将服务器(或该物理服务器的虚拟服务器)的请求转发至其备份邻居服务器。这里,服务器是虚拟服务器,或者可以被视为仅服务器ID。利用线性范围搜索算法,如果发现请求与现在不可达的特定服务器范围相匹配,则调度器应当仅在线性表中向下移动一个条目,以得到故障服务器的邻居的信息。我们假定按负责范围的升序放置服务器的信息。利用二进制搜索和索引表搜索算法,服务器的信息可以置于服务器表中,该服务器表的条目依照范围的顺序。查找的结果是指向服务器表中的适当条目的指针。因此,在针对请求的搜索后递增最终指针值应当得到邻居服务器的条目。当然,其他算法是可能的。如以上参照图4所述,本发明提供了以下布置其中,对于任何物理服务器的所有虚拟服务器,备份邻居应当属于不同其他物理服务器。这确保了如果物理服务器发生故障,则在多个备份服务器之间分割由故障物理服务器提供的虚拟服务器的负载。图5示出了其中满足该条件并且还满足另一条件的布置,该布置总体由参考标记30指示。该另一条件是以下需求当任一个物理服务器发生故障时,对于剩下的任何物理服务器的虚拟服务器,备份邻居还应当属于不同其他物理服务器。图5中所示的布置30包括第一服务器的第一虚拟服务器31和第二虚拟服务器32、第二服务器的第一虚拟服务器33和第二虚拟服务器34、第三服务器的第一虚拟服务器35和第二虚拟服务器36、第四服务器的第一虚拟服务器37和第二虚拟服务器38、以及第五服务器的第一虚拟服务器39和第二虚拟服务器40。在图5中示出了虚拟服务器31至40,但是为了清楚,省略了提供这些虚拟服务器的物理服务器,如调度器那样。在顶部处开始并绕图5的圆顺时针移动,按以下顺序布置虚拟服务器31至40。I.虚拟服务器31。2.虚拟服务器33,使得虚拟服务器33是虚拟服务器31的邻居。3.虚拟服务器35,使得虚拟服务器35是虚拟服务器33的邻居。CN 102934412 A



8/17 页4.虚拟服务器37,使得虚拟服务器37是虚拟服务器35的邻居。
5.虚拟服务器39,使得虚拟服务器39是虚拟服务器37的邻居。
6.虚拟服务器32,使得虚拟服务器32是虚拟服务器39的邻居。
7.虚拟服务器38,使得虚拟服务器38是虚拟服务器32的邻居。
8.虚拟服务器34,使得虚拟服务器34是虚拟服务器38的邻居。
9.虚拟服务器40,使得虚拟服务器40是虚拟服务器34的邻居。
10.虚拟服务器36,使得虚拟服务器36是虚拟服务器40的邻居,并且虚拟服务器31是虚拟服务器36的邻居。
对于以上参照图2至4所述的系统10,虚拟服务器31至40被布置为使得在提供
一些虚拟服务器的物理服务器中的任一个不可操作的情况下,现在不可操作的虚拟服务器中的每一个由不同物理服务器的虚拟服务器备份。图6示出了总体由参考标记30’指示的布置。布置30’与布置30类似,并且区别仅在于虚拟服务器31和32 (以点线示出)不可操作。虚拟服务器31和32均由第一服务器(未示出)提供,并且因此,布置30’示出了其中第一服务器不可操作的情形。如上所述,在虚拟服务器不可操作的情况下,使用邻居虚拟服务器。因此,将已被转发至虚拟服务器31的请求现在被转发至虚拟服务器33,并且将已被转发至虚拟服务器32的请求现在被转发至虚拟服务器38。虚拟服务器33由第二服务器提供,并且虚拟服务器38由第四服务器提供,并且因此,将现在不可操作的第一服务器的负载分发给两个不同其他服务器。因此,布置30 (与布置10 —样)被布置为使得对于任何物理服务器的所有虚拟服务器,备份邻居属于不同其他物理服务器。然而,如上所指示,布置30进一步发展,这是由于当任一个物理服务器发生故障时,对于剩下的任何物理服务器的虚拟服务器,备份邻居还属于不同其他物理服务器。图7示出了总体由参考标记30”指示的布置。布置30”与布置30和30’类似,并且区别仅在于虚拟服务器31、32、35和36 (其以点线示出)不可操作。虚拟服务器31和32均由第一服务器(未示出)提供,并且虚拟服务器35和36均由第三服务器(未示出)提供。因此,布置30’’示出了其中第一和第三服务器不可操作的情形。因此,将已被转发至虚拟服务器35的请求现在被转发至虚拟服务器37,并且将已被转发至虚拟服务器36的请求现在被转发至虚拟服务器33。虚拟服务器37由第四服务器提供,并且虚拟服务器33由第二服务器提供,并且因此,将现在不可操作的第三服务器的负载分发给两个不同其他服务器。可以概括上述邻居原理,如以下所阐述。我们假定每个物理服务器具有#个虚拟服务器并且总共存在个物理服务器。可以详述上述第一需求(其被布置10和30均满足)如下
对于任何物理服务器的所有#个虚拟服务器,其备份邻居应当属于不同其他《个物理服务器。可以详述上述第二需求(其被布置30满足,但不被布置10满足)如下
当任一个物理服务器发生故障时,对于其余物理服务器中的任一个的#个虚拟服务器,备份邻居应当属于不同其他 个物理服务器。
11
有时,在数学上不可能满足第二条件。例如,当价7^时,发生故障时涉及物理服务器的最大数目。因此,需要备份处理的请求可以得到所有其他#个活动的物理服务器的帮助。每个物理服务器将仅取得最小量的额外请求。当无法满足第二条件时,可以重述第二条件如下
当任一个物理服务器发生故障时,对于任何剩下的物理服务器的#个虚拟服务器,其备份邻居应当属于不同其他个物理服务器。因此,存在可与备份邻居共享相同物理服务器的一个物理服务器的两个虚拟服务器。我们这里在ID空间的圆中列出虚拟服务器部署的一些示例。每个情形满足上述第一和第三需求。描述了每物理服务器具有4、8和16个虚拟服务器的示例。当然,#和《的其他组合的虚拟服务器部署的解决方案将对本领域技术人员来说显而易见。
我们使用数字来表示虚拟服务器,并且数字的值表示物理服务器。数字的行用于表示虚拟服务器在空间圆中的实际放置,这可以被视为沿该圆逐一地顺时针放置数字的行。当存在5个物理服务器时,我们将其编号为从O至4。由于每个物理服务器具有4个虚拟服务器(使得N+l=m),因此每个值将出现4次。下表示出了满足上述第一和第三需求的一个解决方案。
0 12 3 4 0 3 14 2 0 4 3 2 1 0 2 4 1 3
例如,如果物理服务器I发生故障,则需要四个虚拟服务器来提供备份。在第一行中,备份虚拟服务器属于物理服务器2。在第二行中,备份虚拟服务器属于物理服务器4。在第三行中,备份虚拟服务器属于物理服务器O。在第四行中,备份虚拟服务器属于物理服务器3。我们可以看到所有四个备份虚拟服务器均属于四个不同物理服务器,如以上第一需求中所述。其他物理服务器的故障仍满足该需求。此外,在物理服务器I的故障之后,虚拟服务器的部署如下。
0 2 3 4
0 3 4 2
04 3 2
02 4 3
在该情形中,满足第三需求。例如,对于物理服务器0,其邻居包括2、3和4,其中,存在属于物理服务器2的两个虚拟服务器。当存在从O至8编号的9个物理服务器时,每个物理服务器具有8个虚拟服务器,这意味着在虚拟服务器部署的表中存在8个行。下表示出了满足第一和第三需求的可能解决方案之一。
012345678
031572486
074163852
053718264087654321
068427513
025836147
046281735
例如,当物理服务器I发生故障时,备份邻居在每一行中分别来自物理服务器2、5、6、8、0、3、4 和 7。服务器I的故障后的虚拟服务器部署仍满足第三需求,其中,另一物理服务器的另一故障将导致对其他7个活动服务器的几乎均匀的请求分布。当存在17个物理服务器时,每个物理服务器可以具有16个虚拟服务器。下表示出了虚拟服务器部署的解决方案之一。
OI234b6 891011121314IS160-3I5rJ15139116842101 1614D74I6M8 .52151293Ii161310O637111H9151113462a16101412O136158I1031251471692114O15591411I1371041663B122O113132712I1431651015496O9711513315I16214412€108O1815141312I 1 4 109B76'C1432IO141612102486IlQ131575I3O101316Xl39121525B14€47O1214101682€41311159II35O4II2916I14512310IB15613O21283€16410713IIZ149515O6q41510516314I12I213811CB10612414216I15313511I9例如,当物理服务器I发生故障时,备份邻居在每一行中分别来自物理服务器2、5、6、9、10、13、14、16、0、3、4、7、8、11、12和17。在邻居列表中不存在复制,并且其满足第一需求。可以通过消除所有行中的任何数字来执行对满足第三需求的验证。可以以数学方式表达如上所述满足虚拟服务器的布置的需求的问题,如以下详细描述。可以定义第一问题,其中,存在值从I至的正整数的集合。对于每个值,存在左个数字,其中,A是正整数。总共存在AXffi个数字。这些数字将置于圆中。我们定义特定数字的下一数字沿顺时针,表示为next (a)。需要找出数字在圆中的放置,满足以下需求
I.对于该圆中的任何数字a, next (a) a。2.对于从I至的任何值x,在集合{b I b=next (a), a=x}中不存在彼此相等的两个数字。3.如果从该圆取走任何相同值(从I至ffi)的々个数字,则该圆中剩下的数字应当仍满足需求I)。
4.这些数字应当尽可能均匀地置于该圆中,以使该圆中的分段(由这些数字划分)的长度尽可能彼此接近。5.当在该圆中添加新的A个数字(具有值ffi)时,其他数字的位置将不会改变,并且新圆中的数字应当仍满足以上需求。这描述了以下情形存在《个物理服务器,并且每个物理服务器具有A个对等端ID。需求I)意味着对于任何虚拟节点(对等端),其与其第一接替者(对等端)位于不同物理服务器中。需求2)意味着对于相同物理服务器中的任何两个虚拟节点(对等端),其第一接替者位于不同其他物理服务器中。需求3)意味着即使在任一个物理服务器发生故障之后,对于任何虚拟节点(对等端),其与其第一接替者仍位于不同物理服务器中。
需求4)将要将对等端的负责的空间分段保持为在分段长度方面较不多样。需求5)要求在将其他对等端的位置保持不移动的同时支持添加新物理服务器。还可以定义与其中存在从I至m的 个整数值并且对于每个值,存在A个数字的第一问题类似的第二问题。这些数字在圆中的部署将满足以下需求
I.满足问题I的所有需求1)、2)、3)、4)和5)。2.对于从 I 至的任何值 X、y,定义 X = {b | b=next (a), a=x}和 Y = {bb=next (a), a=y},如果 y e X,则 χ g Y03.在移除A个相同值数字之后,如果移除了具有相同值的另一组A个数字,则该圆中剩下的数字仍应当满足需求I)。注意,需求7)排除了以下这种情况物理服务器A备份物理服务器B的数据的一部分,而物理服务器B备份物理服务器A的数据的一部分。还要注意,需求8)保证即使2个物理服务器损坏,对于任何虚拟节点(对等端),其与其第一接替者位于不同物理服务器中。当一个物理服务器损坏时,对于问题I和2,其工作负载可以被均匀分发给其他左U4)个物理服务器。尤其对于问题1,当左3-1时,可以达到严格的故障转移中负载平衡(LBIF),即,故障服务器的所有工作负载将被均匀分发给所有其他服务器,那么,不同物理服务器之间的负载比是认+1)(左+1);对于其他情况,不同物理服务器之间的最大负载比是(左+1) : k ο当两个或更多个物理服务器损坏时,其还可以保持超优化的负载平衡,并且根据左值和问题I或2,不同物理服务器之间的最大负载比是以+3):(左+2)、或认+3):认+1)、或0+3):左,尤其对于问题I,当左= -1时,最大负载比是0+3) : 0+2)。现在描述故障转移中负载平衡的虚拟节点ID分配(VNIAL)算法。首先,我们将描述用于针对特殊情况(即, 是质数)将数字置于圆中的方法,其次,我们将针对一般情况(即,不论《是质数还是合数)对圆进行扩展,那么我们引入该方法以在该圆中添加新数字。定义对于给定的自然数心当且仅当以下情况出现时,自然数a和卢是共轭的
1)a和》互质;以及
2)β和》互质;以及
3)α +β = m (mod m)。CN 102934412 A



12/17 页对于其中m是质数的特殊情况,解决第一问题如下。从问题I的描述我们可以容易地发现,因此,以下讨论在的假设下进行。根据初等数论,每个质数(>4)具有一个或多个原根。我们假定r是《的原根,并定义一系列行向量如下
JT丨=(1} 2,·■-,*)
夂=( 1.2λ i = K X 3 ···
M ξ (Xa ) X r (mod m)
由于r是》的原根,因此仅存在》-1个不同的行向量,对于任何i = I, 2, 3, ---,Hi-I,气 η-I E,并且,X1 y, Jrz y, -",Xirhi是数1,2,…m-Ι的全排列。这意味着左的
最大值是》_1,我们首先考虑々二《-I。可以证明,这种放置,沿圆顺序地放置石(i 二 1,2,3,…, -1),可以满足问题I的需求,除了添加新数的需求之外。在其他部分中将讨论添加新数的算法。事实上,我们可以定义一系列行向量
— (Vi,l>VU> ... )
其中’ Vij = (IXJ)(modm),i = 1,2,…= 1,2,…,m。结论可以证明
1)R = Za ,其中Z = Γ*'1 (modm);
2),其中 i,7 = I, 2, ,m-l ;
3)为了满足问题I的需求,■^后(顺时针)可以紧跟除外的任何其他向量;
4)存在用于放置这些向量的不同方法,其可以满足问题I的需求,例如,
K, f,2,…,Vt,I1,匕_25 ■■■,L,其中1 = ¥ ;
5)从每个共轭对R和; .,仅选择一个,那么其还可以满足问题I的附加需求7),例如 J··· ο可以解决第二问题如下。当《是质数时,r是《的原根。我们生成ffi-Ι个不同行向量尤(i= 1,2,3,吣,《-1),如部分0中所述。由于任何两个值可以变为邻居仅一次,因此
yyi 一 Iyyi 一 I
我们可以获得K Y。令 = γ,我们可以从以上《-I个向量中选择 个向量,并根据
2Z
特定顺序沿圆放置这些向量。结论可以证明
I)如果2和《-2都不是《的原根,则沿该圆顺序地放置以下t个向量可以满足问题2的需求
1权利要求
1.一种方法,包括 接收请求; 选择要将所述请求转发至的第一虚拟服务器,其中,所述第一虚拟服务器由多个服务器之一提供,其中,所述服务器中的至少一些提供多个虚拟服务器;以及 在所述第一虚拟服务器不能够接收到所述请求的情况下,将所述请求转发至所述第一虚拟服务器的相邻虚拟服务器,其中,所述第一虚拟服务器的相邻虚拟服务器是与所述第一虚拟服务器不同的服务器的一部分。
2.根据权利要求I所述的方法,其中,服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
3.根据权利要求I或权利要求2所述的方法,其中,在服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
4.根据权利要求I或权利要求2所述的方法,其中,在服务器不可操作的情况下,其余服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且,任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务。
5.根据前述权利要求中任一项所述的方法,其中,将与请求相关联的会话信息发送至所述第一虚拟服务器和所述第一虚拟服务器的相邻虚拟服务器。
6.—种设备,包括 用于接收请求的输入; 用于将所述请求转发至第一虚拟服务器的输出,其中,所述第一虚拟服务器由多个服务器之一提供,并且其中,所述服务器中的至少一些提供多个虚拟服务器;以及 用于选择所述第一虚拟服务器的处理器,其中,在所述第一虚拟服务器发生故障的情况下,所述处理器选择所述第一虚拟服务器的相邻服务器,并且所述调度器的输出将所述请求转发至所述相邻服务器,其中,所述第一虚拟服务器的相邻服务器是由与所述第一虚拟服务器不同的服务器提供的虚拟服务器。
7.根据权利要求6所述的设备,其中,所述输出将与请求相关联的会话信息提供给所述第一虚拟服务器和所述第一虚拟服务器的相邻服务器。
8.根据权利要求6或权利要求7所述的设备,其中,服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
9.根据权利要求6至8中任一项所述的设备,其中,在服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
10.根据权利要求6至8中任一项所述的设备,其中,在服务器不可操作的情况下,其余服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且,任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务器。
11.一种包括多个服务器的系统,其中,所述服务器中的至少一些包括多个虚拟服务器,其中,每个虚拟服务器与相邻服务器相关联,其中,每个虚拟服务器的相邻服务器是不同其他服务器的一部分,并且其中,虚拟服务器的相邻服务器充当用于该服务器的备份。
12.根据权利要求11所述的系统,其中,服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
13.根据权利要求11或权利要求12所述的系统,其中,在服务器不可操作的情况下,其余服务器的每个虚拟服务器具有由不同其他服务器提供的相邻服务器。
14.根据权利要求11或权利要求12所述的系统,其中,在服务器不可操作的情况下,其余服务器的两个虚拟服务器具有由相同其他服务器提供的相邻服务器,并且,任何其余虚拟服务器中的每一个具有由不同其他服务器提供的相邻服务。
15.根据权利要求11至14中任一项所述的系统,还包括调度器,其中,所述调度器包括 用于接收请求的输入; 用于将所述请求转发至第一虚拟服务器的输出;以及 用于选择所述第一虚拟服务器的处理器。
16.一种包括多个虚拟服务器的服务器,其中,所述服务器形成包括多个服务器的系统的一部分,其中,所述多个服务器中的至少一些包括多个虚拟服务器,所述服务器被适配为使得每个虚拟服务器与相邻虚拟服务器相关联,其中,每个虚拟服务器的相邻服务器是不同服务器的一部分,并且其中,虚拟服务器的相邻服务器充当用于该服务器的备份。
17.一种计算机程序产品,包括 用于接收请求的装置; 用于选择要将所述请求转发至的第一虚拟服务器的装置,其中,所述第一虚拟服务器由多个服务器之一提供,其中,所述服务器中的至少一些提供多个虚拟服务器;以及 用于在所述第一虚拟服务器不能够接收到所述请求的情况下将所述请求转发至所述第一虚拟服务器的相邻虚拟服务器的装置,其中,所述第一虚拟服务器的相邻虚拟服务器由与所述第一虚拟服务器不同的服务器提供。
全文摘要
本发明描述了一种服务器集群,其实现了集群中的服务器之间的负载平衡。将集群中的服务器中的至少一些划分为多个虚拟服务器,其中,每个虚拟服务器与相邻服务器相关联,该相邻服务器充当用于该虚拟服务器的备份。特定服务器的每个虚拟服务器的相邻服务器是与虚拟服务器不同的物理服务器的一部分,使得在物理服务器对使用来说不可用的情况下,在多个不同物理服务器之间分割该物理服务器的虚拟服务器的负载,从而降低使任何特定物理服务器过载的可能性。
文档编号H04L29/08GK102934412SQ201080067506
公开日2013年2月13日 申请日期2010年6月18日 优先权日2010年6月18日
发明者付斌, 毛峰宇, 汪永明, 张若渊 申请人:诺基亚西门子通信公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1