前端负载均衡器、后端服务器及注册方法与流程

文档序号:12491554阅读:206来源:国知局
前端负载均衡器、后端服务器及注册方法与流程

本发明涉及IT技术领域,特别涉及一种前端负载均衡器、后端服务器及注册方法。



背景技术:

在云计算场景下,现有的负载均衡后端服务发现方式通常是通过静态的手动配置,以HAProxy为例,HAProxy是个著名的开源的软件TCP(四层)/HTTP(七层)负载均衡器和代理软件,可以运行在Linux,Solaris和FreeBSD等系统上。HAProxy最常用的用途是通过在多个服务器(比如web服务器,应用,数据库等)之间分发负载来改善一个服务器系统的性能和可靠性。目前,HAProxy已经被许多大公司采用,包括GitHub,Imgur,Instagram,和Twitter等。使用HAProxy的时候需要在前端负载均衡设备手动配置backend,backend是一组接收转发的请求的后端服务器的IP地址,通过网络管理员手工配置好backend来完成后端服务器向前端负载均衡器的注册过程,在完成注册后,负载均衡设备根据规则把请求分发到后端服务器。

故在现有的技术中,向一个负载均衡集群中增加或注册一个后端服务器成员所需做的操作通常是:在前端负载均衡设备上显式地手动配置后端服务器的信息,从而将新的后端服务器加入到自己的可用服务器列表进行管理。

由于现有技术的后端服务器的加入或注册不够智能化,当需要新增一个后端服务器时,只能通过手动的方式在前端负载均衡器上的配置文件中显式地配置新增的后端服务器的地址来完成注册,这种方式在当前云计算环境中特别繁琐,而由于虚拟化技术的发展,后端服务器可以部署在虚拟机或容器中,使得后端服务器规模往往很大,上百个到上千个都有可能。而业务的动态变化也要求负载均衡集群动态扩容,新的后端服务器的注册将会是经常性的操作,若还频繁地通过手动方式更改前端负载均衡器上的配置文件来注册后端服务器,管理非常不方便。



技术实现要素:

本发明实施例提供一种前端负载均衡器、后端服务器及注册方法,前端负载均衡器可自动对后端服务器进行注册,从而提高管理的便利性。

第一方面,本申请提供一种注册方法,该方法应用于前端负载均衡器,前端负载均衡器与至少一个后端服务器设置于一个组播组内,同一组播组内的前端负载均衡器和后端服务器均设置有相同的组播地址,前端负载均衡器设置有可用服务器列表,可用服务器列表用于记录注册成功的后端服务器的单播地址,当后端服务器的单播地址记录在前端负载均衡器的可用服务器列表时,表示后端服务器就在前端负载均衡器上完成了注册,该注册方法具体包括:

前端负载均衡器向组播组内的后端服务器组播发送IGMP general query报文,其中IGMP general query报文的组播地址字段携带前端负载均衡器的单播地址;

前端负载均衡器在预设端口监听组播组内所有后端服务器响应IGMP general query报文分别单播发送的宣告报文,其中宣告报文的目的地址字段包括前端负载均衡器的单播地址,目的端口包括预设端口,源地址字段包括发送宣告报文的后端服务器的单播地址,预设端口为预先指定的前端负载均衡器的非系统端口,由于宣告报文的目的地址字段和目的端口指向前端负载均衡器,因此前端负载均衡器可在预定端口接收到组播组内所有后端服务器发送的宣告报文;

前端负载均衡器解析宣告报文以获取源地址字段携带的后端服务器的单播地址;

在源地址字段携带的后端服务器的单播地址没有记录在可用服务器列表中时,前端负载均衡器将源地址字段携带的后端服务器的单播地址记录在可用服务器列表,从而完成注册。

通过实施上述实施例,前端负载均衡器可从宣告报文获取到后端服务的单播地址并将其加入可用服务器列表,从而完成注册,故在前端负载均衡器上全程无需手动进行配置,可有效提高管理便利性。

在第一方面的一种可能的实现方式中,可用服务器列表中记录的每一单播地址均对应一心跳计时器,在前端负载均衡器将源地址字段携带的后端服务器的单播地址记录在可用服务器列表的步骤之后,该方法还包括:

前端负载均衡器为源地址字段携带的后端服务器的单播地址设置心跳计时器并开始计时。

在第一方面的一种可能的实现方式中,该方法还包括:

前端负载均衡器在源地址字段携带的后端服务器的单播地址记录在可用服务器列表中时,控制源地址字段携带的后端服务器的单播地址对应的心跳计时器重新计时。

在第一方面的一种可能的实现方式中,该方法还包括:

前端负载均衡器在可用服务器列表中记录的单播地址对应的心跳计时器的计时值超出预定时间段时,控制心跳计时器重新计时,并累计心跳计时器的超时次数,在超时次数超出预定次数时,将与心跳计时器对应的单播地址从可用服务器列表中移除。

