一种负载均衡方法、负载均衡器及负载均衡系统与流程

文档序号:11594339阅读:220来源:国知局

本发明属于负载均衡技术领域,涉及负载均衡方法、负载均衡器及负载均衡系统。



背景技术:

负载均衡建立在现有网络结构之上,廉价有效透明地扩展了网络设备、服务器的带宽,增加了吞吐量,加强了网络数据处理能力,以及提高了网络的灵活性和可用性。负载均衡,是分摊到多个操作单元上进行执行,例如web服务器、ftp服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

目前,主要有以下几种负载均衡方法:(一)静态负载均衡算法是按照固定规则将请求分配给服务器;例如按照轮询算法将第i次请求分配给第imodn台服务器。(二)动态负载均衡算法是把请求分配给当前负载最低的服务器;服务器的负载程度基于活跃连接数,响应时间等。(三)源地址哈希法是客户端ip地址通过哈希函数计算得到一个数值,该数值对服务器列表的大小进行取模运算,得到客户端要访问服务器。同一个客户端每次都会映射到同一台后端服务器进行访问。

然而,静态负载均衡算法和源地址哈希法只能将请求分配给已设置好的服务器,不能考虑服务器的当前状态,容易导致服务器负载不均衡。其动态负载均衡算法容易导致频繁切换服务器。



技术实现要素:

本发明提供的技术方案如下:

本发明提供一种负载均衡方法,包括以下步骤:s20、根据客户端发送的连接请求信息,查找出所述客户端对应的目标服务器;s30、判断所述目标服务器的负载参考值是否小于第一预设阈值;s40、当所述目标服务器的负载参考值小于第一预设阈值时,则将所述客户端的连接请求信息分配给所述目标服务器;s50、当所述目标服务器的负载参考值大于等于第一预设阈值时,则进一步判断所述目标服务器的负载参考值是否小于第二预设阈值;s60、所述目标服务器的负载参考值小于第二预设阈值时,则将所述客户端的连接请求信息分配给服务器状态表中当前负载参考值最低的备选服务器。

进一步,还包括以下步骤:s70、当所述目标服务器的负载参考值大于等于第二预设阈值时,则将所述客户端的连接请求信息分配给服务器状态表中当前负载参考值最低的备选服务器,且修改所述客户端对应的目标服务器为所述备选服务器。

进一步,所述步骤s20之前还包括:s01、根据所述客户端ip的散列值以及服务器的对应关系,预先生成散列值-服务器对照表;s02、预先生成含有每个服务器状态的服务器状态表,所述服务器状态包括所述服务器的资源占用率、异常连接次数、数据更新时间及负载参考值。

进一步,所述步骤s20之前还包括:s10、按照预设更新时间接收所述服务器发送的资源占用率、异常连接次数;所述资源占用率包括所述服务器的cpu占用率、内存占用率和宽带占用率;s11、在所述服务器状态表中更新所述服务器的状态,以及更新所述服务器状态表的数据更新时间。

进一步,所述步骤s20之前还包括:s12、根据所述服务器的资源占用率、数据更新时间、异常连接次数,按照预设计算时间计算出所述服务器的负载参考值。

进一步,所述步骤s20进一步包括:s21、根据客户端发送的连接请求信息,获取所述客户端的客户端ip;s22、利用散列算法计算出所述客户端ip对应的散列值;s23、根据散列值-服务器对照表,查找出所述客户端对应的目标服务器。

本发明还提供一种负载均衡器,包括:查找模块,用于根据客户端发送的连接请求信息,查找出所述客户端对应的目标服务器;判断模块,用于判断所述目标服务器的负载参考值是否小于第一预设阈值;分配控制模块,用于当所述目标服务器的负载参考值小于第一预设阈值时,则将所述客户端的连接请求信息分配给所述目标服务器;所述判断模块,还用于当所述目标服务器的负载参考值大于等于第一预设阈值时,则进一步判断所述目标服务器的负载参考值是否小于第二预设阈值;所述分配控制模块,还用于所述目标服务器的负载参考值小于第二预设阈值时,则将所述客户端的连接请求信息分配给服务器状态表中当前负载参考值最低的备选服务器。

