服务器负载均衡的方法及装置与流程

文档序号:12624883阅读:556来源:国知局
服务器负载均衡的方法及装置与流程

本发明涉及通讯技术领域,特别是涉及一种服务器负载均衡的方法及装置。



背景技术:

当前,通信领域中,随着业务量的提高,以及访问量和数据流量的快速增长,网络的各个核心部分的处理能力和计算强度也需要相应增大,因此,使得单一设备根本无法承担全部业务。为解决该问题,设计了多台设备共同承担业务的方案,并且诞生了负载均衡机制。该机制可以把大量的并发访问或数据流量分担到多台节点设备上分别处理,这样就提供了一种廉价、有效、透明的方法,来扩展网络设备和服务器的带宽,增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。

其中,目前的负载均衡方法在选择刀片服务器后,正常情况下没有问题,但是在刀片服务器出现故障的时候,会选择下一个刀片服务器来承担连接,这样就会出现这个刀片服务器承受了两倍的负荷,尤其是系统中出现多个服务器故障时,就会导致严重的网络负荷分担不一致的问题。



技术实现要素:

本发明要解决的技术问题是提供一种服务器负载均衡的方法及装置,用以解决现有负载均衡办法在服务器出现故障时存在网络负荷分担不均衡的问题。

为解决上述技术问题,一方面,本发明提供一种服务器负载均衡的方法,包括:

接收客户端发送的连接服务器的请求报文;

根据所述请求报文中的源IP地址,确定预连接服务器;

当所述预连接服务器工作状态不正常时,在剩余所有工作状态正常的服务器中选择连接数最小的服务器进行连接。

进一步,当所述预连接服务器工作状态正常时,选择所述预连接服务器进行连接。

进一步,根据所述请求报文中的源IP地址,确定预连接服务器,具体包括:

提取所述请求报文中的源IP;

对提取的源IP进行散列计算,得到一个散列值;

利用所述散列值去模服务器的个数N,计算出服务器的索引值;

将服务器编号与索引值相同的服务器作为预连接服务器。

进一步,当工作状态正常的服务器中连接数最小的服务器存在多个时,选择服务器编号靠前的服务器进行连接。

进一步,所述方法还包括:

当任一个服务器增加一条连接时,该服务器的连接数加一;

当任一个服务器释放一条连接时,该服务器的连接数减一。

另一方面,本发明还提供一种服务器负载均衡的装置,包括:

接收模块,用于接收客户端发送的连接服务器的请求报文;

预连接服务器确定模块,用于根据所述请求报文中的源IP地址,确定预连接服务器;

服务器连接模块,用于当所述预连接服务器工作状态不正常时,在剩余所有工作状态正常的服务器中选择连接数最小的服务器进行连接。

进一步,所述服务器连接模块还用于:

当所述预连接服务器工作状态正常时,选择所述预连接服务器进行连接。

进一步,所述预连接服务器确定模块具体用于:

提取所述请求报文中的源IP;

对提取的源IP进行散列计算,得到一个散列值;

利用所述散列值去模服务器的个数N,计算出服务器的索引值;

将服务器编号与索引值相同的服务器作为预连接服务器。

进一步,所述服务器连接模块还用于:

当工作状态正常的服务器中连接数最小的服务器存在多个时,选择服务器编号靠前的服务器进行连接。

进一步,所述服务器连接模块还用于:

当任一个服务器增加一条连接时,该服务器的连接数加一;

当任一个服务器释放一条连接时,该服务器的连接数减一。

本发明有益效果如下:

本发明通过在建立连接时先判断选择的服务器工作状态是否正常,当不正常时,选择工作状态正常、且连接数最小的服务器进行连接,这样就保证了服务器出现问题时,系统中工作状态正常的服务器网络负荷分担一致,避免造成系统奔溃。

附图说明

图1是本发明实施例中一种服务器负载均衡的方法的流程图;

图2是本发明实施例中一种服务器负载均衡的装置的结构示意图;

图3是本发明实施例中当预连接服务器故障时选择最小连接数服务器的原理示意图;

图4是本发明实施例中当预连接服务器故障、且存在两个并列最小连接数工作正常的服务器时的原理示意图。

具体实施方式

以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。

如图1所示,本发明实施例涉及一种服务器负载均衡的方法,包括:

步骤S101,接收客户端发送的连接服务器的请求报文;

步骤S102,根据所述请求报文中的源IP地址,确定预连接服务器;

本步骤具体包括:

提取所述请求报文中的源IP;

对提取的源IP进行散列计算,得到一个散列值;

利用所述散列值去模服务器的个数N,计算出服务器的索引值;

将服务器编号与索引值相同的服务器作为预连接服务器。

步骤S103,当所述预连接服务器工作状态不正常时,在剩余所有工作状态正常的服务器中选择连接数最小的服务器进行连接。

