一种负载均衡方法及网络设备与流程

文档序号:17376014发布日期:2019-04-12 23:19阅读:178来源:国知局
一种负载均衡方法及网络设备与流程

本申请涉及计算机网络技术领域,尤其涉及一种负载均衡方法及网络设备。



背景技术:

负载均衡服务是it系统中的一种基础服务,它可以将访问同一ip地址的流量按照某种算法分配给后端的多台服务器。源地址哈希算法就是其中的一种流量分配算法,基于源地址哈希的流量分配算法可以将来自同一源ip地址的访问请求始终分配到同一台服务器,因此具有简单高效、会话稳定、无状态的优点。但是当访问者总体使用少量ip源地址时,例如内网中的主机访问负载均衡服务或负载均衡服务前串联有源地址转换能力的设备,源地址哈希算法的分配均匀性会急剧下降,容易使后端的服务器中存在一部分服务器过载,而另一部分服务器空闲。而服务器的负载不均会导致设备的资源利用率低下,成本上升,甚至影响业务的正常运行。



技术实现要素:

本申请实施例提供一种负载均衡方法及网络设备,用以解决源地址较少的情况下,哈希均衡性较差的技术问题。

第一方面,本申请实施例提供一种负载均衡方法,该方法包括:获取能够访问负载均衡设备的至少一个源ip地址,根据预设的哈希算法确定至少一个源ip地址对应的哈希值,该负载均衡设备与一包括n台服务器的服务器集群通信连接,n为正整数;根据至少一个源ip地址对应的哈希值在哈希环上的分布情况,确定n台服务器对应的哈希值,这n台服务器对应的哈希值将哈希环划分为n个哈希值区间,且n个哈希值区间中的任两个哈希值区间中分布的源ip地址对应的哈希值的数量之差的绝对值小于第一阈值;根据n台服务器对应的哈希值和哈希算法,确定n台服务器的ip地址。

采用本申请实施例提供的技术方案,根据能够访问负载均衡服务的各个源ip地址对应的哈希值在哈希环上的分布情况,为服务器集群中的各台服务器设置合适的ip地址,来适应哈希算法,使得源ip地址对应的哈希值在哈希环中各个哈希值区间中分布较为均匀,即使访问负载均衡服务器的源ip地址较少,也可以将来自源ip地址的访问请求均衡地分配到各台服务器,从而有效提高负载均衡性,提高服务器的利用率。

在一种可能的设计中,根据至少一个源ip地址对应的哈希值在哈希环上的分布情况,确定n台服务器对应的哈希值,包括:根据至少一个源ip地址对应的哈希值在哈希环上的分布情况,逐个向服务器集群中添加服务器,其中添加的第i台服务器对应的哈希值将哈希环中的第一哈希值区间划分成两个哈希值区间,且这两个哈希值区间中分布的源ip地址对应的哈希值的数量之差的绝对值小于第一阈值;该第一哈希值区间为添加第i-1台服务器后哈希环被划分的i-1个哈希值区间中的一个哈希值区间,且该第一哈希值区间中分布的源ip地址对应的哈希值的数量分别大于等于分布在上述i-1个哈希值区间中每个其它哈希值区间中分布的源ip地址对应的哈希值的数量,i为大于1且小于等于n的整数。

本申请实施例中,通过逐一向服务器集群中添加服务器的方式确定各台服务器的哈希值,可合理设置服务器集群的容量,确保服务器集群中的每台服务器均负载正常。

在一种可能的设计中,确定n台服务器的ip地址之后,该方法还包括:需要对服务器集群扩容时,则从组成哈希环的哈希值区间中确定出第二哈希值区间,该第二哈希值区间中分布的源ip地址对应的哈希值的数量大于等于其它哈希值区间中分布的源ip地址对应的哈希值的数量;确定新增服务器对应的哈希值,该新增服务器对应的哈希值位于第二哈希值区间中,并将第二哈希值区间划分成两个哈希值区间,且这两个哈希值区间中分布的源ip地址对应的哈希值的数量之差的绝对值小于第一阈值;根据新增服务器对应的哈希值和哈希算法,确定新增服务器的ip地址。

在一种可能的设计中,确定n台服务器的ip地址之后,该方法还包括:需要缩小服务器集群的容量时,则从组成哈希环的哈希值区间中确定出第三哈希值区间,该第三哈希值区间中分布的源ip地址对应的哈希值的数量小于等于其它哈希值区间中分布的源ip地址对应的哈希值的数量;沿第一方向查找第三哈希值区间的第一边界哈希值,将对应的哈希值等于第一边界哈希值的服务器撤出服务器集群,第一方向为逆时针方向或顺时针方向。

