法律状态公告日
法律状态信息
法律状态
2012-07-04
未缴年费专利权终止 IPC(主分类):H04L12/56 授权公告日:20081119 终止日期:20110430 申请日:20060430
专利权的终止
2008-11-19
授权
授权
2007-01-03
实质审查的生效
实质审查的生效
2006-11-08
公开
公开
技术领域
本发明涉及计算机技术领域,具体的说就是提供了一种用于多机服务器系统中的双向负载均衡机制。
技术背景
由于互联网络的飞速发展,快速增长的各种应用使网络服务器的访问量大大增加,这种情况导致了多机服务器系统(比如机群系统,也称为集群系统)的出现以满足日益增长的各种需求。负载均衡技术是多机服务器系统中的关键技术。其主要作用就是对负载进行均衡处理来使整个多机服务器系统达到最佳性能。目前基于多台负载均衡器所组成的负载均衡系统是其中用的比较多的一种解决方案,但是目前的负载均衡通常意义上指的是对客户端请求数据(也称上行数据)包的负载均衡。针对从服务器节点返回的响应数据(也称下行数据)包,有的系统是直接通过服务器节点将其返回给客户端,此时不需要考虑负载均衡,在这种情况下,后端服务器系统(一般由服务器节点通过网络互连而组成)暴露给外网,系统的安全性不好;有的系统采用网络地址转换(NAT,Network Address Translation)机制(策略),虽然请求数据包和返回数据包都经过负载均衡系统,保证了安全性,但是也有两个缺点,一是网络地址转换使负载均衡系统的开销比较大,影响负载均衡系统性能;二是没有对返回数据包进行负载均衡。
发明内容
本发明的目的在于克服上述现有技术不足,提供一种多机服务器系统中双向负载均衡机制的实现方法,具有高可用功能,并能够提高服务器系统的性能和安全性。
本发明的技术方案是这样实现的:按如下步骤进行:
1)在由很多台计算机所构成的多机服务器系统中,用一台或多台负载均衡器节点组成负载均衡系统,每台均衡器节点都有两个以太网端口,一个和外部网络相连,负责接收客户端的请求数据包;另一个和内部网络相连,负责和后端服务器系统通信;
2)当有客户端请求数据包到来的时候,负载均衡系统中的负载均衡器节点根据后端服务器节点的负载和存活状况来选定请求数据包的发送目的地,即将数据包的目的MAC地址修改为选定的后端服务器节点的MAC地址,然后将该数据包分发给该后端服务器节点;
3)负载均衡器节点和后端服务器节点至少有一个网卡是在同一网段内,以保证通过修改数据包的目的MAC地址就能够使数据包到达目的后端服务器节点;
4)把所有负载均衡器节点的对内IP地址和后端服务器节点的IP地址信息写在配置文件中,保存在负载均衡系统的控制台中;
5)在负载均衡系统的控制台上,管理员分别对负载均衡器节点和后端服务器节点进行从0开始的连续整数编号,用这些编号对负载均衡器节点总数进行取模,如果某台后端服务器节点的编号为j,j对负载均衡器总数进行取模,取模结果为i,则将第i台负载均衡器节点的对内IP地址作为这台后端服务器节点的默认网关地址。通过这种方法将负载均衡器节点的对内IP地址均衡的作为各台服务器节点的默认网关地址;
6)后端服务器节点处理完客户端来的请求数据包后,把返回数据转发给自己对应的默认网关,也就是对应的负载均衡器节点;
7)当负载衡器节点是基于Linux操作系统的主机实现时,负载均衡器节点要修改Linux操作系统内核,允许其接收源IP为自身IP的从外面来的数据包,并在Linux内核中打开自身的转发功能,将后端服务器节点发过来的返回数据包直接转发到外网;
8)当有负载均衡器节点增加或删除的时候,负载均衡系统的控制台上的驻守程序会自动修改保存的负载均衡器节点的对内IP地址信息表,然后进行重新取模,对后端服务器节点和负载均衡器节点进行重新划分,把正常工作的负载均衡器节点的对内IP重新分给各台服务器节点作为他们的默认网关地址,以保证均衡器系统的高可用性和负载均衡;
9)当有服务器节点增加或删除的时候,管理员要在系统控制台上重新对后端服务器节点进行从0开始连续的整数编号,用新编号对负载均衡器节点总数进行取模,重新配置服务器节点的默认网关。
通过采用以上方法,本发明具有以下技术效果:
1、双向负载均衡
本系统既可以对请求数据包进行负载均衡,当返回数据包经过负载均衡系统返回时,又可以对返回数据包进行负载均衡,从而可以更好的提高服务器系统的负载均衡效果。
2、高性能
在进行正向负载均衡时,是通过修改数据包的目的MAC地址来把数据包分发给后端服务器节点的;在进行反向负载均衡时,是通过设置服务器节点网关地址的方式,其实质也是通过修改数据包的目的MAC地址来实现。与NAT机制相比较,不需要对数据包进行网络地址转换,负载均衡系统的开销比较小,从而提高了服务器系统的性能。
3、高可用性
当有负载均衡器节点失效时,可以通过动态的修改后端服务器节点的网关地址为正常工作的负载均衡器节点的对内IP地址来把任务进行迁移,从而实现了高可用功能。
4、安全性
请求和返回数据包都经过负载均衡系统,整个多机服务器系统内部服务器节点对外网是屏蔽的,与DR(Direct Routing)机制(策略)相比较,可以更有效地保证整个多机服务器系统的安全性。
5、可扩展性
整个服务器系统可以根据需要动态的添加或删除负载均衡器节点的数量以达到最好的性价比。
附图说明
图1为本发明进行正向负载均衡时的工作原理示意图。
图2为本发明进行反向负载均衡时的工作原理示意图。
图3为本发明进行负载均衡的时候,数据包中的地址、端口号的转换图。
图4为对所有的服务器节点进行网关划分的拓扑图。
图5为对服务池分别进行网关划分的拓扑图。
附图是本发明的具体实施用例。
下面结合附图对本发明的内容作进一步详细说明。
具体实施方式
参照图1所示,负载均衡系统由多台均衡器节点组成,每台均衡器节点都有两个以太网端口,一个和外部网络相连,负责接收客户端的请求数据包;一个和内网相连,负责和后端服务器系统通信。图中的虚直线是进行正向负载均衡的地方。从图1中可以看出在进行正向负载均衡的时候,均衡器节点i(i∈0~n)是通过修改数据包的目的MAC地址来实现数据包的分发的。从客户端来的请求数据包在经过负载均衡系统时,负载均衡器节点i(i∈0~n)根据预先设定好的均衡算法决定该请求应该被发至哪台服务器节点j(j∈0~m)来处理,然后修改其目的MAC地址为选定的服务器节点j(j∈0~m)的MAC地址并将其转发出去。
参照图2所示,图中的虚直线就是进行反向负载均衡的地方。在进行反向负载均衡的时候,是通过设置服务器节点j(j∈0~m)的网关地址为均衡器节点i(i∈0~n)的对内IP地址来实现的。返回数据包从服务器节点j(j∈0~m)输出时被转发到该服务器节点j(j∈0~m)的网关地址所对应的均衡器节点i(i∈0~n)上,然后被均衡器节点i(i∈0~n)转发给客户端。
参照图3所示,Cip指的是客户端IP,Vip指的是负载均衡系统统一对外部网络提供的IP,一般称为单一IP或虚拟IP;Cport指的是客户端的(网络)端口号,Vport指的是目的端口号;Vmac指的是负载均衡系统统一对外提供的虚拟MAC地址,Rmac指的是选定的后端服务器节点的MAC地址,Gmac指的是后端服务器节点的网关的MAC地址,也就是对应的均衡器节点的对内网卡的MAC地址。从图3中可以看出,负载均衡系统中的均衡器节点收到客户端的请求数据包,在进行正向负载均衡的时候,数据包的目的MAC地址被修改为选定的服务器节点的MAC地址;服务器节点的返回数据包,在进行反向负载均衡的时候,数据包的目的MAC地址被修改为服务器的网关地址也就是对应的均衡器节点的MAC地址。
参照图4所示,把服务器节点放在一起统一对均衡器节点台数进行取模,以此来均衡的划分服务器节点网关。图中假设有n台均衡器节点,编号为0-n-1;有(k+1)n台服务器节点,通过取模进行划分后的结果如图所示:编号为0、n……kn的服务器节点划分给了编号为0的均衡器节点;编号为1、n+1……kn+1的服务器节点划分给了编号为1的均衡器节点;编号为n-1、2n-1……kn+n-1的服务器节点划分给了编号为n-1的均衡器节点。划分的目的是使每台均衡器承担相对均等的任务。
参照图5所示,后端服务器系统是由很多个提供不同服务的服务池所组成。这时需要对服务池分别进行划分,就是把每个服务池分别按照附图4所示的方法来进行划分,为避免服务池中服务器节点少时出现均衡器负载不均衡情况,采用服务池和服务池内服务器节点两级划分策略。
本发明提供的双向负载均衡机制包括正向负载均衡和反向负载均衡,正向负载均衡指的是对上行请求数据包(客户端到服务器端的请求数据包)进行负载均衡,通过负载均衡系统把请求按预先设定的策略均衡地分发给各台服务器节点;反向负载均衡指的是把从服务器节点处理后返回的数据包均衡的分发到各台负载均衡器节点上,然后经负载均衡器节点返回给客户端。本方法用于要求请求和返回数据包都要经过负载均衡系统的情况。
负载均衡系统中,当有负载均衡器节点失效的时候,会对整个多机系统产生影响,本发明提供的通过动态修改后端服务器节点的网关地址使其重新定向到其它任何正常工作的负载均衡器节点的方法可以很好的解决这个问题,在保证高可用的同时,还把失效节点的负载平均分摊到其它负载均衡节点上进行处理,避免了传统的由备份节点完全接管失效节点的任务而导致负载全部加在备份节点上的情况。
本发明中提供的数据包传输方式是:在进行正向负载均衡的时候,负载均衡器节点修改数据包的目的MAC地址;在进行反向负载均衡的时候,则是采用服务器节点设置网关的方式。修改数据包的目的MAC地址系统开销很小;负载均衡器节点作为后端服务器节点的网关,在数据包经过时只是做简单的判断就把数据包转发出去,系统开销同样很小。这样,可以使整个多机服务器系统具有较高的访问性能。
本发明的双向负载均衡机制支持可扩展性。可扩展性是指通过增加资源以满足不断增长的对性能和功能的要求,或者是通过缩减资源,以降低成本。系统的总服务能力应该随着资源的增加而按照比例增加。理想的情况是,增长的速度是线性的。成本的增加应该小于N(N指重复资源的个数)或者NlogN的一个线性系数。本发明的负载均衡机制中,负载均衡器节点的数量可以随需求进行动态的增加和删除,系统的性能与负载均衡器节点的数量成近似线性关系。
本发明是通过以下方式实现的:从客户端来的请求数据包,在进行正向负载均衡的时候,负载均衡器节点通过修改数据的目的MAC地址直接将其转发给后端服务器节点,不用经过网络地址转换;为了使返回给客户端的数据包能够经过负载均衡器节点转发出去,在多机系统的控制台上保存有负载均衡器节点和后端服务器节点的信息列表,按照管理员设定好的负载均衡算法,控制台驻守的划分程序对服务器节点进行网关划分,使服务器节点尽量均衡的对应到各负载均衡器节点上,然后根据计算好的对应关系来设置后端服务器节点的默认网关,这样,从后端服务器节点返回的数据包就被转发到其默认网关上,也就是对应的负载均衡器节点上了。与此同时,控制台管理监控程序同时监控各台负载均衡器节点和后端服务器节点的状态,以此来动态的修改服务器节点和负载均衡器节点间的对应关系,保证其高可用性。
由于在进行正向负载均衡时是通过直接修改数据包的目的MAC地址来实现的,在进行反向负载均衡时是把负载均衡器节点作为后端服务器节点的默认网关的,所以要求负载均衡器节点和服务器节点至少有一个端口是在同一网段内。这样才能保证访问服务器系统的数据包能够经过负载均衡器节点到达服务器节点,并且确保返回的数据包能够经过负载均衡器节点转发出去。
在进行正向负载均衡的时候,为了把访问数据包均衡的分发给后端服务器节点,可以采用多种负载均衡算法,比如轮询法,最小连接数法等。
在进行反向负载均衡的时候,为了把返回数据包均衡的分发给各台负载均衡器节点,需要划分好后端服务器节点和负载均衡器节点的对应关系,具体的划分方法如下:
假设负载均衡器节点有n台,后端服务器节点有m台(m>n),负载均衡器节点的编号为0、1……n-1,后端服务器节点的编号为0、1……m-1,则划发算法可以通过下面方法来实现:将后端服务器节点的编号对n取模,如果模值为i(0=<i<=n-1),则将第i台负载均衡器节点的对内IP地址设置为该服务器节点的默认网关地址。
当有负载均衡器节点失效时,为了保证高可用性,需要重新设定后端服务器节点的网关,重新设定后仍然要保证负载均衡起作用。重新划分方法如下:
当编号为i的负载均衡器节点失效时,需要将该负载均衡器节点从系统中剔除,现在负载均衡器节点的总数是n-1,对剩下的负载均衡器节点重新从0开始进行连续的编号,然后重新将后端服务器节点的编号对n-1取模,以此来重新配置后端服务器节点的默认网关地址。还可以通过把编号为i的负载均衡器节点所对应的服务器节点重新和其它负载均衡器节点对应,而其它的服务器节点不再重新改动以此来提高效率,也就是当编号为i的负载均衡器节点失效时,将该负载均衡器节点所对应的后端服务器节点重新划分给其它负载均衡器节点。
为了实现可扩展性,当需要增加负载均衡器节点时,同样需要进行重新划分,算法如下:
当已有n台负载均衡器节点,且需新增加一台时,给其编号为n,负载均衡器总数现在是n+1,然后重新将后端服务器节点的编号对n+1取模,以此来重新配置后端服务器节点的默认网关地址。还可以通过把和原来的n台负载均衡器节点对应的服务器节点取出一些重新对应到新加入的这台负载均衡器节点上,而其它服务器节点不再重新改动以此来提高效率。也就是当新增加一台负载均衡器节点时,给其编号为n,然后把后端服务器节点取出(m/n+1)(向下取整)台划分给该新加入的负载均衡器节点,也就是在原来的n台负载均衡器节点中,从每台所对应的服务器节点中取出(m/n*(n+1))(向下取整)台来,使其重新对应到新加入的负载均衡器节点上,重新修改其默认网关地址。
若负载衡器节点是基于Linux操作系统的主机实现的,则处理返回数据包时,需要在LINUX操作系统内核中打开自己的数据转发功能来保证对目的IP不是自身IP的数据包进行转发。
机译: 一种在无线网络中实现小区负载均衡机制的方法
机译: 无线网络中实现小区负载均衡机制的方法
机译: 在无线网络中实现小区负载均衡机制的方法