通过实施上述实施例,本发明实施例揭示的注册方法还可以定期监控已经注册的后端服务器的实时状态,自动将退出组播组的后端服务器进行注销,因此在后端服务器的数量要进行动态的扩容或缩容时,无需手动配置前端负载均衡器,故可进一步提升管理的便利性。

在第一方面的一种可能的实现方式中,前端负载均衡器向组播组内组播发送IGMP general query报文的步骤具体包括:

前端负载均衡器在向组播组内的后端服务器组播发送IGMP general query报文时开始计时;

在前端负载均衡器接收到组播组内最先接收到IGMP general query报文的后端服务器响应IGMP general query报文向组播组组播发送的IGMP membership response报文时,前端负载均衡器根据IGMP membership response报文确认组播组有效,且在计时值超过预定周期后继续向组播组内的后端服务器组播发送IGMP general query报文;

在前端负载均衡器没有接收到IGMP membership response报文时,前端负载均衡器确认组播组失效,在计时值超过预定周期后停止继续向组播组内的后端服务器组播发送IGMP general query报文。

通过实施上述实施例,可保证在组播组有效时,前端负载均衡器可获取还在组播组内的后端服务器发送的宣告报文,根据宣告报文获知组播组内的后端服务器的健康状态,而在组播组失效时,放弃对该组播组进行维护。

在第一方面的一种可能的实现方式中,宣告报文为UDP报文。

第二方面,本申请提供一种注册方法,该方法应用于后端服务器,后端服务器与前端负载均衡器设置于同一个组播组内,同一组播组内的前端负载均衡器和后端服务器均设置有相同的组播地址,该方法包括:

后端服务器接收前端负载均衡器向组播组内组播发送的IGMP general query报文,其中IGMP general query报文的组播地址字段携带前端负载均衡器的单播地址;

后端服务器响应IGMP general query报文向前端负载均衡器单播发送宣告报文,其中宣告报文的目的地址字段包括前端负载均衡器的单播地址,目的端口包括预设端口,源地址字段包括后端服务器的单播地址,预设端口为指定的前端负载均衡器的非系统端口。

通过实施上述实施例,本发明实施例揭示的注册方法还可以定期监控已经注册的后端服务器的实时状态,自动将退出组播组的后端服务器进行注销,因此在后端服务器的数量要进行动态的扩容或缩容时,无需手动配置前端负载均衡器,故可进一步提升管理的便利性。

在第二方面的一种可能的实现方式中,在后端服务器接收前端负载均衡器周期地向组播组内组播发送的IGMP general query报文的步骤之后,该方法还包括:

后端服务器响应IGMP general query报文向组播组内组播发送IGMP membership response报文,且在向组播组内组播发送IGMP membership response报文之前若接收到组播组内另一后端服务器向组播组组播发送的IGMP membership response报文,则取消向组播组内组播发送IGMP membership response报文。

在第二方面的一种可能的实现方式中,宣告报文为UDP报文。

第三方面,本申请提供一种前端负载均衡器,前端负载均衡器与至少一个后端服务器设置于一个组播组内,同一组播组内的前端负载均衡器和后端服务器均设置有相同的组播地址,前端负载均衡器设置有可用服务器列表,可用服务器列表用于记录注册成功的后端服务器的单播地址,前端负载均衡器包括:

组播地址设置模块,用于设置与组播组内的后端服务器相同的组播地址;

组播查询发送模块,用于向组播组内的后端服务器组播发送IGMP general query报文,其中IGMP general query报文的组播地址字段携带前端负载均衡器的单播地址;

单播接收模块,用于在预设端口监听组播组内所有后端服务器响应送IGMP general query报文分别单播发送的宣告报文,其中宣告报文的目的地址字段包括前端负载均衡器的单播地址,目的端口包括预设端口,源地址字段包括发送宣告报文的后端服务器的单播地址,预设端口为指定的前端负载均衡器的非系统端口;

报文解析模块,用于解析宣告报文以获取源地址字段携带的后端服务器的单播地址;

注册模块,在源地址字段携带的后端服务器的单播地址没有记录在可用服务器列表中时,将源地址字段携带的后端服务器的单播地址记录在可用服务器列表。

通过实施上述实施例,本发明实施例揭示的注册方法还可以定期监控已经注册的后端服务器的实时状态,自动将退出组播组的后端服务器进行注销,因此在后端服务器的数量要进行动态的扩容或缩容时,无需手动配置前端负载均衡器,故可进一步提升管理的便利性。

在第三方面的一种可能的实现方式中,前端负载均衡器还包括心跳计时器和计时器设置模块,计时器设置模块,用于为可用服务器列表中记录的每一所述单播地址均对应设置一心跳计时器,并为源地址字段携带的后端服务器的单播地址设置心跳计时器并控制心跳计时器开始计时。

在第三方面的一种可能的实现方式中,注册模块还用于:

在判断到源地址字段携带的后端服务器的单播地址记录在可用服务器列表中时,控制源地址字段携带的后端服务器的单播地址对应的心跳计时器重新计时。

在第三方面的一种可能的实现方式中,计时器设置模块还用于:

在可用服务器列表中记录的单播地址对应的心跳计时器的计时值超出预定时间段时,控制心跳计时器重新计时,并累计心跳计时器的超时次数,在超时次数超出预定次数时,将与心跳计时器对应的单播地址从可用服务器列表中移除。

通过实施上述实施例,本发明实施例揭示的注册方法还可以定期监控已经注册的后端服务器的实时状态,自动将退出组播组的后端服务器进行注销,因此在后端服务器的数量要进行动态的扩容或缩容时,无需手动配置前端负载均衡器,故可进一步提升管理的便利性。

在第三方面的一种可能的实现方式中,前端负载均衡器还包括组播响应接收模块,

组播查询发送模块,还用于在向组播组内组播发送IGMP general query报文时开始计时;

组播响应接收模块,用于接收组播组内最先接收到IGMP general query报文的后端服务器响应IGMP general query报文向组播组组播发送的IGMP membership response报文;

其中,在组播响应接收模块接收到组播组内最先接收到IGMP general query报文的后端服务器响应IGMP general query报文向组播组组播发送的IGMP membership response报文时,组播查询发送模块根据IGMP membership response报文确认组播组有效,且在计时值超过预定周期后继续向组播组内的后端服务器组播发送IGMP general query报文;在组播响应接收模块没有接收到IGMP membership response报文时,组播查询发送模块确认组播组失效,在计时值超过预定周期后停止继续向组播组内的后端服务器组播发送IGMP general query报文。

通过实施上述实施例,本发明实施例揭示的注册方法还可以定期监控已经注册的后端服务器的实时状态,自动将退出组播组的后端服务器进行注销,因此在后端服务器的数量要进行动态的扩容或缩容时,无需手动配置前端负载均衡器,故可进一步提升管理的便利性。

在第三方面的一种可能的实现方式中,宣告报文为UDP报文。

第四方面,本申请提供一种后端服务器,包括:

组播地址设置模块,组播地址设置模块用于设置与前端负载均衡器相同的组播地址;

组播查询接收模块,用于接收前端负载均衡器周期地向组播组内组播发送的IGMP general query报文,其中IGMP general query报文的组播地址字段携带前端负载均衡器的单播地址;

单播发送模块,用于响应IGMP general query报文向前端负载均衡器单播发送宣告报文,其中宣告报文的目的地址字段包括前端负载均衡器的单播地址,目的端口包括预设端口,源地址字段包括后端服务器的单播地址,预设端口为组播组预先一致设定的非系统端口。

在第四方面的一种可能的实现方式中,宣告报文为UDP报文。

在第四方面的一种可能的实现方式中,后端服务器还包括组播响应发送模块,

组播响应发送模块,用于响应IGMP general query报文向组播组内组播发送IGMP membership response报文,且在组播响应发送发送模块向组播组内组播发送IGMP membership response报文之前若组播查询接收模块接收到组播组内另一后端服务器向组播组组播发送的IGMP membership response报文,则组播响应发送模块取消向组播组内组播发送IGMP membership response报文。

第五方面,本申请提供一种前端负载均衡器,包括存储器、处理器、网络接口和总线,存储器、网络接口、处理器分别与总线连接,前端负载均衡器与至少一个后端服务器设置于一个组播组内,同一组播组内的前端负载均衡器和后端服务器均设置有相同的组播地址,存储器存储有程序指令和可用服务器列表,可用服务器列表用于记录注册成功的后端服务器的单播地址,处理器执行存储器中的程序指令以执行步骤:

设置与组播组内的后端服务器相同的组播地址;

控制网络接口向组播组内的后端服务器组播发送IGMP general query报文,其中IGMP general query报文的组播地址字段携带前端负载均衡器的单播地址;

控制网络接口在预设端口监听组播组内所有后端服务器响应送IGMP general query报文分别单播发送的宣告报文,其中宣告报文的目的地址字段包括前端负载均衡器的单播地址,目的端口包括预设端口,源地址字段包括发送宣告报文的后端服务器的单播地址,预设端口为指定的前端负载均衡器的非系统端口;

解析宣告报文以获取源地址字段携带的后端服务器的单播地址;

在源地址字段携带的后端服务器的单播地址没有记录在可用服务器列表中时,将源地址字段携带的后端服务器的单播地址记录在可用服务器列表。

通过实施上述实施例,前端负载均衡器可从宣告报文获取到后端服务的单播地址并将其加入可用服务器列表,从而完成注册,故在前端负载均衡器上全程无需手动进行配置,可有效提高管理便利性。