本申请实施例提供的技术方案可支持服务器集群的动态伸缩功能,如此,当服务器集群因性能不足等原因需要扩容时,可向服务器集群中新增服务器,并使新增的服务器承担部分原先由服务器集群中负载最重的服务器承担的处理业务,当服务器集群的性能过剩时,也可选择将服务器集群中负载较轻的服务器撤出,从而实现对各台服务器之间的负载状况的动态调整。

在一种可能的设计中,确定所述n台服务器的ip地址之后,该方法还包括:接收针对服务器集群的访问请求,所述访问请求中包括第一源ip地址;确定所述第一源ip地址对应的哈希值在所述哈希环中所处的第四哈希值区间;沿第一方向查找所述第四哈希值区间的第二边界哈希值,将访问请求发送至服务器集群中对应的哈希值等于第二边界哈希值的服务器进行处理,所述第一方向为逆时针方向或顺时针方向。

第二方面,本申请实施例提供另一种负载均衡方法,该方法包括:获取服务器集群中的n台服务器的ip地址,根据n台服务器的ip地址和预设的哈希算法确定n台服务器对应的哈希值,该服务器集群与负载均衡设备通信连接,n为正整数;将n台服务器对应的哈希值配置到一哈希环上,该n台服务器对应的哈希值将哈希环划分为n个哈希值区间;根据n个哈希值区间,确定能够访问负载均衡设备的至少一个源ip地址分别对应的哈希值,其中,该至少一个源ip地址分别对应的哈希值中分布在n个哈希值区间中、且任两个哈希值区间中分布的源ip地址对应的哈希值的数量之差的绝对值小于第一阈值;根据至少一个源ip地址分别对应的哈希值和预设的哈希算法,确定至少一个源ip地址。

采用本申请实施例提供的技术方案,通过确定服务器集群中的n台服务器对应的哈希值,在根据n台服务器对应的哈希值划分而来的n个哈希值区间中,为能够访问负载均衡服务的各个源ip地址确定对应的哈希值,进而设置合适的源ip地址。如此,可使源ip地址对应的哈希值较为均匀地分布在n个哈希值区间中,即使访问负载均衡服务器的源ip地址较少,也可以将来自源ip地址的访问请求均衡地分配到各台服务器,从而有效提高负载均衡性,提高服务器的利用率。

在一种可能的设计中,根据n个哈希值区间,确定能够访问负载均衡设备的至少一个源ip地址对应的哈希值,包括:根据n个哈希值区间,逐一确定至少一个源ip地址中每个源ip地址对应的哈希值,其中,第j个源ip地址对应的哈希值位于n个哈希值区间中的目标哈希值区间,所述目标哈希值区间中分布的源ip地址对应的哈希值的数量小于等于n个哈希值区间中每个其它哈希值区间中分布的源ip地址对应的哈希值的数量,j为正整数。

第三方面,本申请实施例提供一种网络设备,该网络设备具有实现上述第一方面或第一方面的任一种可能的设计中网络设备的功能、或具有实现上述第二方面或第二方面的任一种可能的设计中网络设备的功能。其功能可以通过硬件实现,也可以通过硬件执行相应的软件实现,所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一种可能的设计中,所述网络设备中包括处理模块和收发模块,所述处理模块被配置为支持该网络设备执行上述第一方面或第一方面的任一种设计中相应的功能、或执行上述第二方面或第二方面的任一种设计中相应的功能。所述收发模块用于支持该网络设备与其他通信设备(如连接的服务器集群)之间的通信。所述网络设备还可以包括存储模块,所述存储模块与处理模块耦合,其保存有网络设备必要的程序指令和数据。作为一种示例,处理模块可以为处理器,收发模块可以为收发器,存储模块可以为存储器。

第四方面,本申请实施例提供一种芯片,所述芯片与存储器耦合,用于读取并执行所述存储器中存储的软件程序,以实现上述第一方面中任一种可能的设计中的方法、或实现上述第二方面中任一种可能的设计中的方法。

第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机存储介质中存储有计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述第一方面中任一种可能的设计中的方法、或执行上述第二方面中任一种可能的设计中的方法。

第六方面,本申请实施例提供一种计算机程序产品,当计算机读取并执行所述计算机程序产品时,使得计算机执行上述第一方面中任一种可能的设计中的方法、或执行上述第二方面中任一种可能的设计中的方法。

附图说明