进一步,还包括修改模块:当所述目标服务器的负载参考值大于等于第二预设阈值时,则所述分配控制模块用于将所述客户端的连接请求信息分配给服务器状态表中当前负载参考值最低的备选服务器,且所述修改模块用于修改所述客户端对应的目标服务器为所述备选服务器。

进一步,还包括:生成模块,用于根据所述客户端ip的散列值以及服务器的对应关系,预先生成散列值-服务器对照表;所述生成模块,还用于预先生成含有每个服务器状态的服务器状态表,所述服务器状态包括所述服务器的资源占用率、异常连接次数、数据更新时间及负载参考值。

本发明还提供一种负载均衡系统,包括负载均衡器,还包括服务器:所述服务器,用于发送资源占用率、异常连接次数;所述资源占用率包括所述服务器的cpu占用率、内存占用率和宽带占用率。

与现有技术相比,本发明提供的一种负载均衡方法、负载均衡器及负载均衡系统,具有以下有益效果:

1)本发明中每个客户端对应一个目标服务器,在客户端发送连接请求信息时,分析目标服务器的负载情况;当目标服务器的负载太多时,将连接请求信息分配给备选服务器;当目标服务器的负载不多时,将连接请求信息分配给目标服务器。在基本保证一个ip总是能分配给同一台服务器的前提下,使得服务器的负载更加均衡;并且不会频繁切换服务器。

2)本发明中目标服务器的负载过多时,将连接请求信息分配给备选服务器,并将目标服务器修改为备选服务器。再次发送连接请求信息时,其目标服务器为备选服务器,充分利用各个服务器,使得服务器的负载更加均衡。

附图说明

下面将以明确易懂的方式,结合附图说明优选实施方式,对一种负载均衡方法、负载均衡器及负载均衡系统的上述特性、技术特征、优点及其实现方式予以进一步说明。

图1是本发明一种负载均衡方法的流程示意图;

图2是本发明另一种负载均衡方法的流程示意图;

图3是本发明中步骤s20的流程示意图;

图4是本发明又一种负载均衡方法的流程示意图;

图5是本发明一种负载均衡器的组成结构示意图;

图6是本发明另一种负载均衡方法的流程示意图。

附图标号说明:

11、生成模块,12、接收模块,13、更新模块,14、计算模块,15、获取模块,16、查找模块,17、判断模块,18、分配控制模块。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。

为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。

如图1所示,根据本发明的一个实施例,一种负载均衡方法,包括以下步骤:s20、根据客户端发送的连接请求信息,查找出所述客户端对应的目标服务器;

s30、判断所述目标服务器的负载参考值是否小于第一预设阈值;

s40、当所述目标服务器的负载参考值小于第一预设阈值时,则将所述客户端的连接请求信息分配给所述目标服务器;

s50、当所述目标服务器的负载参考值大于等于第一预设阈值时,则进一步判断所述目标服务器的负载参考值是否小于第二预设阈值;

s60、所述目标服务器的负载参考值小于第二预设阈值时,则将所述客户端的连接请求信息分配给当前服务器状态表中负载参考值最低的备选服务器。

具体的,预先设置每个客户端对应一个目标服务器,当客户端a发送连接请求信息时,查找出客户端对应的目标服务器a。判断目标服务器a的负载参考值是否小于第一预设阈值;负载参考值越大,目标服务器a当前负载越多;负载参考值越小,目标服务器a当前负载越少。当目标服务器a的负载参考值小于第一预设阈值时,直接将连接请求信息分配给目标服务器a。当目标服务器a的负载参考值大于等于第一预设阈值、且小于第二预设阈值时,将连接请求信息不分配给目标服务器a,而是分配给服务器状态表中负载参考值最低的备选服务器,例如服务器b。在客户端下一次发送连接请求信息时,重复前述步骤。

如图2所示,根据本发明的另一个实施例,一种负载均衡方法,包括以下步骤:s20、根据客户端发送的连接请求信息,查找出所述客户端对应的目标服务器;

s30、判断所述目标服务器的负载参考值是否小于第一预设阈值;

s40、当所述目标服务器的负载参考值小于第一预设阈值时,则将所述客户端的连接请求信息分配给所述目标服务器;

s50、当所述目标服务器的负载参考值大于等于第一预设阈值时,则进一步判断所述目标服务器的负载参考值是否小于第二预设阈值;