本步骤中,当工作状态正常的服务器中连接数最小的服务器存在多个时,选择服务器编号靠前的服务器进行连接。如果预连接服务器的工作状态正常时,则选择预连接服务器进行连接。

另外,系统中,当任一个服务器增加一条连接时,该服务器的连接数加一;当任一个服务器释放一条连接时,该服务器的连接数减一。

如图2所示,本发明实施例还涉及一种实现上述方法的服务器负载均衡的装置,包括:

接收模块201,用于接收客户端发送的连接服务器的请求报文;

预连接服务器确定模块202,用于根据所述请求报文中的源IP地址,确定预连接服务器;

服务器连接模块203,用于当所述预连接服务器工作状态不正常时,在剩余所有工作状态正常的服务器中选择连接数最小的服务器进行连接。

其中,服务器连接模块203还用于:

当所述预连接服务器工作状态正常时,选择所述预连接服务器进行连接。

预连接服务器确定模块202具体用于:

提取所述请求报文中的源IP;

对提取的源IP进行散列计算,得到一个散列值;

利用所述散列值去模服务器的个数N,计算出服务器的索引值;

将服务器编号与索引值相同的服务器作为预连接服务器。

服务器连接模块203还用于:

当工作状态正常的服务器中连接数最小的服务器存在多个时,选择服务器编号靠前的服务器进行连接;

以及用于:

当任一个服务器增加一条连接时,该服务器的连接数加一;

当任一个服务器释放一条连接时,该服务器的连接数减一。

本发明实施例,通过当服务器故障时,通过选择连接数最小的服务器进行连接;各个服务器的连接数是一个动态变化的过程(增加连接后连接数自动加一);这样,之前与故障服务器连接的客户端都会重新发起新连接,每个连接都是连接到与之对应时刻的连接数最小的服务器上,这样,就保证将故障服务器的连接分配到剩余工作状态正常、负载较少的一个或多个服务器上,以实现系统的负载均衡。

下面,以刀片服务器为例进行具体说明,如图3、4所示,该方法包括:

步骤10,虚拟服务器的资源池中配置了N个真实的刀片服务器,采用源IP的负载均衡策略进行负载均衡。

步骤20,客户端发起一个到虚拟服务器的连接,虚拟服务器把报文的源IP提取出来,进行散列计算,得到一个散列值hash;然后使用此散列值去模刀片服务器的个数N,计算出刀片服务器的索引i=hash%N。

步骤30,如果此刀片服务器的工作状态是正常的,说明刀片服务器可用,那么将当前的这个链接发到索引为i的刀片服务器上;并将此刀片服务器上的连接数Ci加一。图3中,计算的索引值为2,如果服务器序号为2的刀片服务器工作正常,则将该链接发到服务器序号为2的刀片服务器上。

步骤40,如果此刀片服务器的工作状态不正常,说明刀片服务器不可用, 那么就在这N个刀片服务器中选择一个可用的、并且连接数最小的一个。具体方法为:

设定一个变量C,初始值赋值成刀片服务器1的连接数C1,用变量C和这N个刀片服务器上的连接数依次比较,如果有比当前的C更小的,那么将该值重新赋值于C,并记录当前刀片服务器的序号。最终遍历完毕,选择连接数最小的一个。假定选择的是j,那么将当前的这个链接发到索引为j的刀片服务器上,并将此刀片服务器上的连接数Cj加一。图3中,如果服务器序号为2的刀片服务器工作不正常,由于工作正常的服务器中,服务器序号为1的刀片服务器连接数最小,因此则将该链接发到服务器序号为1的刀片服务器上。

步骤50,如果此时这N个刀片服务器中存在两个连接数并列最小且都可用的刀片服务器,那么就选择序号靠前的一个(假设序号为a),将当前的连接分发到刀片服务器a上。并将刀片服务器a上的连接数加1。如图4所示,如果服务器序号为2的刀片服务器工作不正常,在工作正常的服务器中,服务器序号为1和3的刀片服务器连接数并列最小,因此则将该链接发到服务器序号考前的为1号刀片服务器上。

步骤60,当连接被释放的时候,刀片服务器上的连接数减一。

由上述实施例可以看出,在考虑了刀片服务器连接数后,负载均衡设备会管理服务器上的每一个连接。当负载均衡设备为客户端的新的请求分配服务器时,会增加相应服务器的连接数;同样的,当该连接删除的时候,相应服务器上连接数会减一。这样负载均衡设备会对服务器组中所有刀片服务器上的连接有一个清晰的统计。当某个刀片服务器异常后,后续本应分配到该服务器上的连接就会根据当前正常的服务器上连接数,分配到连接数最小的一个服务器上。如果服务器组中存在两个或者多个连接数一致的服务器,那么就会分配到序号最小的那个服务器上,进而保证了系统的负载均衡。

尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上 述实施例。

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