图1为本申请实施例适用的一种网络架构示意图;

图2为本申请实施例提供的一种哈希环的示意图;

图3为本申请实施例提供的一种负载均衡方法对应的流程示意图;

图4为本申请实施例中确定服务器对应的哈希值的一种实现方式;

图5a至图5d为本申请实施例中确定服务器对应的哈希值的另一种实现方式;

图6为本申请实施例中通过界面提示启用负载均衡服务的示意图;

图7为本申请实施例提供的另一种负载均衡方法对应的流程示意图;

图8为本申请实施例提供的网络设备的结构示意图;

图9为本申请实施例提供的网络设备的另一结构示意图。

具体实施方式

下面结合说明书附图对本申请实施例做详细描述。

需要注意的是,本申请实施例中的术语“系统”和“网络”可被互换使用。“多个”是指两个或两个以上,鉴于此,也可以将“多个”理解为“至少两个”。“至少两个”,可以理解为两个或更多个,例如理解为两个、三个或更多个。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。

在下文的描述中,除非有相反的说明,“第一”、“第二”等序数词,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。

图1示例性示出了本申请实施例的一种应用场景,或者说是本申请实施例适用的一种网络架构。如图1所示,该网络架构中包括至少一个客户端101、负载均衡设备102和一包括n台服务器的服务器集群103,其中,n为正整数。至少一个客户端与负载均衡设备之间、以及负载均衡设备与服务器集群中的每台服务器之间均具有通信连接。

客户端,可以为用户的终端设备或是运行在用户的终端设备上的客户端应用程序,例如浏览器应用程序等。该终端设备可以为便携设备(例如:智能手机、平板电脑、笔记本型计算机、智能穿戴设备等),也可以为个人计算机(personalcomputer,pc)等设备。本申请实施例中,客户端可通过负载均衡设备向服务器集群中的服务器发送访问请求,在访问请求中携带源ip地址,该源ip地址为客户端的ip地址。在一种可能的实现方式中,访问请求为与服务器集群中的服务器建立网络连接的连接建立请求,例如可以是建立传输控制协议(transmissioncontrolprotocol,tcp)连接的连接建立请求。为了描述简便,本申请实施例中提到的“源ip地址”均是指客户端的ip地址,相对应地,目的ip地址是指负载均衡设备的ip地址,或是服务器的ip地址。

服务器集群,可包括n台服务器。其中,每台服务器均部署有相同的应用程序,用于接收客户端通过负载均衡设备发送的访问请求,与客户端建立网络连接,执行客户端请求的相应处理,然后向客户端返回处理结果。本申请实施例中,在系统初始启用负载均衡服务时,可以由本领域技术人员根据系统规模或用户访问量等因素设定服务器集群的容量,即n的取值。在后续负载均衡服务的运行过程中,负载均衡设备也可以根据客户端的业务量或网络流量的变化对服务器集群的容量进行动态调整。

负载均衡设备,位于客户端与服务器集群之间,用于接收客户端发送的访问请求,将访问请求发送至服务器集群中的一台服务器。本申请实施例中,负载均衡设备可根据某种分配策略,决定客户端发送的访问请求应发送至服务器集群中的哪台服务器处理。作为客户端与服务器之间的调度者,负载均衡设备设置分配策略的目的在于,将客户端总体发送的访问请求尽可能均匀地发送至服务器集群中的各台服务器。可以理解为,负载均衡设备将来自客户端的网络流量通过设定的分配策略分发到服务器集群中不同的服务器上,以使各台服务器协同对外提供服务,共同承担来自客户端的访问业务,避免服务器集群中各台服务器的负载不均,出现部分服务器过载的情况,从而提高整个系统的可用性。

本申请实施例中,负载均衡设备可采用源ip地址结合一致性哈希的分配策略。具体来说,在系统启用负载均衡服务时,服务器集群中的每台服务器都具有自己的ip地址。负载均衡设备可根据服务器集群中n台服务器的ip地址,基于某种哈希算法,计算各台服务器对应的哈希值,然后将得到的n台服务器的哈希值配置到一个数值区间逻辑环上,称为哈希环。需要说明的是,本申请实施例中,当提及服务器的ip地址时,均可包含服务器的ip地址和端口号两项信息。举例来说,计算服务器对应的哈希值可以是根据服务器的ip地址和端口号信息,计算得到服务器对应的哈希值;确定出服务器的ip地址也可以是确定出服务器的ip地址和服务器的端口号信息。为了简洁,下文不再赘述。