s60、所述目标服务器的负载参考值小于第二预设阈值时,则将所述客户端的连接请求信息分配给当前服务器状态表中负载参考值最低的备选服务器。

s70、当所述目标服务器的负载参考值大于等于第二预设阈值时,则将所述客户端的连接请求信息分配给服务器状态表中当前负载参考值最低的备选服务器,且修改所述客户端对应的目标服务器为所述备选服务器。

具体的,当客户端a发送连接请求信息时,查找出客户端对应的目标服务器a。判断目标服务器a的负载参考值是否小于第一预设阈值;负载参考值越大,目标服务器a当前负载越多;负载参考值越小,目标服务器a当前负载越少。当目标服务器a的负载参考值小于第一预设阈值时,直接将连接请求信息分配给目标服务器a。当目标服务器a的负载参考值大于等于第一预设阈值、且小于第二预设阈值时,将连接请求信息不分配给目标服务器a,而是分配给服务器状态表中负载参考值最低的备选服务器,例如服务器b。当目标服务器a的负载参考值大于等于第二预设阈值时,将连接请求信息不分配给目标服务器a,而是分配给服务器状态表中负载参考值最低的备选服务器,例如服务器b;并将客户端对应的目标服务器a修改服务器b。在客户端下一次发送连接请求信息时,查找出客户端对应的目标服务器b后,重复上述步骤,分析目标服务器b的负载情况。

如图3、图4所示,根据本发明的再一个实施例,一种负载均衡方法,包括以下步骤:

s01、根据所述客户端ip的散列值以及服务器的对应关系,预先生成散列值-服务器对照表;所述散列值-服务器对照表包括设定长度(长度为10000)的数组,数组中第i个元素的值就是映射为i的客户端ip对应的目标服务器;初始化时,可以将散列值均摊到每个服务器上,也可以依据服务器性能分配散列值。

s02、预先生成含有每个服务器状态的服务器状态表,所述服务器状态包括资源占用率、异常连接次数、数据更新时间及负载参考值。所述异常连接次数存储在设定容量(例如容量为20)的异常连接数队列中,异常连接数队列仅保存最近20次更新的异常连接次数。当异常连接数队列存满时,放入新的异常连接次数时,移出异常连接数队列中最先存储的异常连接次数。

s10、按照预设更新时间接收所述服务器发送的资源占用率、异常连接次数;所述资源占用率包括所述服务器的cpu占用率、内存占用率和宽带占用率;其中,资源占用率指cpu占用率、内存占用率和宽带占用率三者中在设定统计次数中平均值较高的两者。

s11、在所述服务器状态表中更新所述服务器的状态,以及更新所述服务器状态表的数据更新时间。

优选的,还包括:s12、根据所述服务器的资源占用率、数据更新时间、异常连接次数,按照预设计算时间计算出所述服务器的负载参考值。

s20、根据客户端发送的连接请求信息,查找出所述客户端对应的目标服务器;

优选的,所述步骤s20进一步包括:s21、根据客户端发送的连接请求信息,获取所述客户端的客户端ip;

s22、利用散列算法计算出所述客户端ip对应的散列值;

s23、根据散列值-服务器对照表,查找出所述客户端对应的目标服务器。

s30、判断所述目标服务器的负载参考值是否小于第一预设阈值;

s40、当所述目标服务器的负载参考值小于第一预设阈值时,则将所述客户端的连接请求信息分配给所述目标服务器;

s50、当所述目标服务器的负载参考值大于等于第一预设阈值时,则进一步判断所述目标服务器的负载参考值是否小于第二预设阈值;

s60、所述目标服务器的负载参考值小于第二预设阈值时,则将所述客户端的连接请求信息分配给当前服务器状态表中负载参考值最低的备选服务器。

s70、当所述目标服务器的负载参考值大于等于第二预设阈值时,则将所述客户端的连接请求信息分配给服务器状态表中当前负载参考值最低的备选服务器,且修改所述客户端对应的目标服务器为所述备选服务器,即修改所述客户端ip对应的散列值。

具体的,利用散列算法将每个客户端ip映射为0~9999中的一个散列值并形成一个数组,数组中第i个元素就是散列值,第i个元素的值就是该散列值对应的服务器。