第六方面,提供一种后端服务器,包括存储器、处理器、网络接口和总线,存储器、网络接口、处理器分别与总线连接,后端服务器与前端负载均衡器设置于同一个组播组内,同一组播组内的前端负载均衡器和后端服务器均设置有相同的组播地址,,存储器存储有程序指令,处理器执行存储器中的程序指令以执行步骤:

控制网络接口接收前端负载均衡器向组播组内组播发送的IGMP general query报文,其中IGMP general query报文的组播地址字段携带前端负载均衡器的单播地址;

控制网络接口响应IGMP general query报文向前端负载均衡器单播发送宣告报文,其中宣告报文的目的地址字段包括前端负载均衡器的单播地址,目的端口包括预设端口,源地址字段包括后端服务器的单播地址,预设端口为指定的前端负载均衡器的非系统端口。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为根据本发明实施例的系统架构示意图;

图2是根据本发明实施例的版本1的IGMP报文的报文头的数据格式示意图;

图3是根据本发明实施例的报文交互图;

图4是根据本发明实施例的一种路由拓扑架构的系统架构示意图;

图5是根据本发明实施例的另一种路由拓扑架构的系统架构示意图;

图6是根据本发明实施例的封装有UDP报文的IP报文的数据格式示意图;

图7是根据本发明实施例的体现心跳计时器与可用服务列表中注册的单播地址之间的对应关系的示意图;

图8是根据本发明实施例的前端负载均衡器的装置结构示意图;

图9是根据本发明实施例的后端服务器的装置结构示意图;

图10是根据本发明实施例的前端负载均衡器的另一装置结构示意图;

图11是根据本发明实施例的后端服务器的另一装置结构示意图。

具体实施方式

首先请参见图1,图1为根据本发明实施例的系统架构示意图,如图1所示,客户端111、112、113分别与前端负载均衡器100网络连接,后端服务器101、102、103分别与前端负载均衡器100网络连接。

值得注意的是,在本发明实施例中,客户端111、112、113具体可通过有线和/或无线网络分别与前端负载均衡器100网络连接,后端服务器101、102、103具体可通过有线和/或无线网络分别与前端负载均衡器100网络连接。

并且,上述客户端和后端服务器的数量仅为示例性,其具体数量可为单个或复数个,具体可根据实际需要设定。

可选地,在上述有线或无线网络中设置有至少一个组播路由器,组播路由器支持组播功能,以用作路径计算、报文的组播、转发和/或复制。

在图1中,客户端111、112或113产生网络请求并发送至前端负载均衡器100,前端负载均衡器100根据后端服务器的注册情况将该网络请求转发至后端服务器101、102或103进行处理。

即:后端服务器101、102以及103需要先在前端负载均衡器100上进行注册,前端负载均衡器100才能将客户端111、112或113产生的请求发送至对应的后端服务器以进行处理。

具体地,在本发明实施例中,前端负载均衡器100设置有可用服务器列表,该可用服务器列表记录了注册成功的后端服务器的单播地址,只要后端服务器的单播地址记录在前端负载均衡器的可用服务列表中,前端负载均衡器100就会认为后端服务器在前端负载均衡器注册成功,从而将客户端发出的网络请求发送至注册成功的后端服务器。若后端服务器的单播地址没有记录在前端负载均衡器100的可用服务列表中,前端负载均衡器100不会发送网络请求至该后端服务器。

因此,本发明实施例所述的“注册”是指:将后端服务器的单播地址记录在前端负载均衡器的可用服务列表中。

在本发明实施例中,前端负载均衡器100通过对后端服务器所在组播组周期地组播发送IGMP报文来实现对后端服务器的注册及注销,其中IGMP报文可以是现行的版本1、版本2或版本3。

现以版本1的IGMP报文为例进行说明,而版本2和3与版本1类似,于此不作赘述。

参见图2,图2是根据本发明实施例的版本1的IGMP报文的报文头的数据格式示意图,如图2所示,版本1的IGMP报文的报文头包括8位版本号字段、8位未使用字段、16位校验和字段、32位组播地址(group address)字段。

在本发明实施例中,前端负载均衡器100在IGMP general query报文的报文头版本号字段写入0x11(0x11表示组播报文的类型为IGMP general query报文,其为组播协议规定),32位组播地址字段写入前端负载均衡器100的单播地址。

组播组内的后端服务器接收到IGMP general query报文之后,可以从32位组播地址字段获取前端负载均衡器100的单播地址,并向前端负载均衡器100的单播地址发送自身的单播地址,从而完成在前端负载均衡器完成注册。

为了进一步清楚说明,请参见图3,图3是根据本发明实施例的报文交互图。在图3中以实际的网络地址标示出组播地址和单播地址,值得注意的是,图3标出的组播地址和单播地址的具体数值仅为示例性说明,并不会对本发明实施例作出限制。