图2示例性示出了本申请实施例提供的哈希环,该哈希环的数据范围从0到232,环中的每个大圆圈为根据服务器的ip地址计算得到的哈希值,代表服务器集群中的一台服务器。服务器集群中的n台服务器根据各自对应的哈希值而分布在哈希环上的不同位置。如图2所示,n台服务器对应的哈希值将整个哈希环划分为相同数量的哈希值区间,一个哈希值区间是哈希环上的一段哈希值的数据范围。

本申请实施例中,一个哈希值区间可与服务器集群中的一台服务器一一对应。在一种可能的实现方式中,针对组成哈希环的任一哈希值区间,沿着第一方向从该哈希值区间开始查找,将查找到的第一台服务器确定为该哈希值区间对应的服务器。换句话说,若某台服务器的服务器哈希值为该哈希值区间在第一方向上的边界哈希值,则可认为这台服务器为该哈希值区间对应的服务器。其中,第一方向为哈希环的正方向,它可以是顺时针方向,也可以是逆时针方向,本申请实施例不作具体限定。示例性地,图2中选取了顺时针方向为第一方向。

在系统启用负载均衡服务后,负载均衡设备可接收客户端发送的访问请求,访问请求中的源ip地址为客户端的ip地址,目的地址为负载均衡设备提供的虚拟ip地址。负载均衡设备可根据访问请求中的源ip地址,基于同样的哈希算法,计算源ip地址对应的哈希值。然后根据该源ip地址对应的哈希值在哈希环中所处的哈希值区间,将访问请求发送至对应的服务器处理。也就是说,哈希值位于同一个哈希值区间内的源ip地址都被分配给该哈希值区间对应的服务器,来自这些源ip地址的访问请求都将被发送至该服务器处理。

基于上述分配策略,在客户端发送的访问请求总体使用较少的源ip地址的情况下,仅仅依赖哈希算法,很难实现将访问请求均匀分配给服务器集群中的多台服务器。鉴于此,本申请实施例提供一种负载均衡方法,该方法可适用于访问负载均衡设备的源ip地址可知、服务器集群中各台服务器的ip地址可控的环境下,通过在启用负载均衡服务前,根据源ip地址对应的哈希值在哈希环上的分布情况,为服务器集群中的各台服务器设置合适的ip地址,来适应哈希算法,使得源ip地址对应的哈希值在哈希环中各个哈希值区间中分布较为均匀,各台服务器被分配到数量趋于平均的源ip地址,提高负载均衡性。

图3示例性示出了本申请实施例提供的一种负载均衡方法,该方法可由负载均衡设备来执行,也可以由对负载均衡设备进行管理和配置的其它网络设备来执行。下面将以执行主体为负载均衡设备为例进行详细说明。如图3所示,该方法包括:

步骤s301:获取能够访问负载均衡设备至少一个源ip地址,根据预设的哈希算法确定该至少一个源ip地址对应的哈希值。

本申请实施例中,能够访问负载均衡设备的源ip地址可为,能够与负载均衡设备通信的客户端的ip地址,负载均衡设备可根据系统的网络配置或其他途径获取这些源ip地址,本申请对此不作具体限定。此外,上述预设的哈希算法可以为jhash哈希算法,也可以为其它类型的哈希算法,本申请实施例对此不作具体限定。负载均衡设备可根据系统需要选择合适的哈希算法,只要计算客户端哈希值与计算服务器哈希值采用相同的哈希算法即可。

步骤s302:根据该至少一个源ip地址对应的哈希值在哈希环上的分布情况,确定n台服务器对应的哈希值,n台服务器对应的哈希值将哈希环划分为n个哈希值区间,且n个哈希值区间中任两个哈希值区间中分布的客户端哈希值的数量之差的绝对值小于第一阈值。

本申请实施例中,在已知能够访问负载均衡服务的源ip地址的情况下,可将获取到的至少一个源ip地址对应的哈希值配置到哈希环上。一般来说,源ip地址对应的哈希值在哈希环上的分布有可能不均匀,会出现有些位置比较稠密,有些位置比较稀疏的情况。因此,负载均衡设备可根据源ip地址对应的哈希值在哈希环上的分布情况,选取n台服务器对应的哈希值,并且这n台服务器对应的哈希值将哈希环划分成n个哈希值区间后能够满足条件:n个哈希值区间中任两个哈希值区间中分布的源ip地址对应的哈希值的数量之差的绝对值小于第一阈值。