根据资源占用率、数据更新时间、异常连接次数,计算服务器的负载参考值。其中,资源占用率是指相邻两个数据更新时间之间,多次统计cpu占用率、内存占用率和宽带占用率,根据统计次数计算出cpu占用率、内存占用率和宽带占用率的平均值。三个cpu占用率、内存占用率和宽带占用率中平均值中较高的两个作为资源占用率。其中,异常连接次数是指相邻两个数据更新时间之间,统计异常连接的次数。资源占用率越高,负载参考值越大;数据更新时间越新,负载参考值越大;异常连接次数越多,负载参考值越大。

如图5所示,根据本发明的再一个实施例,一种负载均衡器,包括:生成模块11,用于根据所述客户端ip的散列值以及服务器的对应关系,预先生成散列值-服务器对照表;所述散列值-服务器对照表包括设定长度(长度为10000)的数组,数组中第i个元素的值就是映射为i的客户端ip对应的目标服务器;初始化时,可以将散列值均摊到每个服务器上,也可以依据服务器性能分配散列值。

所述生成模块11,还用于预先生成含有每个服务器状态的服务器状态表,所述服务器状态包括资源占用率、异常连接次数、数据更新时间及负载参考值。所述异常连接次数存储在设定容量(例如容量为20)的异常连接数队列中,异常连接数队列仅保存最近20次更新的异常连接次数。当异常连接数队列存满时,放入新的异常连接次数时,移出异常连接数队列中最先存储的异常连接次数。

接收模块12,用于按照预设更新时间接收所述服务器发送的资源占用率、异常连接次数;所述资源占用率包括所述服务器的cpu占用率、内存占用率和宽带占用率;其中,资源占用率指cpu占用率、内存占用率和宽带占用率三者中在设定统计次数中平均值较高的两者。

更新模块13,用于在所述服务器状态表中更新所述服务器的状态,以及更新所述服务器状态表的数据更新时间。

优选的,还包括:计算模块14,用于根据所述服务器的资源占用率、数据更新时间、异常连接次数,按照预设计算时间计算出所述服务器的负载参考值。

查找模块16,用于根据客户端发送的连接请求信息,查找出所述客户端对应的目标服务器。

优选的,获取模块15,用于根据客户端发送的连接请求信息,获取所述客户端的客户端ip。

所述计算模块14,还用于利用散列算法计算出所述客户端ip对应的散列值。

所述查找模块16,还用于根据散列值-服务器对照表,查找出所述客户端对应的目标服务器。

判断模块17,用于判断所述目标服务器的负载参考值是否小于第一预设阈值。

分配控制模块18,用于当所述目标服务器的负载参考值小于第一预设阈值时,则将所述客户端的连接请求信息分配给所述目标服务器。

所述判断模块17,还用于当所述目标服务器的负载参考值大于等于第一预设阈值时,则进一步判断所述目标服务器的负载参考值是否小于第二预设阈值。

所述分配控制模块18,还用于所述目标服务器的负载参考值小于第二预设阈值时,则将所述客户端的连接请求信息分配给当前服务器状态表中负载参考值最低的备选服务器。

所述分配控制模块18,还用于当所述目标服务器的负载参考值大于等于第二预设阈值时,则将所述客户端的连接请求信息分配给服务器状态表中当前负载参考值最低的备选服务器,且修改所述客户端对应的目标服务器为所述备选服务器,即修改所述客户端ip对应的散列值。

根据本发明的再一个实施例,一种负载均衡系统,包括负载均衡器和服务器:所述负载均衡器包括:生成模块11,用于根据所述客户端ip的散列值以及服务器的对应关系,预先生成散列值-服务器对照表;所述散列值-服务器对照表包括设定长度(长度为10000)的数组,数组中第i个元素的值就是映射为i的客户端ip对应的目标服务器;初始化时,可以将散列值均摊到每个服务器上,也可以依据服务器性能分配散列值。

所述生成模块11,还用于预先生成含有每个服务器状态的服务器状态表,所述服务器状态包括资源占用率、异常连接次数、数据更新时间及负载参考值。所述异常连接次数存储在设定容量(例如容量为20)的异常连接数队列中,异常连接数队列仅保存最近20次更新的异常连接次数。当异常连接数队列存满时,放入新的异常连接次数时,移出异常连接数队列中最先存储的异常连接次数。

