本发明涉及一种基于sdn的负载均衡实现系统及方法,属于计算机数据处理领域。
背景技术:
负载均衡(loadbalance,简称lb)是一种服务器或网络设备的集群技术。负载均衡将特定的业务(网络服务、网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性。
例如:某系统每天有7000万笔的业务量,单台服务器满负荷也只能处理5000万笔业务,单台服务器根本无法处理这么大的业务量。此时可以再增加一台处理能力相同的服务器,将所有业务分摊到这两台服务器,让他们分别处理一部分,负载均衡技术正是解决了如何将业务分摊到两台甚至多台服务器。
目前实现负载均衡的方式主要通过全代理来实现,通过全代理实现的负载均衡,客户端要与全代理建立连接,代理再与后端服务器建立连接,需要建立两次连接,这极大的降低了负载均衡的性能。
如图1所示的全代理的负载均衡实现流程,具体如下:首先客户端和全代理(负载均衡全代理)建立tcp链接,将http请求发送至全代理,全代理对http请求进行解析,进行会话管理、访问控制等操作,之后根据负载均衡算法为该http请求分配一个后端服务器,并将处理后的http请求转发至该后端服务器,服务器在处理完成之后,将http响应报文发送给全代理,经由全代理将该响应报文返回给客户端。这样一次请求需要建立两次连接。
sdn:软件定义网络;
openflow:sdn控制平面与转发平面通信协议;
openflow交换机:支持openflow协议的软件交换机。
技术实现要素:
本发明的技术方案提供了一种基于sdn的负载均衡实现系统及方法,基于sdn技术的负载均衡实现了链路级的负载均衡,一次请求只需要建立一次连接,解决了现有技术的不足。
本发明的技术方案包括一种基于sdn的负载均衡实现系统,该系统包括终端、控制器、交换机及多个后端服务器,其中:终端,用于在达到负载均衡时,生成将终端的业务分配到后端服务器的报文,报文包括终端ip和虚拟ip地址,以及还包括用于业务处理的数据包;控制器,用于生成交换机可识别的流表,并将流表发送至所述交换机;交换机,用于接收所述终端发送的请求指令以及接收所述控制器发送的流表,根据流表预设的规则对虚拟ip地址进行修改,并将修改的数据包进行发送,以及接收所述后端服务器发送的数据包并进行ip地址的还原;后端服务器,用于接收所述交换机发送的数据包,以及执行对应的业务运算并生成相应数据包,其中数据包包括报文。
根据所述的基于sdn的负载均衡实现系统,其特征在于:所述终端进一步为用于执行业务处理的服务器,所述后端服务器用于分担业务负载调度的数据库。
根据所述的基于sdn的负载均衡实现系统,其中控制器还包括:流表规则定制模块,用于自定义流表规则,并将流表规则发送至所述交换机和服务器,所述流表规则用于对控制器的ip转换进行进行限定。
根据所述的基于sdn的负载均衡实现系统,其中交换机用于执行以下步骤:在对任意数据包执行ip转换时记录转换规则,并将转换标识同时记载于数据包和控制器中;当流表规则发生动态变化时,校验经过控制器的数据包是否存在历史转换标识,若存在则调用历史转换规则对数据包执行还原转换,若不存在历史转换标识,则使用新的转换对数据包执行转换。
根据所述的基于sdn的负载均衡实现系统,其中交换机还包括:当识别到经过的数据包不存在于终端时,将数据包发送至控制器进行存储或删除。
本发明的技术方案还包括一种基于sdn的负载均衡实现方法,其特征在于,该方法包括:在达到负载均衡时,生成将终端的业务分配到后端服务器的报文,报文包括终端ip和虚拟ip地址,以及还包括用于业务处理的数据包;生成交换机可识别的流表,并将流表发送至交换机;接收终端发送的请求指令以及接收控制器发送的流表,根据流表预设的规则对虚拟ip地址进行修改,并将修改的数据包进行发送,以及接收后端服务器发送的数据包并进行ip地址的还原;接收交换机发送的数据包,以及执行对应的业务运算并生成相应数据包,其中数据包包括报文。
本发明的有益效果为:实现了链路级的负载均衡,相比传统代理级的负载均衡;极大的提高了负载均衡的转发性能;动态修改流表规则,可实现网络的灵活定制。
附图说明
图1所示为根据本现有技术的全代理的负载均衡实现流程图;
图2所示为根据本发明实施方式的总体结构框图;
图3所示为根据本发明实施方式的交互图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。本发明的基于sdn的负载均衡实现系统及方法适用于服务器负载均衡的实现。
图2所示为根据本发明实施方式的总体结构框图。其中包括终端,交换机、控制器、多个服务器,其中交换机为openflow
与传统的负载均衡不同,基于openflow的负载均衡的转发最终是通过流表实现的。
首先控制器根据负载均衡的规则,生成openflow交换机可以识别的流表,并将流表派发给openflow交换机。
当openflow交换机在接到发给虚拟ip的数据包后,根据流表中设定的规则,将数据包中的目的ip修改为后端服务器的ip,然后进行转发。当在本地流表中查找不到时,则将数据包交由控制器处理或者丢弃。
后端服务器的响应报文通过openflow交换机时,交换机根据流表,将报文的源地址被还原为虚服务的vsip,再返回给客户端,完成整个负载调度过程。
图3所示为根据本发明实施方式的交互图。
其包括以下流程:
(1)终端用户请求数据包的发送,即业务请求,此时目的ip=虚拟ip地址,源ip=终端ip地址;
(2)交换机根据流表处理数据包,此时目的ip=(后端)服务器ip地址,源ip=终端ip地址;
(3)服务器对交换机的响应,根据流表处理数据包目的ip=终端ip,源ip=服务器ip地址;
(4)交换机对终端进行相应,其中目的ip=终端ip,源ip=虚拟ip地址。
从以上流程可以看出,客户端请求到达负载均衡时,并没有建立连接而只是修改了ip包中的目的地址,然后将ip包直接转发到对应的服务器,从而实现了链路级的负载均衡,一次请求只是建立了一次连接,这样极大的提高了负载均衡的转发性能。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。