其中,第一阈值为大于0的实数。通常情况下,可以认为第一阈值取值较小时,系统的负载均衡性也越好,但这不是绝对的。本领域技术人员可以根据当前的访问业务量、系统规模、均衡性要求等多种因素进行综合考量来设定合适的第一阈值,本申请实施例对此不作具体限定。当n个哈希值区间中的任两个哈希值区间中分布的源ip地址对应的哈希值的数量之差的绝对值小于第一阈值时,认为源ip地址对应的哈希值较为均匀地分布在n个哈希值区间中,如此,来自各个源ip地址的访问请求就可以均匀地分配给各台服务器处理,从而获得较好的负载均衡性。示例性地,在绝对理想的情况下,第一阈值可以设置为1,如此,n个哈希值区间中任两个哈希值区间中分布的源ip地址对应的哈希值的数量完全相同,即哈希值数量之差为0,从而使得服务器集群中n台服务器的负载情况也完全相同,达到最佳的负载均衡性。一般来说,允许服务器集群中n台服务器的负载情况存在略微差别,因此,可以将第一阈值设置为较小的某一正整数。

在一种可能的实现方式中,若服务器集群的容量较小,例如服务器集群中服务器的数量小于等于10,可采用暴力方式或在考虑采用的哈希算法的特性的基础下,为各台服务器尝试合适的哈希值,从而得到所有的服务器对应的哈希值,达到均匀分配的效果。示例性地,在图4所示的哈希环中,每个小圆圈为一个源ip地址对应的哈希值,代表一个源ip地址。负载均衡设备共获取到8个能够访问负载均衡服务的源ip地址,并相应计算得到8个源ip地址对应的哈希值,分别位于图4中各个小圆圈所示的位置。每个大圆圈为一台服务器对应的哈希值,代表服务器集群中的一台服务器。该服务器集群共包括4台服务器,通过逐个尝试各台服务器对应的哈希值,将服务器对应的哈希值设定在图4中各个大圆圈所示的位置,如此,从而服务器集群中的每台服务器都被分配到两个源地址,获得较好的均衡性。

在另一种可能的实现方式中,将获取到的源ip地址对应的哈希值配置到哈希环上后,可以采用逐个向服务器集群中增加服务器的方式,逐步确定各台服务器对应的哈希值。

具体的,当向服务器集群中放入第一台服务器时,第一台服务器对应的哈希值可以随意选择,例如可以选择在图5a中所示的位置,这时整个哈希环中只存在一个哈希值区间1,所有的源ip地址对应的哈希值都分布在哈希值区间1中,这样,来自所有源ip地址的访问请求都将被分配到第一台服务器处理。

当向服务器集群中放入第二台服务器时,要求第二台服务器对应的哈希值能够将第一台服务器原先被分配的源ip地址分取一半。例如,可将第二台服务器对应的哈希值设置在图5b中所示的位置,该第二台服务器对应的哈希值能够将原先的哈希值区间1划分为两个哈希值区间,分别为新的哈希值区间1和哈希值区间2,并且使源ip地址对应的哈希值一半分布在哈希值区间1中,另一半分布在哈希值区间2中,如此,来自源ip地址的访问请求将会被平均分配给第一台服务器和第二服务器,即第一台服务器和第二台服务器被分配数量相同的源ip地址。

当向服务器集群中放入第三台服务器时,由于源ip地址对应的哈希值分布在哈希值区间1和哈希值区间2中的数量相同,此时可以选择哈希值区间1或哈希值区间2来插入第三台服务器对应的哈希值。以选择哈希值区间2为例,由于第二台服务器为哈希值区间2对应的服务器,因此,选取第三台服务器对应的哈希值时要求第三台服务器对应的哈希值能够将第二台服务器被分配的源ip地址分取一半。例如,可将第三台服务器对应的哈希值设置在如图5c中所示的位置,以使第三台服务器对应的哈希值能够将哈希值区间2进一步划分为两个哈希值区间,分别为新的哈希值区间2和哈希值区间3,并且能够使原先分布在哈希值区间2中的源ip地址对应的哈希值平均分布在新的哈希值区间2和哈希值区间3中。如此,对应的哈希值位于原先的哈希值区间2中的源ip地址发送的访问请求将会平均分配给第二台服务器和第三台服务器处理,即第二台服务器和第三台服务器将会分配到数量相同的源ip地址。

