发明内容
本发明实施例提供了一种负载均衡的方法、设备及系统,用以降低了流过负载均衡设备的信息流量,从而提高了负载均衡的用户体验。
本发明实施例提供了一种负载均衡的方法,包括:
健康检测HC服务器获取客户端发送的地址解析协议ARP请求;
所述HC服务器根据各服务器的负载状态通过预设的负载均衡算法计算 得到服务器集群中负载小于预设门限值的第一服务器,并获取所述第一服务器的介质访问控制MAC地址;
所述HC服务器向所述客户端发送ARP应答信息,所述ARP应答信息中包括所述第一服务器的MAC地址;
其中,所述HC服务器中预先存储了服务器集群中的所有服务器的MAC地址;
所述客户端和所述服务器集群通过交换机进行数据的转发,所述HC服务器与所述交换机连接,所述HC服务器不处理所述客户端发送的服务请求的数据。
本发明实施例还提供了一种负载均衡的设备,包括:
地址解析协议ARP获取模块,用于获取客户端发送的ARP请求;
均衡处理模块,用于根据各服务器的负载状态通过预设的负载均衡算法计算得到服务器集群中负载小于预设门限值的第一服务器,并获取所述第一服务器的介质访问控制MAC地址;
发送模块,用于向所述客户端发送ARP应答信息,所述ARP应答信息中包括所述第一服务器的MAC地址;
其中,所述负载均衡的设备中预先存储了服务器集群中的所有服务器的MAC地址;
所述客户端和所述服务器集群通过交换机进行数据的转发,所述负载均衡的设备与所述交换机连接,所述负载均衡的设备不处理所述客户端发送的服务请求的数据。
本发明实施例还提供了一种负载均衡的系统,包括上述的负载均衡设备,以及由至少两台服务器组成的服务器集群。
本发明实施例通过获取客户端发送的ARP请求,并采用负载均衡算法为客户端选择负载较小的服务器,实现了服务器的负载均衡,通过处理ARP请求,降低了流过负载均衡设备的信息流量,减少了出现瓶颈的可能性以及响应时间,提高了服务请求处理的速度,进而提高了负载均衡的用户体验。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
参见图1a为本发明第一实施例提供的负载均衡的方法流程图,在客户端向服务器集群进行服务请求时,通过获取用户发送的地址解析协议(AddressResolution Protocol,以下简称ARP)请求,采用ARP欺骗的方式,向用户发送负载小于预设门限值的服务器的MAC地址,使得客户端将服务请求发送到该负载较小的服务器,由此达到均衡服务器负载的目的。本实施例负载均衡的方法的执行主体可以为健康检测(Health Check,以下简称HC)服务器,方法包括以下步骤:
步骤11、获取客户端发送的ARP请求。
客户端在向服务器集群进行服务请求时,先发送ARP请求以获取为自身提供服务的服务器的MAC地址,然后根据该MAC地址向该服务器发送服务请求,由服务器进行相关的服务请求处理。
在本实施例中,通过设置一个HC设备,获取客户端发送的ARP请求。参见图1b为本实施例负载均衡方法的应用场景示意图,客户端和服务器集群通过交换机进行数据的转发,该HC设备与该交换机连接,在该HC设备中预先存储了服务器集群中的所有服务器的MAC地址,并且该服务器集群的 虚拟IP地址也配置到该HC设备的非物理端口上,其中,HC设备的非物理端口包括如软件端口或协议端口等非物理意义上的端口,将服务器集群的虚拟IP地址配置到该HC设备的非物理端口上,便于进行软件维护。
因此,当客户端向服务器集群进行服务请求时,由于发送的ARP请求使用的是该虚拟IP地址,该ARP请求经过交换机后会转发到该HC设备上。
该HC设备仅获取用户的ARP请求,并不处理客户端发送的服务请求的数据。现有技术中的负载均衡器不仅处理客户端的ARP请求,同时客户端的服务请求数据也流经负载均衡器。因此,对于相同的配置,本实施例中的HC设备在单位时间内能够比现有技术中的负载均衡器处理更多的服务请求。
步骤12、根据各服务器的负载状态通过预设的负载均衡算法计算得到服务器集群中负载小于预设门限值的第一服务器,并获取该第一服务器的MAC地址。
在本实施例中,该HC设备中预先存储了服务器集群中的所有服务器的MAC地址,并可以检测各服务器的负载状态,如服务器正在处理的服务请求数量等。在接收到客户端发送的ARP请求后,获知该客户端需要向服务器集群请求服务。该HC设备会根据预设的负载均衡算法,计算服务器集群中负载小于预设门限值的第一服务器,其中,预设的门限值可以根据具体的应用需求进行预先设置,当HC设备计算出多个服务器的负载均小于该门限值时,可以选择其中负载最小的服务器,也可以采用随机选择的方式选择出其中的一个服务器,并获取该服务器的MAC地址。
HC设备计算服务器集群中负载小于预设门限值的第一服务器的方法可以如下:HC设备定期检测获取各服务器的负载状态数据,如以3秒为间隔检测获取服务器的负载状态数据,负载状态数据可以包括客户端请求量,占用的网络带宽等数据。根据服务器的各项负载状态数据,采用溢出队列算法计算得到服务器集群中负载小于预设门限值的所述第一服务器。
采用的溢出队列算法进行计算的方法如下:预先分配每项负载状态数据的权值,使用加权计算的方式得到各服务器的负载状态的加权值,将该加权 值作为衡量服务器负载的依据,并可以预设一个门限值,从中选出负载小于预设门限值的服务器。其中,各项负载状态数据的权值可以根据具体的应用场景进行预先设置,如在客户端较多的网络中,需要重点考虑每个服务器上的客户端请求量,则可以将负载状态数据中客户端请求量的权值设置的较大;在对网络的数据传输质量要求较高的场景中,需要重点考虑服务器被占用的网络带宽,则可以将负载状态数据中占用的网络带宽的权值设置的较大。
步骤13、向该客户端发送ARP应答信息,该ARP应答信息中包括该第一服务器的MAC地址。
HC服务器向客户端返回ARP应答信息,在该ARP应答信息中附带第一服务器的MAC地址,客户端收到该ARP应答信息后,就可以根据该MAC地址,将服务请求发送到第一服务器上进行服务请求,由第一服务器处理客户端的服务请求。由于该第一服务器是采用了预设的负载均衡算法选择出来的负载小于预设门限值的服务器,因此就使得服务器集群的负载分流到负载较小的服务器上,实现了负载均衡。
通过上述方法可知,本实施例中,由于采用了HC设备截取ARP报文的方式进行负载均衡,相比现有技术中的负载均衡方案,减少了出现瓶颈的可能性以及响应时间。例如,现有技术中的负载均衡器由于需要同时处理ARP报文和服务请求数据,其处理速度的上限是1000次/秒的服务请求,而本实施例中的HC设备由于只处理ARP请求,其能处理的客户端服务请求会远大于1000次/秒,因此减少了出现瓶颈的可能性以及响应时间,提高了系统的负载均衡用户体验。
需要说明的是,本实施例中,HC设备通过截取客户端的ARP报文进行负载均衡,因此客户端与服务器集群之间应满足ARP报文可互达的条件,为更好的进行负载均衡,可以将客户端和服务器集群中的服务器配置在同一个网段中,以使得HC设备能够更快捷的截获ARP报文,更好的进行负载均衡。
本实施例通过获取客户端发送的ARP请求,并采用负载均衡算法为客户端选择负载较小的服务器,实现了服务器的负载均衡,通过处理ARP请求, 提高了服务请求处理的速度,减少了出现瓶颈的可能性以及响应时间,提高了负载均衡的用户体验,同时方案简单易于实现,具有很高的实用性。
参见图2为本发明第二实施例提供的负载均衡的设备的结构示意图,该负载均衡设备可以为HC设备,服务器集群的虚拟IP地址配置在该负载均衡设备上;该负载均衡设备包括:ARP获取模块21、均衡处理模块22和发送模块23。
ARP获取模块21,用于获取客户端发送的ARP请求;
均衡处理模块22,用于根据各服务器的负载状态通过预设的负载均衡算法计算得到服务器集群中负载小于预设门限值的第一服务器,并获取该第一服务器的MAC地址;
需要说明的是,当计算出多个服务器的负载均小于该门限值时,可以选择其中负载最小的服务器,也可以采用随机选择的方式选择出其中的一个服务器。
发送模块23,用于向该客户端发送ARP应答信息,该ARP应答信息中包括该第一服务器的MAC地址。
客户端收到该ARP应答信息后,就可以根据ARP应答信息中的MAC地址,将服务请求发送到第一服务器上进行服务请求。由于该第一服务器是采用了预设的负载均衡算法选择出来的负载小于预设门限值的服务器,因此就使得服务器集群的负载分流到负载小于预设门限值的服务器上,实现了负载均衡。
在本实施例中,负载均衡设备先要获取服务器集群中各服务器的负载状态,再根据预设的负载均衡算法进行负载均衡处理,预设的负载均衡算法可以为加权计算的方法。
该均衡处理模块22,包括:
检测单元22a,用于检测获取服务器集群中的各服务器的各项负载状态的数据;
均衡单元22b,用于根据服务器的各项负载状态数据,采用溢出队列算 法计算得到服务器集群中负载小于预设门限值的所述第一服务器。
其中,溢出队列算法的基本思想是为各负载状态数据分配权值,采用加权计算的方式计算负载,即均衡单元22b,用于根据服务器的各项负载状态数据,以及预设的各项负载状态数据的权值,通过加权计算的方式得到各服务器的负载,并选出负载小于预设门限值的第一服务器。
本实施例的负载均衡设备通过获取客户端发送的ARP请求,并采用负载均衡算法为客户端选择负载较小的服务器,实现了服务器的负载均衡,通过处理ARP请求,提高了服务请求处理的速度,减少了负载均衡设备出现瓶颈的可能性,提高了负载均衡的用户体验。
参见图3为本发明第三实施例提供的负载均衡的系统的结构示意图,该负载均衡系统包括:负载均衡设备31,以及由至少两台服务器32组成的服务器集群,该服务器集群的虚拟IP地址配置在负载均衡设备31上;
该负载均衡设备31,用于获取客户端发送的ARP请求;根据各服务器32的负载状态通过预设的负载均衡算法计算得到服务器集群中负载小于预设门限值的第一服务器,并获取该第一服务器的MAC地址;向该客户端发送ARP应答信息,该ARP应答信息中包括该第一服务器的MAC地址。
需要说明的是,当计算出多个服务器的负载均小于该门限值时,可以选择其中负载最小的服务器,也可以采用随机选择的方式选择出其中的一个服务器。
客户端收到该ARP应答信息后,就可以根据ARP应答信息中的MAC地址,将服务请求发送到第一服务器上进行服务请求。由于该第一服务器是采用了预设的负载均衡算法选择出来的负载小于预设门限值的服务器,因此就使得服务器集群的负载分流到负载小于预设门限值的服务器上,实现了负载均衡。
在本实施例中,负载均衡设备先要获取服务器集群中各服务器32的负载状态,再根据预设的负载均衡算法进行负载均衡处理,预设的负载均衡算法可以为加权计算的方法。
此时,该负载均衡设备31,用于获取服务器集群中的各服务器32的各项负载状态的数据;根据服务器32的各项负载状态数据,以及预设的各项负载状态数据的权值,采用加权计算的方式得到各服务器32的负载,并选出负载小于预设门限值的第一服务器。然后向该客户端发送ARP应答信息,在该ARP应答信息中附带第一服务器的MAC地址。
在本实施例中,为提高负载均衡的用户体验,可以将客户端与服务器集群中的服务器32配置在同一网段中。
本实施例通过获取客户端发送的ARP请求,并采用负载均衡算法为客户端选择负载小于预设门限值的服务器,实现了服务器的负载均衡,由于负载均衡设备仅处理ARP请求,提高了服务请求处理的速度,减少了负载均衡设备出现瓶颈的可能性,提高了负载均衡的用户体验。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。