接收模块12,用于按照预设更新时间接收所述服务器发送的资源占用率、异常连接次数;所述资源占用率包括所述服务器的cpu占用率、内存占用率和宽带占用率;其中,资源占用率指cpu占用率、内存占用率和宽带占用率三者中在设定统计次数中平均值较高的两者。

更新模块13,用于在所述服务器状态表中更新所述服务器的状态,以及更新所述服务器状态表的数据更新时间。

优选的,还包括:计算模块14,用于根据所述服务器的资源占用率、数据更新时间、异常连接次数,按照预设计算时间计算出所述服务器的负载参考值。

查找模块16,用于根据客户端发送的连接请求信息,查找出所述客户端对应的目标服务器。

优选的,获取模块15,用于根据客户端发送的连接请求信息,获取所述客户端的客户端ip。

所述计算模块14,还用于利用散列算法计算出所述客户端ip对应的散列值。

所述查找模块16,还用于根据散列值-服务器对照表,查找出所述客户端对应的目标服务器。

判断模块17,用于判断所述目标服务器的负载参考值是否小于第一预设阈值。

分配控制模块18,用于当所述目标服务器的负载参考值小于第一预设阈值时,则将所述客户端的连接请求信息分配给所述目标服务器。

所述判断模块17,还用于当所述目标服务器的负载参考值大于等于第一预设阈值时,则进一步判断所述目标服务器的负载参考值是否小于第二预设阈值。

所述分配控制模块18,还用于所述目标服务器的负载参考值小于第二预设阈值时,则将所述客户端的连接请求信息分配给当前服务器状态表中负载参考值最低的备选服务器。

所述分配控制模块18,还用于当所述目标服务器的负载参考值大于等于第二预设阈值时,则将所述客户端的连接请求信息分配给服务器状态表中当前负载参考值最低的备选服务器,且修改所述客户端对应的目标服务器为所述备选服务器,即修改所述客户端ip对应的散列值。

所述服务器用于发送资源占用率、异常连接次数;所述资源占用率包括所述服务器的cpu占用率、内存占用率和宽带占用率;其中,资源占用率指cpu占用率、内存占用率和宽带占用率三者中在设定统计次数中平均值较高的两者。

根据本发明的一个实施例,一种负载均衡方法,包括以下步骤:负载均衡器按散列算法将客户端ip映射为一个0–9999的散列值,并且维护一张散列值-服务器对照表:一个长度为10000的数组,其第i个元素的值就是散列值i对应的服务器号。初始化时可以将散列值均摊到所有服务器上,也可以依据服务器性能分配散列值。

负载均衡器维护一张服务器状态表,其中包括服务器的资源占用率、异常连接数队列(容量为20)、最新更新时间及服务器负载值。

在服务器上运行一个低优先级进程,定时向均衡器发送服务器的资源占用率和从上一次发送结束到本次发送开始产生的异常连接数数量。其中资源占用率为服务器的cpu占用率,内存占用率和带宽占用率这三个值中最高的两个的平均值。

负载均衡器收到服务器发送的数据后更新服务器状态表,直接把资源占用率更新为服务器给出的值;将最新更新时间设为均衡器当前时间;将异常连接数push到异常连接数队列中,若队列已满则自动把队列第一个元素pop。即服务器状态表总是保留最近20次的异常连接数。

负载均衡器定时计算服务器的负载值,依据服务器的资源占用率,最新更新时间,异常连接数队列得到服务器的负载值评分(0-99),分数越高表明负荷越严重。

当负载均衡器收到某个客户端的请求时,首先计算该客户端ip的散列值,然后找出该散列值对应的目标服务器。当目标服务器的负载值低于第一阈值时均衡器选择直接将请求分配给目标服务器;当目标服务器的负载值高于第一阈值且低于第二阈值时均衡器选择将请求分配给当前负载最低的服务器;目标服务器的负载值高于第二阈值时均衡器选择将请求分配给当前负载最低的服务器,并且将请求ip的散列值对应的服务器修改为新的服务器。

具体的,负载均衡器依据规定的散列算法将客户端ip地址映射为一个散列值,再找出该散列值对应的目标服务器号。负载均衡器根据目标服务器号的负载值进行ip分配;若负载值低于阈值则直接将ip分配给目标服务器;否则将ip分配给当前负载值最低的服务器,并且将该散列值对应的目标服务器修改为新服务器。

应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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