当向服务器集群中放入第四台服务器时,如图5c中所示,第一台服务器被分配的源ip地址的数量最多,此时应选择哈希值区间1来插入第四台服务器对应的哈希值,要求第四台服务器对应的哈希值能够将第一台服务器被分配的源ip地址的分取一半。例如,可将第四台服务器对应的哈希值设置在图5d中所示的位置,以使第四台服务器对应的哈希值能够将哈希值区间1进一步划分为两个哈希值区间,分别为新的哈希值区间1和哈希值区间4,并且能够使原先分布在哈希值区间1中的源ip地址对应的哈希值平均分布在新的哈希值区间1和哈希值区间4中。如此,对应的哈希值位于原先的哈希值区间1中的源ip地址发送的访问请求将会平均分配给第一台服务器和第四台服务器处理,即第一台服务器和第四台服务器将会分配到数量相同的源ip地址。

依此类推,当向服务器放入第i台服务器时,i为大于且小于等于n的整数,应首先确定哈希环中分布的源ip地址对应的哈希值最多的第一哈希值区间。该第一哈希值区间中分布的源ip地址对应的哈希值的数量大于等于分布在当前的哈希环中其它哈希值区间中的数量。可以理解为,在放入第i-1台服务器后,哈希环被划分为i-1个哈希值区间,该第一哈希值区间为i-1个哈希值区间中分布的源ip地址数量最多的那个哈希值区间,或者当i-1个哈希值区间中分布的源ip地址对应的哈希值的数量均相同时,第一哈希值区间可以为i-1个哈希值区间中的任一个哈希值区间。进而,在第一哈希值区间中插入第i台服务器对应的哈希值,要求该第i台服务器对应的哈希值能够将对应第一哈希值区间的那台服务器被分配的源ip地址分取一半。因此,可选取第i台服务器的哈希值,使得该哈希值能够将第一哈希值区间划分成两个哈希值区间,且两个哈希值区间中分布的源ip地址对应的哈希值的数量趋于平均,即分布在两个哈希值区间中的源ip地址的数量之差的绝对值小于第一阈值。

需要说明的是,当采用逐步向服务器集群中添加服务器的方式确定服务器集群中各台服务器对应的哈希值时,即可以预先确定服务器集群的容量n,然后逐渐向服务器集群中添加n台服务器,也可以在向服务器集群中添加服务器的过程中,根据各台服务器被分配的源ip地址的数量,衡量各台服务器的负载情况和负载均衡程度,进而确定服务器集群的容量n,即何时停止向服务器集群中添加服务器,从而有效控制各台服务器的负载状态,确保服务器集群正常安全运行。

步骤s303:根据n台服务器对应的哈希值和哈希算法,确定n台服务器的ip地址。

本申请实施例中,在确定出n台服务器对应的哈希值后,可以在服务器集群可选的ip地址中进行逐一尝试,得到n台服务器各自的ip地址,或者也可以在服务器的ip地址和对应的哈希值的数据库中进行查询,得到n台服务器各自的ip地址。

进一步地,尽管在初始启用负载均衡服务时,为各台服务器分配了数量趋于平均的源ip地址,但是在系统运行过程中,各个源ip地址对负载均衡服务的访问量是实时动态变化的,相应地,服务器集群中各台服务器的负载情况也在不断变化中。如此,启用负载均衡服务后,若各台服务器之间出现负载不均的状况,一种可能的设计为,负载均衡设备可根据当前各个服务器的负载情况,改变部分服务器对应的哈希值,并相应调整服务器的ip地址,从而提高整个系统的负载均衡性。需要说明的是,调整服务器的ip地址相当于改变服务器对应的哈希值在哈希环中所处的位置,原先被分配给某一台服务器的源ip地址可能会被重新分配给另一台服务器,因此,在这一设计中,可能会需要部分用户断开当前的网络连接并重新连接。

另一种可能的设计中,若出现各台服务器之间负载不均或是现有服务器集群中的服务器不能满足性能需求等情况,可以通过增加服务器容量的方式来解决。例如,可以向服务器集群中增加一台或多台服务器,令新增加的服务器分担部分原来由服务器集群中负载最重的服务器承担的处理业务以避免出现服务器过载的情形。具体的,在需要对服务器集群进行扩容时,负载均衡设备可先从组成哈希环的哈希值区间中确定出第二哈希值区间,该第二哈希值区间为当前的哈希环中的某个哈希值区间,其中分布的源ip地址对应的哈希值的数量大于等于其它哈希值区间中分布的源ip地址对应的哈希值的数量。也就是说,若当前哈希环中的各个哈希值区间中分布的源ip地址的数量不等,该第二哈希值区间为多个哈希值区间中分布的源ip地址数量最多的那个哈希值区间,若当前的哈希环中的各个哈希值区间中分布的源ip地址的数量均相同,该第二哈希值区间为多个哈希值区间中的任一哈希值区间。进而,确定新增服务器对应的哈希值,要求该新增服务器对应的哈希值能够将原先服务器集群中负载最重的服务器被分配的源ip地址的分取一半。该新增服务器对应的哈希值位于第二哈希值区间中,并将第二哈希值区间划分成两个哈希值区间,且两个哈希值区间中分布的源ip地址对应的哈希值的数量之差的绝对值小于第一阈值。最后,根据新增服务器对应的哈希值和采用的哈希算法,确定新增服务器的ip地址。