如图3所示,前端负载均衡器100的组播地址为224.0.1.1,单播地址为192.168.1.100;后端服务器101没有设置组播地址,单播地址为192.168.1.101;后端服务器102没有设置组播地址,单播地址为192.168.1.102;后端服务器没有设置组播地址,单播地址为192.168.1.102;后端服务器103没有设置组播地址,单播地址为192.168.1.103。

在一些示例中,后端服务器101-103也可设置与224.0.1.1不同的其他组播地址(因此后端服务器101-103与前端负载均衡器100不在一个组播组内)。

由于后端服务器101、102、103没有设置组播地址,若需要加入前端负载均衡器100所在组播组,后端服务器101、102、103需各自设置自身组播地址使之与前端负载均衡器100一致。故在步骤1中需在后端服务器101上通过手动或脚本方式配置组播地址为224.0.1.1(与前端负载均衡器100一致)。同样地,在步骤2中将后端服务器102的组播地址配置为224.0.1.1,在步骤3后端服务器103中将自身组播地址配置为224.0.1.1。

在步骤4至6中,前端负载均衡器100向组播组组播发送IGMP general query报文并开始计时,值得注意的是,前端负载均衡器100只需向组播组内发送一个IGMP general query报文,该IGMP general query报文通过网络中的组播路由器进行复制,并分别发送至组播组内每一后端服务器。

在该种实现方式下,由于组播路由器执行了复制并分发,故前端负载均衡器100只需发送一个IGMP general query报文,就可以保证该IGMP general query报文发送至组播组内所有后端服务器101、102、103中,可极大地节约前端负载均衡器100的上行带宽。

可选地,前端负载均衡器100可集成组播路由器的功能,复制IGMP general query报文分别发送至组播组内每一后端服务器。

由于组播路由器的功能被前端负载均衡器100集成,因此在该实现方式可应用于没有设置组播路由器的局域网中。

为了便于理解,请参见图4和图5,以对组播路由器执行复制并分发的过程进行介绍,其中图4是根据本发明实施例的一种路由拓扑架构的系统架构示意图,图5是根据本发明实施例的另一种路由拓扑架构的系统架构示意图。

在图4中,前端负载均衡器100向组播组内组播发送一个IGMP general query报文,组播路由器121(该组播路由器121与前端负载均衡器100之间的网络传输时间最短)接收该IGMP general query报文,并复制出三个相同的IGMP general query报文分别发送至组播组内的后端服务器101、102、103。

而在图5中,前端负载均衡器100向组播组内组播发送一个IGMP general query报文,组播路由器122接收该IGMP general query报文,并复制出二个相同的IGMP general query报文分别发送至组播组内的后端服务器101和组播路由器123,组播路由器123复制两个相同的IGMP general query报文分别发送至组播组内的后端服务器102和后端服务器103。

值得注意的是,上述图4和图5所示仅为本发明实施例中组播路由器的两种可实现的连接方式,而本发明实施例并不受限于上述所示。

由于组播路由器可以复制IGMP general query报文并发送至组播组内的每一个后端服务器,因此可以减少占用前端负载均衡器100的上行带宽。

而在一些实施例中,前端负载均衡器100也可集成组播路由器的报文复制功能,直接将IGMP general query报文复制并发送至不同的后端服务器。

并且,在步骤4-6中,前端负载均衡器100向组播组组播发送IGMP general query报文并开始计时是为了在组播组存活时保证IGMP general query报文能够周期地发送(于下文详细介绍)。

并请继续参见图3,在步骤7中,前端负载均衡器100监听预设端口,该预设端口为指定的前端负载均衡器的非系统端口,如端口2000。

值得注意的是,每一个组播组都可以约定一个非系统端口,前端负载均衡器100和组播组内的后端服务器101、102、103均知晓该非系统端口,其通过预先约定来实现,不同的组播地址可对应约定不同预设端口,从而促进网络系统之间的兼容。

