背景技术
随着信息化建设的发展,人们对网络服务器的处理能力、可靠性提出了更高的要求。网络负载均衡技术不但可以有效地解决单服务器的性能限制,而且可以实现在服务器出现故障后该服务器上业务的快速转移,保证服务器的高可靠性以及灵活的可扩展性。现有技术中,通过将多台服务器以对称的方式组成一个服务器集群,集群中的每台服务器均统一使用虚拟的集群IP地址与外界进行通信,进而将集群中的所有服务器虚拟为一台服务器。同时,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过对源IP地址进行负载均衡算法分析,将外部发送来的请求均匀地分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。
然而,当上述服务器-客户端的同一会话处理流程中存在两个以上的客户端参与时,可能会导致服务器主动下发报文后无法收到客户端回应的问题。例如:在RADIUS认证环境中,身份认证报文由工作在接入层的AAA(Authentication、Authorization、Accounting,验证、授权和计费)设备发起,将客户端传来的接入报文转发给RADIUS(RemoteAuthenticationDialInUserService,远程认证拨号用户服务)服务器,进行认证、授权、计费;后续的安全认证报文则由用户终端发起。从上述描述中我们不难看出,由于报文的源IP地址不同,负载均衡算法可能会将AAA设备发向RADIUS服务器的报文和用户终端发向安全认证服务器的报文会发向集群中不同的服务器。即身份认证和安全认证可能会在集群中的不同服务器间进行。该现象将导致一个严重的问题,当安全认证过程中安全认证服务器向AAA设备下发ACL或VLAN时,AAA设备的回应报文可能被发向身份认证所在的RADIUS服务器,安全认证服务器将无法收到用户终端的回应报文而导致会话控制(session-control)报文下发失败。
为了解决上述问题,现有技术通过将客户端身份认证和安全认证强制绑定到同一台服务器上,当集群中的服务器收到客户端发起的安全认证报文时,判断该用户的身份认证是否在本服务器进行,如果不是在本服务器中,从数据库中查询出该客户端身份认证所在的服务器,然后将安全认证报文转发到身份认证所在的服务器,同时维护该客户端身份认证服务器的IP地址用以转发后续来自该客户端的报文。
然而,经过分析,该技术方案存在如下问题:
首先,收到安全认证报文时需要判断身份认证是否在本服务器进行,同时查询数据库信息,如果身份认证不是在本服务器进行的话相当于这部分工作就白做了,影响了服务器的性能;
其次,安全认证占用了服务器性能的大部分负荷,按接入设备的IP地址进行负载均衡,当接入设备的IP地址划分不合理时,将导致安全认证处理的负载不均衡,因此该技术方案很容易影响整个集群服务器的工作性能;
此外,支持负载均衡的每台服务器在业务上是相互独立的,如果采用该方案在收到安全认证报文时判断身份认证是否在本服务器进行,需要对原有已布置的负载均衡服务器的相应模块进行开发和修改,这样,容易导致引入新的问题,同时也违背了低耦合的软件工程设计思想。
发明内容
有鉴于此,本发明提供了一种负载均衡环境下报文的处理方法和装置,通过对负载均衡环境下服务器特定端口集发出的报文进行拦截转发或重定向至主服务器的特定端口集发出,进而解决现有负载均衡环境下服务器主动下发报文后可能无法收到接入设备的回应报文或者服务器主动下发报文后引发服务器性能降低的问题。
为达到上述目的,本发明的技术方案具体是这样实现的:
一种负载均衡环境下报文的处理方法,所述方法应用于由多台服务器构成集群服务器进行负载均衡的网络系统中,其中所述方法包括:
步骤1、为负载均衡环境下集群内服务器配置向接入设备发送报文的特定端口集;
步骤2、为负载均衡环境下集群内服务器安装一个监听拦截转发器;
步骤3、负载均衡环境下集群内服务器判断本机是否为主服务器,如果不是,则进入步骤4,否则,进入步骤5;
步骤4、拦截本服务器的特定端口集向接入设备下发的报文,并将其转发或重定向到主服务器上,通过该主服务器的特定端口集向对应的接入设备转发;
步骤5、直接通过主服务器上配置的特定端口集向接入设备发送报文。
本发明同时提供一种负载均衡环境下报文处理的装置,其中所述装置为负载均衡环境下集群内的各服务器,其中所述装置包括:
配置模块,用于配置负载均衡环境下各服务器主动向接入设备发送报文的特定端口集;
监听拦截转发器模块,用于在负载均衡环境下监听服务器固定端口集发出的报文,且当所述服务器为非主服务器时,进一步将所述服务器上固定端口集发出的报文转发或重定向至主服务器上;
处理模块,用于判断负载均衡环境下集群内本服务器是否主服务器,如果不是,将拦截本服务器固定端口集向接入设备下发的报文,并将其转发或重定向到主服务器上,并通过该主服务器配置的固定端口集向相应的接入设备转发,否则,直接通过主服务器上的固定端口集向接入设备发送报文。
由上述技术方案可见,本发明通过对负载均衡环境下服务器特定端口集的报文拦截转发或重定向至主服务器并由该主服务器特定端口集发出,进而解决现有负载均衡环境下服务器主动下发报文后可能无法收到接入设备的回应报文或者服务器主动下发报文后引发服务器性能降低的问题。
具体实施方式
为了实现本发明目的,本发明采用的一般实现方式为:首先为负载均衡环境下集群内每台服务器配置向客户端下发报文的特定端口集,其次依照预定的规则选择集群中的主服务器,并在集群内各服务器上安装一个监听拦截转发器,进一步判断本服务器是否为主服务器,如果不是,则通过监听拦截转发器拦截本服务器前述特定端口集向接入设备下发的所有报文,并将其转发到主服务器上,通过主服务器上配置的特定端口集向接入设备下发。
为了更加清楚和明白地表述本发明,以下结合实施例对本发明技术方案进行详细说明。如图1所示,为本发明负载均衡环境下报文的处理方法流程图。该方法包括如下步骤:
步骤1、为负载均衡环境下集群内每台服务器配置向接入设备发送报文的特定端口集;
例如:在实施例中,将集群内各服务器不常用的[20000,20500]端口集,作为集群内各服务器主动向接入设备发送报文的固定端口集。并且,进一步地,在配置集群服务器负载均衡的规则时,不对前述特定端口集进行负载均衡。需要说明的是,本发明实施例配置的服务器特定端口集并不限于[20000,20500]端口集,任何不常用的端口集均可以被配置为服务器主动向接入设备发送报文的固定端口集。
步骤2、依照预定的规则,从负载均衡环境下集群内各服务器中选择主服务器;
例如,本步骤中,假定依照服务器的MAC地址或者IP地址最小对应优先级最高的规则,选择当前存活的服务器作为主服务器。进一步地,当主服务器宕机后,继续依照所述预定的规则,由其他存活且优先级最高的服务器充当主服务器,并通过广播报文通知其他服务器该新主服务器的IP地址;在当前主服务器探测到优先级更高的服务器恢复后,则交出主服务器权利,再次通过广播报文通知主服务器新的IP地址。
步骤3、为负载均衡环境下集群内每台服务器上安装一个监听拦截转发器;
需要说明的是,本步骤中的监听拦截转发器,即可以通过硬件器件来实现,也可以通过软件模块来实现。任何能够实现本功能的软硬件模块均应属于本发明的构思范围。
步骤4、负载均衡环境下集群内各服务器判断本机是否为主服务器,如果不是,则进入步骤5,否则,进入步骤6;
当集群内各服务器的监听拦截转发器监听到本服务器需要通过步骤1配置的特定端口集向接入设备下发报文时,首先需要判断其本机是否为本集群内的主服务器,以便确定是否需要对本服务器特定端口集向接入设备下发的报文进行栏截。
步骤5、拦截本服务器的特定端口集向接入设备下发的报文,并将其转发或重定向到主服务器上,通过该主服务器的特定端口集向对应的接入设备转发。
具体地,当本服务器不是集群内的主服务器时,所述服务器上的监听拦截转发器拦截该服务器的特定端口集向接入设备下发的报文,并通过其和主服务器监听拦截转发器之间设置的固定通信端口将之转发或者重定向到主服务器上。当主服务器收到其他服务器通过监听拦截转发器转发或重定向过来的报文后,使用其在步骤1配置的特定端口集向对应的接入设备下发报文。
当主服务器宕机后,依据前述步骤2的预定规则,选择其他存活且优先级最高的服务器充当主服务器,并广播通知新主服务器的IP地址;在主服务器探测到优先级更高的服务器恢复后,交出主服务器权利,再次广播通知主服务器新的IP地址。其他服务器收到来自主服务器的广播报文后,将后续监听拦截到通过特定端口集下发的报文转发到新的主服务器上。如果发现广播报文中的主服务器IP地址等于本机的IP地址,则直接接管主服务器的角色。
当主服务器监听拦截转发器监听到其特定端口集接收到来自接入设备的回应报文后,直接通过其和源服务器监听拦截转发器之间设置的固定通信端口将该接入设备的回应报文转发到源服务器上,进而完成接入设备和服务器之间报文的交互。
步骤6、直接通过主服务器上配置的特定端口集向接入设备发送报文。
图2为本发明负载均衡环境下集群服务器下发报文的应用场景图。在该图所示的网络系统中,包括负载均衡集群服务器,分别为服务器A、B、C,优先级次序依次为A>B>C,认证用户B通过接入设备A接入网络并认证。按照负载均衡算法,假若身份认证被分配到服务器A中进行。通身份认证后,客户端发起安全认证报文,此时,安全认证被分配到服务器B上进行,假如安全认证没有通过,服务器B需要向接入设备A下发ACL并等待接入设备A的回应报文。首先,服务器B发向接入设备A的控制会话(session-control)报文被服务器B上的监听拦截转发器转发到主服务器A,主服务器A上的拦截转发器收到报文后通过服务器A上的固定端口集发送到接入设备A,然后等待接入设备A回应,收到接入设备A回应后将接入设备A的回应报文通过主服务器A监听拦截转发器和服务器B监听拦截转发器之间设置的固定通信端口直接转发到服务器B上,服务器B收到回应报文完成ACL的下发业务流程。在整个过程中,服务器B不知道也不关注下发报文被拦截器转发,整个拦截转发过程对原有的业务是透明的。由于拦截转发器只是负责拦截转发功能,不需要查询数据库和判断,对服务器性能影响几乎没有。
当主服务器A宕机,服务器B的拦截转发器探测到后立即接管主服务器的角色并广播新主服务器的IP地址,其他服务器的拦截转发器收到广播报文后更新主服务器的IP地址。当服务器A恢复后,发送广播询问主服务器的IP地址(报文中携带本机IP和优先级),主服务器B收到广播后,发现A的优先级高于自己,立即交出主服务器权力并广播主服务器的新IP地址为服务器A,A收到广播报文后发现自己的IP地址和主服务器的IP地址相同立刻接管主服务器的角色。如果是服务器C发出询问主服务器IP地址的广播,由于服务器C的优先级低于自己,服务器B收到后只是广播主服务器的IP地址为服务器B。
本发明使服务器和接入设备报文交互的业务无需关注报文的处理和转发问题,依然按照原来的处理模式给接入设备直接下发报文即可。拦截转发过程对原有的业务是透明的。由于拦截转发器除了处理服务器配置的端口集主动下发的报文外,不参与其他业务处理,也不需要查询数据库消耗性能,对服务器性能影响几乎没有。另外,除服务器主动下发报文的回应报文外,不影响负载均衡的策略和算法。不会对服务器的负载均衡策略造成很大的影响从而达到负载均衡的最大化,因而提高了整个集群的性能。同时,对原有业务模块改动量小,甚至不需要修改,只需要在每台服务器上安装拦截分析器即可。减少了开发工作量,同时降低了适配负载均衡和原有业务模块的耦合度,从而降低了维护的成本和引入问题的风险。
如图3所示,本发明提供了一种负载均衡环境下报文处理的装置图。其中所述装置应用于如图2所示的应用场景中,进一步地,所述装置为负载均衡环境下的服务器。所述装置包括:
配置模块,用于配置负载均衡环境下各服务器主动向接入设备发送报文的特定端口集;
例如:将集群内各服务器不常用的[20000,20500]端口集,作为集群内各服务器主动向接入设备发送报文的特定端口集。并且,进一步地,在配置集群服务器负载均衡的规则时,不对前述服务器主动下发报文的端口集进行负载均衡,需要说明的是,本发明实施例配置的服务器特定端口集并不限于[20000,20500]端口集,任何不常用的端口集均可以被配置为服务器主动向接入设备发送报文的固定端口集。
优先级比较模块,用于依照预定的规则,从负载均衡环境下集群内各服务器中选择主服务器;例如,假定依照服务器的MAC地址或者IP地址最小对应集群中优先级最高的规则,选择当前存活的服务器作为主服务器。
当主服务器宕机后,所述优先级比较模块进一步依据前述预定的规则,由其他存活且优先级最高的服务器充当主服务器,并通过广播报文通知其他服务器关于该主服务器的IP地址;在当前主服务器探测到优先级更高的服务器恢复后,则交出主服务器权利,再次通过广播报文通知主服务器新的IP地址。
监听拦截转发器模块,用于在负载均衡环境下监听服务器特定端口集发出的报文,且当所述服务器为非主服务器时,进一步将所述服务器上特定端口集发出的报文转发或重定向至主服务器上,需要说明的是,本步骤中的监听拦截转发器,即可以通过硬件器件来实现,也可以通过软件模块来实现本功能。任何能够实现本功能的软硬件模块均应属于本发明的构思范围。
处理模块,用于判断负载均衡环境下集群内本服务器是否主服务器,如果不是,将拦截本服务器的特定端口集向接入设备下发的报文,并将其转发或重定向到主服务器上,通过该主服务器配置的特定端口集向相应的接入设备转发,如果本机就是主服务器,则直接通过主服务器上的特定端口集向接入设备发送报文。
具体地,当服务器判断本机不是主服务器时,则将拦截本服务器的特定端口集向接入设备下发的报文,并将其转发或重定向到主服务器上;当主服务器收到其他服务器通过监听拦截转发器转发或重定向过来的报文后,使用其配置的特定端口集向接入设备下发报文。
当主服务器宕机后,依据前述预定的规则,由其他存活且优先级最高的服务器充当主服务器,并广播通知主服务器的IP地址;在主服务器探测到优先级更高的服务器恢复后,交出主服务器权利,一并广播通知主服务器的IP地址。其他服务器收到来自主服务器的广播报文后,将后续监听拦截到的特定端口集下发的报文转发到该新的主服务器。如果发现广播中的主服务器IP地址等于本机的IP,则接管主服务器的角色。
当主服务器的监听拦截转发器监听到其固定端口集接收到来自接入设备的回应报文后,通过主服务器监听拦截转发器和源服务器监听拦截转发器之间设置的固定通信端口,直接将所述接入设备的回应报文向该源服务器转发,完成接入设备和服务器之间报文的交互。
本发明通过对负载均衡环境下服务器特定端口集的报文拦截转发或重定向至主服务器特定端口集下并由通过该主服务器端口集发出,解决现有技术负载均衡环境下服务器主动下发报文后可能无法收到客户端回应或者服务器主动下发报文后引发服务器性能降低的问题。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。