当服务器集群中服务器的性能过剩时,还可以相应地缩小服务器集群的容量。本申请实施例中,在需要缩小服务器集群的容量时,可将服务器集群中的各个服务器中负载量最小的服务器撤出,即多个服务器中被分配的源ip地址最少的服务器。在此基础上,还需要保证该服务器撤出后,不会导致相邻的服务器过载。具体的,负载均衡设备先从组成当前哈希环的哈希值区间中确定出第三哈希值区间,该第三哈希值区间中分布的源ip地址对应的哈希值的数量小于等于当前的哈希环中其它哈希值区间中分布的源ip地址对应的哈希值的数量。进而,沿第一方向查找第三哈希值区间的第一边界哈希值,将对应的哈希值等于该第一边界哈希值的服务器撤出服务器集群,所述第一方向为逆时针方向或顺时针方向。或者,若负载均衡设备存储有当前的哈希环中各个哈希值区间和服务器之间的对应关系,也可以直接将第三哈希值区间对应的服务器撤出。

可以看出,采用本申请实施例提供的技术方案,即使访问负载均衡服务的源ip地址的少量较少,负载均衡设备也可以将来自源ip地址的访问请求均衡地分配到服务器集群中的各台服务器上,此外还能够根据各台服务器的负载情况对服务器集群的容量进行动态调整,从而有效节约成本,提升服务器利用率,减少业务中断风险。

需要说明的是,在具体的应用场景中,本申请实施例提供的向服务器集群的添加或撤出服务器的实现方式可有效支持公有云的动态伸缩服务。示例性地,在公有云中为用户配置负载均衡服务的过程可以包括:首先创建负载均衡实例,配置一个监听的ip地址,用户的客户端可通过访问该ip地址获取服务。若客户端通过公网访问服务,也可以根据该ip地址映射一个公网ip地址,客户端访问该ip地址对应的公网ip地址获取服务。随后,配置监听器,该监听器配置的上述ip地址的某一个端口。然后,为监听器配置服务器地址池,服务器地址池是一个容器,其中可以容纳为用户配置的多个服务器的ip地址。进而,向服务器地址池中添加成员,每一个成员为根据本申请实施例中提供的方式确定出的一个服务器的ip地址,可以通过界面提示(例如图6所示)、预填信息、提供文档、提供小程序等工具的方式提示用户启用负载均衡服务,以采用本申请实施例中的方式为服务器地址池选择合适的服务器的ip地址,从而获取较好的负载均衡性。

此外,在确定出n台服务器的ip地址之后,本申请实施例还可包括:接收针对服务器集群的访问请求,该访问请求中包括第一源ip地址;确定第一源ip地址对应的哈希值在哈希环中所处的第四哈希值区间;沿第一方向查找第四哈希值区间的第二边界哈希值,将访问请求发送至服务器集群中对应的哈希值等于第二边界哈希值的服务器进行处理。

本申请实施例还提供另外一种负载均衡方法,该方法具体适用于访问负载均衡设备的源ip地址可控,但服务器集群中各台服务器的ip地址不可控的场景下。与上一方法实施例类似,该方法可由负载均衡设备来执行,也可以由对负载均衡设备进行管理和配置的其它网络设备来执行。下面以执行主体为负载均衡设备为例进行详细说明。如图7所示,该方法包括:

步骤s701:获取服务器集群中n台服务器的ip地址,根据n台服务器的ip地址和预设的哈希算法确定n台服务器对应的哈希值,n为正整数。

本申请实施例中,对步骤s601中采用何种哈希算法计算服务器对应的哈希值不作具体限定,但计算服务器对应的哈希值和后续步骤中计算源ip地址的哈希值所采用的哈希算法需相同。

步骤s702:将n台服务器对应的哈希值配置到一哈希环上,n台服务器对应的哈希值将哈希环划分为n个哈希值区间。例如,该哈希环可以是如图2所示的哈希环。

