CN103401799A - 负载均衡的实现方法和装置 - Google Patents
负载均衡的实现方法和装置 Download PDFInfo
- Publication number
- CN103401799A CN103401799A CN2013103259719A CN201310325971A CN103401799A CN 103401799 A CN103401799 A CN 103401799A CN 2013103259719 A CN2013103259719 A CN 2013103259719A CN 201310325971 A CN201310325971 A CN 201310325971A CN 103401799 A CN103401799 A CN 103401799A
- Authority
- CN
- China
- Prior art keywords
- server
- parameter
- hash
- source address
- source port
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明公开了一种负载均衡的实现方法和装置,其中,该方法包括:获取发送访问请求的客户端的源地址参数和源端口参数;使用散列算法对源地址参数和源端口参数进行散列计算;根据散列计算的结果分配访问请求。本发明通过增加客户端的源端口参数作为散列计算的计算参数,从而得到更细粒度的客户端特征,能够识别具有相同IP地址的不同客户端,再根据客户端的不同来分配访问请求,实现负载均衡,提高负载均衡系统的可用性。
Description
技术领域
本发明涉及计算机领域,并且特别地,涉及一种负载均衡的实现方法和装置。
背景技术
负载均衡算法是负载均衡的发展基础,由于不同的服务器所具备的功能以及所需的要求各不相同,因此对于不同的服务器需要采用不同的负载均衡算法。
现有技术中,服务器负载均衡算法可以包括轮循算法、最少连接算法、响应时间算法、散列算法、最少连接失误算法、链路带宽算法等等。
还可以通过以下方式实现服务器的负载均衡:方式一,可以根据多个实际服务器(RealServer)上预先设定的加权值来调整分配到每个实际服务器上的流量。例如,可以为性能较高的大型服务器设定较大的加权值,而为性能较低的小型服务器设定较小的加权值,从而使得分配到大型服务器上的流量多于分配到小型服务器上的流量;方式二,为了避免服务器因过载而崩溃,可为实际服务器指定最大连接阈值来避免该服务器过载的情况;方式三,可指定任何一台服务器为另一台服务器的备服务器或溢出服务器,从而进一步保证了服务器系统的可用性。
此外,还可以将服务器负载均衡算法可以分为持续性算法和非持续性算法,其中,非持续性算法(Non-Persistent)表示一个客户端的不同的请求可能被分配到一个实际服务器组中的不同实服务器上进行处理。非持续性算法主要包括轮循算法、最少连接算法、响应速度算法等,以下进行具体描述:
非持续性算法1、轮循算法(RoundRobin),每一次来自客户端的请求轮流分配到服务器组中的每台服务器,从第一台分配至最后一台,然后重新开始分配至第一台,以此类推。该轮循算法适用于服务器组中的每台服务器都具有相同的软硬件配置并且平均服务请求相对均衡的情况;
非持续性算法2、最少连接算法(LeastConnection),客户端的请求服务在服务器停留的时间可能存在较大的差异,随着工作时间的加长,如果采用简单的轮循或随机均衡算法,服务器上的连接进程可能会产生极大的不同,因此不能达到负载均衡。最少连接数算法对内部中有负载的每台服务器设置数据记录,记录内容为当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把新的请求分配给连接数量最少的服务器,使均衡更加符合实际情况,从而实现负载均衡。最少连接算法适合长时间处理的请求服务;
非持续性算法3、响应速度算法(ResponseTime),负载均衡设备向服务器组中的每个服务器发出一个探测请求,然后决定响应时间最短的服务器来接收客户端的服务请求。响应速度算法能较好地反映服务器组中的各个服务器的当前运行状态,但最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。
持续性算法(Persistent)表示从某个特定客户端发出的请求都会被分配到实服务器组中的同一个实服务器上进行处理,持续性算法主要包括:基于IP的算法、基于报头/请求的算法、基于Cookie的算法等,以下对每种持续性算法进行具体描述。
持续性算法A、基于IP的算法,可以包括:
Persistent IP(pi):基于用户IP地址来选择服务器;
Hash IP(hi):基于用户IP地址的HASH值来选择服务器;
Consistent Hash IP(chi):基于列表IP来选择服务器;
持续性算法B、基于报头/请求的算法,可以包括:
HashHeader(hh):基于用户请求报中的HTTP报头来选择服务器;
PersistentHostname(ph):基于用户请求报中HTTP报头的Hostname(主机名)的HASH值来选择服务器;
PersistentURL(pu):基于对URITag和值的静态对应关系来选择服务器;
SSLSessionID(sslsid):基于SSL会话ID来选择服务器;
持续性算法C、基于Cookie的算法,可以包括:
PersistentCookie(pc):基于用户请求包中CookieName/Value的静态对应关系来选择服务器;
HashCookie(hc):基于用户请求包中CookieName/Value的Hash值对应关系来选择服务器;
InsertCookie(ic):基于负载均衡器向服务器响应包中插入的Cookie来选择服务器;
Re-writeCookie(rc):基于负载均衡器向服务器响应包中重写的Cookie值(必须为重写指定Cookie值的偏移量)选择服务器。
现有持续性算法尚不能针对不同客户端的访问端口进行不同服务器节点的选择。当客户网络通过网络地址转换(Network Address Translation,也称为NAT)技术进行访问的时候,所有的访问客户端都会被翻译成相同的IP地址,而目前使用的源地址散列算法会将这部分客户端的访问识别成同一个用户,导致负载均衡系统不能有效地均衡这部分用户的流量负载。
本发明提出的基于用户源地址加源端口的散列算法,能够很好地解决这个问题,使得龙芯负载均衡系统的适应面更广。
针对相关技术中负载均衡系统的散列算法不能识别具有相同IP地址的不同客户端的访问,导致无法实现负载均衡的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中负载均衡系统的散列算法不能识别具有相同IP地址的不同客户端的访问,导致无法实现负载均衡的问题,本发明提出一种负载均衡的实现方法和装置,能够识别具有相同IP地址的不同客户端,从而实现负载均衡,提高负载均衡系统的可用性。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种负载均衡的实现方法。
该负载均衡的实现方法包括:
获取发送访问请求的客户端的源地址参数和源端口参数;
使用散列算法对源地址参数和源端口参数进行散列计算;
根据散列计算的结果分配访问请求。
其中,上述散列算法包括:源地址散列算法。
优选地,使用散列算法对源地址参数和源端口参数进行散列计算包括:
将源地址参数和源端口参数存储到散列表,并对散列表中的源地址参数和源端口参数进行计算。
进一步地,根据散列计算的结果分配访问请求包括:
根据预先配置的散列计算结果与服务器的对应关系,确定与散列算法的结果对应的服务器,并将访问请求分配至该对应的服务器。
根据本发明的另一个方面,提供了一种负载均衡的实现装置。
该负载均衡的实现装置包括:
获取模块,用于获取发送访问请求的客户端的源地址参数和源端口参数;
计算模块,用于使用散列算法对源地址参数和源端口参数进行散列计算;
分配模块,用于根据散列计算的结果分配访问请求。
其中,散列算法包括:源地址散列算法。
优选地,上述计算模块用于将源地址参数和源端口参数存储到散列表,并对散列表中的源地址参数和源端口参数进行计算。
进一步地,上述分配模块用于根据预先配置的散列计算结果与服务器的对应关系,确定与散列算法的结果对应的服务器,并且分配模块用于将访问请求分配至该对应的服务器。
本发明通过增加客户端的源端口参数作为散列计算的计算参数,从而得到更细粒度的客户端特征,能够识别具有相同IP地址的不同客户端,再根据客户端的不同来分配访问请求,实现负载均衡,提高负载均衡系统的可用性。
附图说明
图1是根据本发明实施例的负载均衡的实现方法的流程图;
图2是根据本发明实施例的负载均衡的实现装置的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的实施例,提供了一种负载均衡的实现方法。
如图1所示,根据本发明实施例的实现方法可以包括:
步骤S101,获取发送访问请求的客户端的源地址参数和源端口参数,其中,增加了客户端的源端口参数能够得到更细粒度的客户端特征,从而识别出具有发送访问请求的客户端;
步骤S103,使用散列算法对源地址参数和源端口参数进行散列计算,其中,可以选择源地址散列算法进行散列计算,优选地,可以将源地址参数和源端口参数存储到散列表,然后对散列表中的源地址参数和源端口参数进行计算,其中,散列算法也称为Hash算法,而散列表也可称为Hash表;
步骤S105,根据散列计算的结果分配访问请求,可以根据预先配置的散列计算结果与服务器的对应关系,确定与散列算法的结果对应的服务器,并将访问请求分配至该对应的服务器,依据散列计算来分配访问请求能实现负载均衡,避免由于不能识别不同客户端而导致的负载不均衡情况。
根据本发明的实施例,可将负载均衡的实现方法用于龙芯架构,从而实现龙芯负载均衡系统,以下描述具体步骤:
负载均衡系统接收经过NAT地址翻译以后的客户访问请求,获取该客户端的源地址参数和源端口参数;
负载均衡系统将源端口参数与源地址的IP地址参数组合后形成Hash表,然后进行源地址Hash计算;
负载均衡系统根据计算结果将流量负载分配至不同的服务器中。
本发明的技术方案在源地址散列算法的基础上加以改进,提出了基于客户端的源地址和源端口的散列算法。由于增加了源端口参数这样的特征值,然后将源端口参数与源地址IP地址组合后形成Hash表,从而得到更细粒度的客户端特征,可以识别出经过NAT地址翻译以后的客户访问请求,并分别进行负载均衡,从而提高了负载均衡系统的适用性。
根据本发明的实施例,提供了一种负载均衡的实现装置。
如图2所示,根据本发明实施例的实现装置可以包括:
获取模块21,用于获取发送访问请求的客户端的源地址参数和源端口参数;
计算模块22,用于使用散列算法对源地址参数和源端口参数进行散列计算,其中,散列算法可以包括源地址散列算法;
分配模块23,用于根据散列计算的结果分配访问请求。
优选地,计算模块22用于将源地址参数和源端口参数存储到散列表,并对散列表中的源地址参数和源端口参数进行计算。
进一步地,分配模块23用于根据预先配置的散列计算结果与服务器的对应关系,确定与散列算法的结果对应的服务器,并且分配模块用于将访问请求分配至该对应的服务器。
综上所述,借助于本发明的上述技术方案,本发明通过在源地址散列算法的基础上加以改进,增加了客户端的源端口参数作为散列计算的计算参数,从而得到更细粒度的客户端特征,能够识别具有相同IP地址的不同客户端,从而根据客户端的不同来分配访问请求,实现负载均衡,提高负载均衡系统的可用性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种负载均衡的实现方法,其特征在于,包括:
获取发送访问请求的客户端的源地址参数和源端口参数;
使用散列算法对所述源地址参数和源端口参数进行散列计算;
根据散列计算的结果分配所述访问请求。
2.根据权利要求1所述的实现方法,其特征在于,所述散列算法包括:源地址散列算法。
3.根据权利要求1所述的实现方法,其特征在于,使用散列算法对所述源地址参数和源端口参数进行散列计算包括:
将所述源地址参数和源端口参数存储到散列表,并对所述散列表中的所述源地址参数和源端口参数进行计算。
4.根据权利要求1所述的实现方法,其特征在于,根据散列计算的结果分配所述访问请求包括:
根据预先配置的散列计算结果与服务器的对应关系,确定与所述散列算法的结果对应的服务器,并将所述访问请求分配至该对应的服务器。
5.一种负载均衡的实现装置,其特征在于,包括:
获取模块,用于获取发送访问请求的客户端的源地址参数和源端口参数;
计算模块,用于使用散列算法对所述源地址参数和源端口参数进行散列计算;
分配模块,用于根据散列计算的结果分配所述访问请求。
6.根据权利要求1所述的实现装置,其特征在于,所述散列算法包括:源地址散列算法。
7.根据权利要求1所述的实现装置,其特征在于,所述计算模块用于将所述源地址参数和源端口参数存储到散列表,并对所述散列表中的所述源地址参数和源端口参数进行计算。
8.根据权利要求1所述的实现装置,其特征在于,所述分配模块用于根据预先配置的散列计算结果与服务器的对应关系,确定与所述散列算法的结果对应的服务器,并且所述分配模块用于将所述访问请求分配至该对应的服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013103259719A CN103401799A (zh) | 2013-07-30 | 2013-07-30 | 负载均衡的实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013103259719A CN103401799A (zh) | 2013-07-30 | 2013-07-30 | 负载均衡的实现方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103401799A true CN103401799A (zh) | 2013-11-20 |
Family
ID=49565328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013103259719A Pending CN103401799A (zh) | 2013-07-30 | 2013-07-30 | 负载均衡的实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103401799A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468823A (zh) * | 2014-12-24 | 2015-03-25 | 浪潮(北京)电子信息产业有限公司 | 一种集群负载均衡调度方法及系统 |
CN106506394A (zh) * | 2016-11-21 | 2017-03-15 | 浙江宇视科技有限公司 | 一种负载均衡方法、系统和装置 |
CN106656842A (zh) * | 2015-10-29 | 2017-05-10 | 华为数字技术(苏州)有限公司 | 一种负载均衡方法和流量转发设备 |
CN108259370A (zh) * | 2016-12-28 | 2018-07-06 | 航天信息股份有限公司 | 数据传输的方法及装置 |
CN108900649A (zh) * | 2018-06-14 | 2018-11-27 | 北京旅居四方科技有限公司 | 水电桩的长连接调度方法、装置、计算机设备和存储介质 |
CN109936635A (zh) * | 2019-03-12 | 2019-06-25 | 北京百度网讯科技有限公司 | 负载均衡方法和装置 |
CN110311957A (zh) * | 2019-06-14 | 2019-10-08 | 平安科技(深圳)有限公司 | 服务器负载均衡方法及相关设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567882A (zh) * | 2003-06-12 | 2005-01-19 | 华为技术有限公司 | 一种访问服务器群的方法 |
CN1649326A (zh) * | 2004-12-09 | 2005-08-03 | 武汉大学 | 一种集群服务器的多分配器前端系统构成方法 |
CN101404619A (zh) * | 2008-11-17 | 2009-04-08 | 杭州华三通信技术有限公司 | 一种实现服务器负载均衡的方法和一种三层交换机 |
CN101534255A (zh) * | 2009-04-02 | 2009-09-16 | 福建星网锐捷网络有限公司 | 一种实现特定请求定向处理的方法及装置 |
CN101795230A (zh) * | 2010-02-23 | 2010-08-04 | 西安交通大学 | 一种网络流量还原方法 |
CN102209019A (zh) * | 2010-03-30 | 2011-10-05 | 杭州华三通信技术有限公司 | 一种基于报文净荷的负载均衡方法和负载均衡设备 |
CN102307136A (zh) * | 2011-07-06 | 2012-01-04 | 杭州华三通信技术有限公司 | 报文处理方法及其装置 |
CN102404229A (zh) * | 2011-12-14 | 2012-04-04 | 华为技术有限公司 | 负载均衡系统、装置及方法 |
CN103139093A (zh) * | 2013-02-22 | 2013-06-05 | 桂林电子科技大学 | 基于fpga的高速网络数据流负载均衡调度方法 |
CN103166870A (zh) * | 2011-12-13 | 2013-06-19 | 百度在线网络技术(北京)有限公司 | 负载均衡集群系统及采用其提供服务的方法 |
-
2013
- 2013-07-30 CN CN2013103259719A patent/CN103401799A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567882A (zh) * | 2003-06-12 | 2005-01-19 | 华为技术有限公司 | 一种访问服务器群的方法 |
CN1649326A (zh) * | 2004-12-09 | 2005-08-03 | 武汉大学 | 一种集群服务器的多分配器前端系统构成方法 |
CN101404619A (zh) * | 2008-11-17 | 2009-04-08 | 杭州华三通信技术有限公司 | 一种实现服务器负载均衡的方法和一种三层交换机 |
CN101534255A (zh) * | 2009-04-02 | 2009-09-16 | 福建星网锐捷网络有限公司 | 一种实现特定请求定向处理的方法及装置 |
CN101795230A (zh) * | 2010-02-23 | 2010-08-04 | 西安交通大学 | 一种网络流量还原方法 |
CN102209019A (zh) * | 2010-03-30 | 2011-10-05 | 杭州华三通信技术有限公司 | 一种基于报文净荷的负载均衡方法和负载均衡设备 |
CN102307136A (zh) * | 2011-07-06 | 2012-01-04 | 杭州华三通信技术有限公司 | 报文处理方法及其装置 |
CN103166870A (zh) * | 2011-12-13 | 2013-06-19 | 百度在线网络技术(北京)有限公司 | 负载均衡集群系统及采用其提供服务的方法 |
CN102404229A (zh) * | 2011-12-14 | 2012-04-04 | 华为技术有限公司 | 负载均衡系统、装置及方法 |
CN103139093A (zh) * | 2013-02-22 | 2013-06-05 | 桂林电子科技大学 | 基于fpga的高速网络数据流负载均衡调度方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468823A (zh) * | 2014-12-24 | 2015-03-25 | 浪潮(北京)电子信息产业有限公司 | 一种集群负载均衡调度方法及系统 |
CN104468823B (zh) * | 2014-12-24 | 2018-02-06 | 浪潮(北京)电子信息产业有限公司 | 一种集群负载均衡调度方法及系统 |
CN106656842A (zh) * | 2015-10-29 | 2017-05-10 | 华为数字技术(苏州)有限公司 | 一种负载均衡方法和流量转发设备 |
CN106506394A (zh) * | 2016-11-21 | 2017-03-15 | 浙江宇视科技有限公司 | 一种负载均衡方法、系统和装置 |
CN106506394B (zh) * | 2016-11-21 | 2020-10-20 | 浙江宇视科技有限公司 | 一种负载均衡方法、系统和装置 |
CN108259370A (zh) * | 2016-12-28 | 2018-07-06 | 航天信息股份有限公司 | 数据传输的方法及装置 |
CN108900649A (zh) * | 2018-06-14 | 2018-11-27 | 北京旅居四方科技有限公司 | 水电桩的长连接调度方法、装置、计算机设备和存储介质 |
CN109936635A (zh) * | 2019-03-12 | 2019-06-25 | 北京百度网讯科技有限公司 | 负载均衡方法和装置 |
CN109936635B (zh) * | 2019-03-12 | 2021-09-28 | 北京百度网讯科技有限公司 | 负载均衡方法和装置 |
CN110311957A (zh) * | 2019-06-14 | 2019-10-08 | 平安科技(深圳)有限公司 | 服务器负载均衡方法及相关设备 |
CN110311957B (zh) * | 2019-06-14 | 2022-03-15 | 平安科技(深圳)有限公司 | 服务器负载均衡方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10374955B2 (en) | Managing network computing components utilizing request routing | |
US11381487B2 (en) | Routing mode and point-of-presence selection service | |
US11316786B2 (en) | Systems and methods for directly responding to distributed network traffic | |
US10715479B2 (en) | Connection redistribution in load-balanced systems | |
US10091096B1 (en) | Routing mode and point-of-presence selection service | |
CN103401799A (zh) | 负载均衡的实现方法和装置 | |
US9544268B2 (en) | Systems and method to discover clients associated with local domain name server using sampling | |
US9356912B2 (en) | Method for load-balancing IPsec traffic | |
EP3143753A1 (en) | Method and system for load balancing anycast data traffic | |
US9979656B2 (en) | Methods, systems, and computer readable media for implementing load balancer traffic policies | |
EP2997487A1 (en) | Selecting a content providing server in a content delivery network | |
CN110266822B (zh) | 一种基于nginx的共享式负载均衡实现方法 | |
CN108933829A (zh) | 一种负载均衡方法及装置 | |
US9729652B2 (en) | Dynamically affinitizing users to a version of a website | |
JP2005182641A (ja) | 動的負荷分散システム及び動的負荷分散方法 | |
CN112839081A (zh) | 一种云集群的负载均衡方法 | |
JP5154313B2 (ja) | Sipメッセージ振分方法およびsipメッセージ振分装置 | |
JP5871908B2 (ja) | ネットワーク内部のデータ通信を制御するための方法およびシステム | |
EP2874368B1 (en) | Method and device for generating aggregate layer networkmap and aggregate layer costmap | |
Moreno et al. | On content delivery network implementation | |
Wichtlhuber et al. | SoDA: Enabling CDN-ISP collaboration with software defined anycast | |
KR101445255B1 (ko) | 부하 분산 설정을 자동으로 제공하기 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능한 기록 매체 | |
Tomic et al. | Implementation and efficiency analysis of composite DNS-metric for dynamic server selection | |
Trajano et al. | uLoBal: Enabling In-Network Load Balancing for Arbitrary Internet Services on SDN | |
CN103825941A (zh) | 对等网络中业务数据的转发控制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20131120 |
|
RJ01 | Rejection of invention patent application after publication |