在步骤8中,假设组播组内的后端服务器101最先接收到IGMP general query报文(假设后端服务器101与前端负载均衡器100之间数据传输时间最短),基于IGMP协议本身规定,后端服务器101需响应IGMP general query报文向组播组组播发送一个IGMP membership response报文(其数据格式如图2所示,与IGMP general query报文相比,在IGMP报文格式的报文头版本号字段写入0x16(0x16表示组播报文的类型为IGMP membership response报报文,其为组播协议规定,且组播地址字段为224.0.1.1)。经组播路由器(如上图4或5所示)复制并发送至组播组内的前端负载均衡器100、后端服务器102以及后端服务器103。

后端服务器102以及后端服务器103在接收到前端负载均衡器100向组播组内组播发送的IGMP general query报文之后,同样需响应IGMP general query报文向组播组组播发送一个IGMP membership response报文。但是后端服务器102以及后端服务器103在此时进一步接收到后端服务器101向组播组组播发送的IGMP membership response报文,基于IGMP协议,后端服务器102以及后端服务器103会抑制向组播组组播发送IGMP membership response报文,因此后端服务器102以及后端服务器103在向组播组内组播发送IGMP membership response报文之前若接收到组播组内另一后端服务器101向组播组组播发送的IGMP membership response报文,则取消向组播组内组播发送IGMP membership response报文。

步骤8至10是基于IGMP协议实现IGMP general query报文的回应,后端服务器101通过组播发送IGMP membership response报文至组播组,可使得前端负载均衡器100获知该组播组224.0.1.1内至少还有一个后端服务器101,获知该组播组还存活(即有效),从而可继续定期向该组播组发送IGMP general query报文。

具体地,前端负载均衡器100根据IGMP membership response报文确认组播组有效,在确认组播组有效之后,在计时值(步骤4-6中开始计时)超过预定周期后继续向组播组内的后端服务器组播发送IGMP general query报文(见下文的步骤18-19)。

在一些实施例中,当前端负载均衡器100没有接收到IGMP membership response报文时,说明组播组内所有后端服务器均离开组播组,前端负载均衡器100确认组播组失效,则在计时值超过预定周期后停止继续向组播组内的后端服务器组播发送IGMP general query报文。

在步骤11中,后端服务器101在发出步骤8所述的IGMP membership response报文之后,向前端负载均衡器100的预设端口2000发送宣告报文1,其中宣告报文1的目的地址字段包括前端负载均衡器100的单播地址192.168.1.100,目的端口字段包括预设端口2000,源地址字段包括后端服务器101的单播地址192.168.1.101。

举例而言,宣告报文可以是UDP报文,该UDP报文封装在IP报文中,请参见图6,图6是根据本发明实施例的封装有UDP报文的IP报文的数据格式示意图。如图6所示,封装于IP报文的UDP报文包括源地址字段、目的地址字段、源端口字段、目的端口字段。

在本发明实施例中,后端服务器101发出的UDP报文(即宣告报文1)的源地址字段写入后端服务器101的单播地址192.168.1.101,目的地址字段写入前端负载均衡器100的单播地址192.168.1.100,目的端口字段写入预设端口2000。

值得注意的是,由于前端负载均衡器100仅需根据后端服务器101的单播地址192.168.1.101即可对其进行注册,而无需知道后端服务器101的源端口,因此后端服务器101发出的UDP报文的源端口字段可任意设定一非系统端口,本发明实施例对其不作限制。

由于UDP报文不属于连接型协议,无需进行建链动作,因而具有资源消耗小,处理速度快的优点。

可选地,宣告报文也可以用TCP报文来实现,而TCP报文通过三次握手建立连接,虽较UDP报文需时较多,但更为安全可靠。

在步骤12中,前端负载均衡器100在预设端口2000接收到宣告报文1,解析宣告报文1,从宣告报文1的源地址字段获得后端服务器101的单播地址192.168.1.101,将单播地址192.168.1.101记录在可用服务器列表40中,并设置一与单播地址192.168.1.101对应的心跳计时器1,控制心跳计时器1开始计时。

在步骤13中,后端服务器102在接收到步骤9所述的IGMP membership response报文之后,向前端负载均衡器100的预设端口2000发送宣告报文2,其中宣告报文2的目的地址字段包括前端负载均衡器100的单播地址192.168.1.100,目的端口字段包括预设端口2000,源地址字段包括后端服务器102的单播地址192.168.1.102。

在步骤14中,前端负载均衡器100在预设端口2000接收到宣告报文2,解析宣告报文2,从宣告报文2的源地址字段获得后端服务器102的单播地址192.168.1.102,将单播地址192.168.1.102记录在可用服务器列表40中,并设置一与单播地址192.168.1.102对应的心跳计时器2,控制心跳计时器2开始计时。

在步骤15中,后端服务器102在接收到步骤10所述的IGMP membership response报文之后,向前端负载均衡器100的预设端口2000发送宣告报文3,其中宣告报文3的目的地址字段包括前端负载均衡器100的单播地址192.168.1.100,目的端口字段包括预设端口2000,源地址字段包括后端服务器103的单播地址192.168.1.103。

在步骤16中,前端负载均衡器100在预设端口2000接收到宣告报文3,解析宣告报文3,从宣告报文3的源地址字段获得后端服务器103的单播地址192.168.1.103,将单播地址192.168.1.103记录在可用服务器列表40中,并设置一与单播地址192.168.1.102对应的心跳计时器3,控制心跳计时器3开始计时。

此时的可用服务器列表40如图7所示,其中图7示出心跳计时器与可用服务列表中注册的单播地址之间的对应关系。

于此,前端负载均衡器100自动获取到后端服务器101、102、103的单播地址并将其加入可用服务器列表40,从而完成注册。故在本发明实施例中,后端服务器101、102、103在本端通过修改自身组播地址来加入前端负载均衡器100所在组播组即可完成注册,在前端负载均衡器100上全程无需手动进行配置,可有效提高前端负载均衡器100的管理便利性。

在步骤17中,假设后端服务器102需要在前端服务器100中取消注册,此时只需在后端服务器102通过手动或脚本的配置方式清除后端服务器102的组播地址224.0.1.1(在一些实施例中,也可以配置为与组播地址224.0.1.1不同的其他组播地址),从而退出组播组224.0.1.1。

在步骤18和19中,前端负载均衡器100向组播组组播发送IGMP general query报文,其中前端负载均衡器100在该IGMP general query报文的32位组播地址字段写入了前端负载均衡器100的组播地址224.0.1.1,由于后端服务器101和103的组播地址224.0.1.1与前端负载均衡器100一致,因此后端服务器101和103分别接收到IGMP general query报文,而后端服务器102因清除了组播地址,从而退出组播组224.0.1.1,因此接收不到IGMP general query报文。

于此假设后端服务器103最先接收到IGMP general query报文,于是在步骤20中,后端服务器103响应IGMP general query报文向组播组内组播发送IGMP membership response报文,而后端服务器101在步骤21接收到后端服务器103组播发送的IGMP membership response报文之后,抑制向组播组组播发送IGMP membership response报文。

故前端负载均衡器100可在接收到后端服务器103组播发送的IGMP membership response报文之后得知所在组播组224.0.1.1存活。

在步骤22中,后端服务器103向组播组内组播发送IGMP membership response报文之后,发送宣告报文3至前端负载均衡器100的预设端口2000,其中宣告报文3可与步骤15中所示一致。

在步骤23中,前端负载均衡器100在预设端口2000接收到宣告报文3,解析宣告报文3,从宣告报文3的源地址字段获得后端服务器103的单播地址192.168.1.103,判断单播地址192.168.1.103是否记录在可用服务器列表40中,而由于在步骤16中单播地址192.168.1.103已记录在可用服务器列表40,因此前端负载均衡器100可判断到单播地址192.168.1.103已经记录在可用服务器列表40中,此时前端负载均衡器100控制心跳计时器3重新计时。

在步骤24中,后端服务器101接收到后端服务器103向组播组内组播发送的IGMP membership response报文之后,发送宣告报文1至前端负载均衡器100的预设端口2000,宣告报文1可与步骤11中所示一致。

在步骤25中,前端负载均衡器100在预设端口2000接收到宣告报文1,解析宣告报文1,从宣告报文1的源地址字段获得后端服务器101的单播地址192.168.1.101,判断单播地址192.168.1.101是否记录在可用服务器列表40中,而由于在步骤12中单播地址192.168.1.101已记录在可用服务器列表40,因此前端负载均衡器100可判断到单播地址192.168.1.101已经记录在可用服务器列表40中,此时此前端负载均衡器100控制心跳计时器1重新计时。

在步骤26中,前端负载均衡器100判断心跳计时器1、心跳计时器2、心跳计时器3的计时时间是否超出预定时间段,由于心跳计时器2并没有清零来重新计时,因此心跳计时器2被判断为超时。

于此,值得注意的是,在本发明实施例中,前端负载均衡器100是周期地向组播组内组播发送IGMP general query报文,在步骤4至步骤18之间为一个预定周期(参见步骤8至10),该预定周期设置为比上述的预定时间段长,因此,在一个预定周期内,没有重新计时的心跳计时器必然会超出预定时间段。

在步骤26中,更会累计心跳计时器2的超时次数,当多个周期内心跳计时器2的超时次数累计到超出预定数值时,即可判断到心跳计时器2对应的后端服务器102是退出该组播组,前端负载均衡器100将心跳计时器2对应的单播地址192.168.1.102从可用服务器列表40中移除。

举例而言,预定时间段可以是2秒,周期是1秒,超时次数是10。

在本实施例中,为超时次数设定预定数值的原因在于:若后端服务器102并没有清除组播网络地址,而是保持留在组播组224.0.1.1中,但是由于网络不稳定,前端负载均衡器100并没有接收到某几个周期中由后端服务器102发出宣告报文2,但若就此判定要注销后端服务器102则会产生误判的风险。因此于此对超时次数设定一预定数值,在超出预定数值时再注销后端服务器102,从而防止误判的产生。

当然,在网络完全可靠的情况下,也可以将超时次数设置为1。

综上,通过以上方式,本发明实施例揭示的注册方法还可以定期监控已经注册的后端服务器的实时状态,自动将退出组播组的后端服务器进行注销,因此在后端服务器的数量要进行动态的扩容或缩容时,无需手动配置前端负载均衡器100,故可进一步提升管理的便利性。

请参见图8,图8是根据本发明实施例的前端负载均衡器100的装置结构示意图,如图8所示,前端负载均衡器100包括:

组播地址设置模块201,用于设置与组播组内的后端服务器相同的组播地址;

组播查询发送模块202,用于向组播组内的后端服务器组播发送IGMP general query报文,其中IGMP general query报文的组播地址字段携带前端负载均衡器100的单播地址;

单播接收模块203,用于在预设端口监听组播组内所有后端服务器响应送IGMP general query报文分别单播发送的宣告报文,其中宣告报文的目的地址字段包括前端负载均衡器100的单播地址,目的端口包括预设端口,源地址字段包括发送宣告报文的后端服务器的单播地址,预设端口为指定的前端负载均衡器100的非系统端口;

报文解析模块204,用于解析宣告报文以获取源地址字段携带的后端服务器的单播地址;

注册模块205,在源地址字段携带的后端服务器的单播地址没有记录在可用服务器列表40中时,将源地址字段携带的后端服务器的单播地址记录在可用服务器列表40。

可选地,前端负载均衡器100还包括心跳计时器和计时器设置模块206,计时器设置模块206,用于为可用服务器列表40中记录的每一所述单播地址均对应设置一心跳计时器,并为源地址字段携带的后端服务器的单播地址设置心跳计时器并控制心跳计时器开始计时。

可选地,注册模块205还用于:

在判断到源地址字段携带的后端服务器的单播地址记录在可用服务器列表40中时,控制源地址字段携带的后端服务器的单播地址对应的心跳计时器重新计时。

可选地,计时器设置模块206还用于:

在可用服务器列表40中记录的单播地址对应的心跳计时器的计时值超出预定时间段时,控制心跳计时器重新计时,并累计心跳计时器的超时次数,在超时次数超出预定次数时,将与心跳计时器对应的单播地址从可用服务器列表40中移除。

可选地,前端负载均衡器100还包括组播响应接收模块207,

组播查询发送模块202,还用于在向组播组内组播发送IGMP general query报文时开始计时;

组播响应接收模块207,用于接收组播组内最先接收到IGMP general query报文的后端服务器响应IGMP general query报文向组播组组播发送的IGMP membership response报文;

其中,在组播响应接收模块207接收到组播组内最先接收到IGMP general query报文的后端服务器响应IGMP general query报文向组播组组播发送的IGMP membership response报文时,组播查询发送模块202根据IGMP membership response报文确认组播组有效,且在计时值超过预定周期后继续向组播组内的后端服务器组播发送IGMP general query报文;在组播响应接收模块207没有接收到IGMP membership response报文时,组播查询发送模块202确认组播组失效,在计时值超过预定周期后停止继续向组播组内的后端服务器组播发送IGMP general query报文。

可选地,宣告报文为UDP报文。

请参见图9,图9是根据本发明实施例的后端服务器的装置结构示意图,如图9所示,后端服务器300可例如为图1所示的后端服务器101、102、103中的任一个,后端服务器300包括:

组播地址设置模块301,用于设置与前端负载均衡器相同的组播地址;

组播查询接收模块302,用于接收前端负载均衡器周期地向组播组内组播发送的IGMP general query报文,其中IGMP general query报文的组播地址字段携带前端负载均衡器的单播地址;

单播发送模块303,用于响应IGMP general query报文向前端负载均衡器单播发送宣告报文,其中宣告报文的目的地址字段包括前端负载均衡器的单播地址,目的端口包括预设端口,源地址字段包括后端服务器的单播地址,预设端口为组播组预先一致设定的非系统端口。

可选地,宣告报文为UDP报文。

可选地,后端服务器还包括组播响应发送模块304,组播响应发送模块304用于响应IGMP general query报文向组播组内组播发送IGMP membership response报文,且在组播响应发送模块303向组播组内组播发送IGMP membership response报文之前若组播查询接收模块302接收到组播组内另一后端服务器向组播组组播发送的IGMP membership response报文,则组播响应发送模块304取消向组播组内组播发送IGMP membership response报文。

请参见图10,图10是根据本发明实施例的前端负载均衡器的另一装置结构示意图。如图10所示,前端负载均衡器100包括存储器402、处理器401、网络接口403和总线404,存储器402、网络接口403、处理器401分别与总线404连接,存储器存储有程序指令和可用服务器列表40(如图7所示),可用服务器列表40用于记录注册成功的后端服务器的单播地址,处理器执行存储器中的程序指令以执行图3所示的前端负载均衡器100所执行的步骤。值得注意的是,发送与接收报文均通过处理执行存储器中的程序指令控制网络接口403来完成。

请参见图11,图11是根据本发明实施例的后端服务器的另一装置结构示意图,如图11所示,后端服务器300可以是图1所示的后端服务器101-103中的任一者,后端服务器300包括存储器502、处理器501、网络接口503和总线504,存储器502、网络接口503、处理器501分别与总线504连接,存储器502存储有程序指令,处理器501执行存储器502中的程序指令以执行图3所示的后端服务器101、102或103所执行的步骤。

需说明的是,以上描述的任意装置实施例都仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

所属领域的技术人员可以清楚地了解到,上述描述的系统、装置或单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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