步骤s703:根据n个哈希值区间,确定能够访问负载均衡设备的至少一个源ip地址对应的哈希值,其中,至少一个源ip地址对应的哈希值中分布在n个哈希值区间中的任两个哈希值区间的数量之差的绝对值小于第一阈值。

在步骤s703中,第一阈值的含义和取值与上一方法实施例相同,且n个哈希值区间与服务器集群中的n台服务器一一对应,在此不再赘述。

步骤s703的目的在于,为n个哈希值区间中的每个哈希值区间安排数量趋近于均等的源ip地址对应的哈希值,从而实现各台服务器之间的负载均衡。在一种可能的实现方式中,负载均衡设备可逐一为至少一个源ip地址中的每个源ip地址确定对应的哈希值。具体包括,每次为一个源ip地址确定对应的哈希值时,首先从当前哈希环的n个哈希值区间中确定出分布的源ip地址对应的哈希值最少的第五哈希值区间,或者当n个哈希值区间中分布的源ip地址对应的哈希值的数量均相同时,从n个哈希值区间中选择任一哈希值区间作为第五哈希值区间。然后,在该第五哈希值区间为该源ip地址确定对应的哈希值。例如,可以沿着哈希环的第一方向,在哈希值区间1中为一个源ip地址确定一个对应的哈希值,然后在哈希值区间2中为下一个源ip地址确定一个对应的哈希值,依此类推。

步骤s704:根据至少一个源ip地址对应的哈希值和哈希算法,确定至少一个源ip地址。

应理解,本申请实施例也可以按照上一方法实施例中介绍的方式对服务器集群的容量进行调整,在此不再赘述。

需要说明的是,上述两个方法实施例中提供的技术方案还可以应用在公有云内部。例如,可以根据上述任一个方法实施例中的技术方案,为公有云内部的上下游设备编排合适的设备地址,从而使上游设备的流量可以均衡地分配到每一个下游设备,从而节约公有云的建设成本,提高设备利用率,提升整体性能并降低业务中断风险。

基于相同的发明构思,本申请实施例还提供一种网络设备,用于执行上述任一方法实施例中的方法流程。图8为本申请实施例提供的网络设备的结构示意图,如图7所示,该网络设备包括:收发模块810和处理模块820。

当该网络设备用于执行图3中所示的方法实施例时,处理模块820,用于根据预设的哈希算法确定至少一个源ip地址对应的哈希值、根据至少一个源ip地址对应的哈希值在哈希环上的分布情况,确定n台服务器对应的哈希值,根据n台服务器对应的哈希值和哈希算法,确定n台服务器的ip地址等操作;收发模块810,用于获取能够访问负载均衡设备的至少一个源ip地址的操作。应理解,本发明实施例中的处理模块820可以由处理器或处理器相关电路组件实现,收发模块810可以由收发器或收发器相关电路组件实现。

当该网络设备用于执行图7中所示的方法实施例时,处理模块820,用于根据n台服务器的ip地址和预设的哈希算法确定n台服务器对应的哈希值,将n台服务器对应的哈希值配置到一哈希环上,根据n个哈希值区间,确定能够访问负载均衡设备的至少一个源ip地址对应的哈希值,根据至少一个源ip地址对应的哈希值和哈希算法,确定至少一个源ip地址等操作;收发模块810,用于获取服务器集群中的n台服务器的ip地址的操作。应理解,本发明实施例中的处理模块820可以由处理器或处理器相关电路组件实现,收发模块810可以由收发器或收发器相关电路组件实现。

图9为本申请实施例中提供的网络设备的另一结构示意图,如图9所示,该网络设备900包括处理器910,存储器920、和通信接口930。可选地,该网络设备900还包括输入设备940、输出设备950和总线960。其中,处理器910、存储器920、通信接口930以及输入设备940、输出设备960通过总线950相互连接。存储器920中存储指令或程序,处理器910用于执行存储器920中存储的指令或程序。存储器920中存储的指令或程序被执行时,该处理器910用于执行上述方法实施例中处理模块820执行的操作,通信接口930用于执行上述实施例中收发模块810执行的操作。

需要说明的是,本申请实施例提供的网络设备800或900可对应于执行本发明实施例提供的负载均衡方法s301至s303的网络设备,或者对应于执行本发明实施例提供的负载均衡方法s701至s704的网络设备,并且该网络设备800或900中的各个模块的操作和/或功能分别为了实现图3至图7中所示方法的相应流程,为了简洁,在此不再赘述。

应理解,本申请实施例中提及的处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。

需要说明的是,当处理器为通用处理器、dsp、asic、fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。

应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1