本发明涉及网络通信技术领域,尤其是一种多网口服务器集群的负载均衡调度系统及方法。
背景技术:
在网络链路中,通常存在一级网络设备和二级服务器之间跨交换机的情况。服务器是指后台的业务处理机,通常为真实的机架式、刀片式服务器,可以用一个mac地址或一个ip地址来表示。多个服务器组成一个服务器集群,集群的每个服务器可以有一个或多个网口。如何设计一种负载均衡调度系统,可以将报文负载均衡分发到集群中的各个服务器,且分发到同一台服务器的报文可以在该服务器多网口之间负荷分担,成为一个亟待解决的问题。
技术实现要素:
本发明所要解决的技术问题在于,提供一种多网口服务器集群的负载均衡调度系统及方法,既可以保证同一条流的报文同源同宿转发到同一台服务器,并且在每个服务器上,流量可以均衡分流到该服务器的多个网口,大大提高了负载均衡调度的均衡性和稳定性。
为解决上述技术问题,本发明提供一种多网口服务器集群的负载均衡调度系统,包括:父级哈希调度模块包括父级端口组:父级端口组的成员端口为子级端口组,负载均衡策略为五元组哈希,对集群里的服务器进行编号,每个服务器组id为[1~n],把每个服务器看作一个子级端口组,作为父级端口组成员;
子级轮询调度模块包括子级端口组:子级端口组的成员端口为物理网口,负载均衡策略为round-robin,把同一台服务器上的多个网口,作为子级端口组成员,加入到同一个端口组中,将分流到同一台服务器的报文轮流发送到各个网口上,实现轮询分流。
相应的,一种多网口服务器集群的负载均衡调度方法,包括如下步骤:
(1)链路侧流量输入一级网络设备,设备进行报文解析,提取五元组信息;
(2)一级网络设备根据负载均衡策略以及负载均衡算法,计算出哈希值,所述的负载均衡策略,是指对某个或某几个五元组信息进行运算,是按源ip哈希,或是按源ip和目的ip的组合进行哈希;
(3)根据服务器组号和哈希值,查找服务器组表,从对应的服务器组中选择一台服务器;服务器组表以“服务器编号id 哈希值idx”作为键值,“服务器的标识、mac或ip”作为表结果;
(4)在被选中的服务器上,读计数器,计数器的数值和端口总数进行取余操作,所得结果即为该服务器上对应的网口编号;
(5)把报文发送到被选中的服务器上的指定网口,并把对应的计数器加1,若计数器值大于该服务器上的网口总数,则计数器值置为1。
优选的,步骤(1)中,五元组信息为源ip、目的ip、源端口号、目的端口号和协议号。
本发明的有益效果为:既可以保证同一条流的报文同源同宿转发到同一台服务器,并且在每个服务器上,流量可以均衡分流到该服务器的多个网口,大大提高了负载均衡调度的均衡性和稳定性。
附图说明
图1为本发明的系统处理示意图。
具体实施方式
如图1所示,一种多网口服务器集群的负载均衡调度系统,包括:父级哈希调度模块包括父级端口组:父级端口组的成员端口为子级端口组,负载均衡策略为五元组哈希。对集群里的服务器进行编号,每个服务器组id为[1~n]。把每个服务器看作一个子级端口组,作为父级端口组成员。
例如:创建一个父级端口组1,成员为子级端口组1、子级端口组2和子级端口组3;
子级端口组1成员为服务器1的多个物理网口;
子级端口组2成员为服务器2的多个物理网口;
子级端口组3成员为服务器3的多个物理网口;
port-group1{sub-port-group1;sub-port-group2;sub-port-group3}
sub-port-group1{port1;port2;port3;port4}
port1;port2;port3;port4为服务器1上的4个网口;
分流到父级端口组1的流量,根据哈希策略,哈希到子级端口组。分流到子级端口组1的流量,在4个网口进行轮询。
子级轮询调度模块(多网口轮询计数)包括子级端口组:子级端口组的成员端口为物理网口,负载均衡策略为round-robin。把同一台服务器上的多个网口,作为子级端口组成员,加入到同一个端口组中,将分流到同一台服务器的报文轮流发送到各个网口上,实现轮询分流。
服务器网口信息和网口总数portsum,可以通过配置下发到网络处理器。
网络处理器芯片为每个服务器分配一个统计计数器,计数器最大值为该服务器的网口总数。计数器从1开始计数,计数到最大值后,计数器被重置为1,周而复始。读统计计数器的值,将包逐个分流到各个端口。
例如:
第1个包分流到第1个端口;
第2个包分流到第2个端口;
第portsum个包分流到第portsum个端口;
第(portsum 1)个包分流到第1个端口;
以此类推。
父级哈希调度机制,按一定哈希算法,从服务器集群中选定一台服务器,可以保证同一条流的报文同源同宿分发到同一台服务器。
子级轮询调度机制,将分发到同一台服务器的报文,轮流分发到该服务器的多个网口,严格保证该服务器的多个网口负荷分担。
一种多网口服务器集群的负载均衡调度方法,包括如下步骤:
步骤s1:链路侧流量输入一级网络设备,设备进行报文解析,提取五元组信息(源ip、目的ip、源端口号、目的端口号、协议号);
步骤s2:一级网络设备根据负载均衡策略以及负载均衡算法,计算出哈希值,所述的负载均衡策略,是指对某个或某几个五元组信息进行运算,可以是按源ip哈希,或是按源ip和目的ip的组合进行哈希等等;
步骤s3:根据服务器组号和哈希值,查找服务器组表,从对应的服务器组中选择一台服务器;服务器组表以“服务器编号id 哈希值idx”作为键值,“服务器的标识、mac或ip”作为表结果;
步骤s4:在被选中的服务器上,读计数器。计数器的数值和端口总数进行取余操作,所得结果即为该服务器上对应的网口编号。如,计数器值为1对应的是网口1,计数器值为portsum对应的是网口portsum,计数器portsum 1对应的是网口1;
对应的网口编号:portid=count%portsum;
其中,count为计数器数值,portsum为要分流的服务器上的网口总数。
步骤s5:把报文发送到被选中的服务器上的指定网口,并把对应的计数器加1。若计数器值大于该服务器上的网口总数,则计数器值置为1。
本发明既可以保证同一用户的流量同源同宿转发到同一台服务器,又可以使流量在各服务器的网络接口负荷分担,大大提高了负载均衡调度的均衡性和稳定性。
1.一种多网口服务器集群的负载均衡调度系统,其特征在于,包括:
父级哈希调度模块包括父级端口组:父级端口组的成员端口为子级端口组,负载均衡策略为五元组哈希,对集群里的服务器进行编号,每个服务器组id为[1~n],把每个服务器看作一个子级端口组,作为父级端口组成员;
子级轮询调度模块包括子级端口组:子级端口组的成员端口为物理网口,负载均衡策略为round-robin,把同一台服务器上的多个网口,作为子级端口组成员,加入到同一个端口组中,将分流到同一台服务器的报文轮流发送到各个网口上,实现轮询分流。
2.一种多网口服务器集群的负载均衡调度方法,其特征在于,包括如下步骤:
(1)链路侧流量输入一级网络设备,设备进行报文解析,提取五元组信息;
(2)一级网络设备根据负载均衡策略以及负载均衡算法,计算出哈希值,所述的负载均衡策略,是指对某个或某几个五元组信息进行运算,是按源ip哈希,或是按源ip和目的ip的组合进行哈希;
(3)根据服务器组号和哈希值,查找服务器组表,从对应的服务器组中选择一台服务器;服务器组表以“服务器编号id 哈希值idx”作为键值,“服务器的标识、mac或ip”作为表结果;
(4)在被选中的服务器上,读计数器,计数器的数值和端口总数进行取余操作,所得结果即为该服务器上对应的网口编号;
(5)把报文发送到被选中的服务器上的指定网口,并把对应的计数器加1,若计数器值大于该服务器上的网口总数,则计数器值置为1。
3.如权利要求2所述的多网口服务器集群的负载均衡调度方法,其特征在于,步骤(1)中,五元组信息为源ip、目的ip、源端口号、目的端口号和协议号。
技术总结