一种基于SDN的负载均衡系统的制作方法

文档序号:14942908发布日期:2018-07-13 21:30阅读:170来源:国知局

本发明涉及网络技术领域,特别是涉及一种基于sdn的负载均衡系统。



背景技术:

负载均衡技术是sdn(软件定义网络)领域研究的重要课题。不断更新的硬件技术,如潮水般迅猛发展的软件技术,都对现有网络的承载能力有了更高的要求。在海量信息给网络带来巨大压力的同时,人们越来越关注信息获取的速度,这就使系统对信息处理能力要求越来越高。目前sdn负载均衡技术主要分为硬件负载均衡技术和软件负载均衡技术。硬件负载均衡技术能很好地处理负载,但是其成本太高。软件负载均衡技术主要有两种解决方案:服务器负载均衡技术和链路负载均衡技术。

方案一:服务器负载均衡技术。通过实时监控网络中服务器的负载信息,从负载因子中选取n个参考值(如cpu、内存、响应时间等),将这些负载参考值作为服务器负载状况的依据,通过设定的公式计算出所有服务器的负载状况,然后将请求转发给负载小的服务器处理。但是此方案只能解决网络中服务器的负载均衡,对于整个网络效果不明显。

方案二:链路负载均衡技术。链路负载均衡是通过使用最短路径算法从网络中选取一条负载最小,时间最短的网络路径作为最优路径。但是最短路径的选择与算法的优劣有很大的关系,并且不能很好的解决整个网络的负载均衡。



技术实现要素:

本发明所要解决的技术问题是提供一种基于sdn的负载均衡系统,实现可靠地高性能的负载均衡。

本发明解决其技术问题所采用的技术方案是:提供一种基于sdn的负载均衡系统,包括分层的网络构架,每层网络构架中设置有多个控制器,同层网络的控制器处于相同的地位,每个控制器即是超级控制器,又是普通控制器;所述控制器包括:信息采集模块,用于采集网络相关信息;信息存储模块,用于将采集到的网络相关信息进行保存,以及存储控制器和服务器的信息;信息决策模块,用于实现链路的负载均衡、服务器负载均衡和控制器负载均衡。

所述信息采集模块包括采集控制器信息模块、采集服务器信息模块、采集链路信息模块和采集网络拓扑模块;所述采集控制器信息模块用于采集同一网络层上的控制器的负载状况;所述采集服务器信息模块用于采集同层网络下的服务器的负载状况;所述采集链路信息模块用于采集同层网络下的各条网络的带宽使用信息;所述采集网络拓扑模块用于采集同层网络下的拓扑结构信息。

所述信息决策模块包括链路决策模块、服务器决策模块和控制器决策模块;所述链路决策模块根据信息存储模块中存储的信息利用最优路径算法计算出一条网络最优路径,实现链路的负载均衡;所述服务器决策模块根据信息存储模块中存储的服务器信息计算出服务器负载状况低的服务器进行信息处理,实现服务器负载均衡;所述控制器决策模块在某个控制器的负载超过了设定的阈值时,根据信息存储模块中存储的同层网络中的控制器的负载状况选择一个控制器负载低的控制器,将过载的请求信息分配给负载低的控制器,实现控制器负载均衡。

所述链路决策模块将所述信息存储模块存储的链路带宽信息与设定的带宽使用阈值比较,当带宽信息超过带宽使用阈值时通过计算出每条链路的权值,再通过dijkstra算法找出链路的最优路径,其中,w为每条链路的权值、∑bit(e)代表单位时间内的链路上的字节数、bandwidth(e)为存储的链路带宽信息。

所述服务器决策模块根据信息存储模块中存储的服务器信息,通过c(i)=r1×p(i)+r2×m(i)+r3×t(i)获取静态负载信息,通过ls(i)=k1×lc(i)+k2×lm(i)+k3×ln(i)获取动态反馈负载信息,将静态负载信息作为静态影响因子,将动态反馈负载信息作为动态影响因子,根据l(i)=ls(i)/c(i)得到服务器的综合负载,并选择一个综合负载最低的服务器响应请求信息,其中,c(i)为第i台服务器带负载的能力,p(i)为第i台服务器含有的cpu的个数,m(i)为第i台服务器内存的大小,t(i)为第i台服务器处理单个数据请求的响应时间,ls(i)为第i台服务器的动态负载值,lc(i)表示第i台服务器的cpu使用率,lm(i)表示第i台服务器的内存使用率,ln(i)为第i台服务器的连接请求数占所有请求数目的比值,r1、r2、r3、k1、k2、k3为权值,且r1+r2+r3=1,k1+k2+k3=1。

所述控制器决策模块通过cl(i)=w1×n(i)+w2×r(i)计算控制器的负载状况,其中,cl(i)表示第i个控制器的负载状况,n(i)表示控制器管理的流表数量,r(i)表示控制器发送消息给交换机的信息往返时间,w1、w2为权值,且w1+w2=1。

有益效果

由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明可以将链路负载均衡,服务器负载均衡以及控制器的负载均衡结合起来,实现整个网络的负载均衡。本发明采用分层的网络结构,每层的控制器只需要管理本层的网络,不需要知道下一层的网络结构,大大降低的控制器的工作量。本发明的控制器同时具有普通控制器和超级控制器的功能,不会出现主控制器故障导致整个网络失去控制器负载均衡的功能。

附图说明

图1是本发明提出的控制器结构框图;

图2是本发明提出的多层网络拓扑示意图。

具体实施方式

下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。

本发明的实施方式涉及一种基于sdn的负载均衡系统,包括分层的网络构架,每层网络构架中设置有多个控制器,同层网络的控制器处于相同的地位,每个控制器即是超级控制器,又是普通控制器。

如图1所示,所述控制器包括信息采集模块、信息存储模块、信息决策模块,其中,信息采集模块、信息存储模块、信息决策模块都运行在控制器上。

所述信息采集模块包括采集同一网络层上的控制器的负载状况的采集控制器信息模块,采集同层网络下的服务器负载状况的采集服务器信息模块,采集同层网络下的各条网络的带宽使用信息的采集链路信息模块,采集本层网络下的拓扑结构信息的采集网络拓扑模块。

所述信息存储模块主要用于存储信息采集模块采集回来的四部分信息进行存储,对于大型的网络这里需要用到mysql数据库对信息进行存储。

所述信息决策模块包括:链路决策模块,通过该部分功能利用信息存储模块中存储的信息,利用最优路径算法计算出一条网络最优路径,实现链路的负载均衡。服务器决策模块,通过该部分功能从信息存储模块中计算出服务器负载状况低的服务器进行信息处理,实现负载均衡。控制器决策模块,预先给控制器设定一个阈值,当某个控制器的负载超过了设定的阈值时,该部分功能利用信息存储模块中存储的同层网络中的控制器的负载状况,选择一个控制器负载低的控制器,将过载的请求信息分配给负载低的控制器。

所述信息采集模块在控制器运行后会定时的去调用采集控制器信息模块、采集服务器信息模块、采集链路信息模块和采集网络拓扑模块去采集信息,采集后的信息会实时的存储在信息存储模块中,同时会将信息存储模块中原有的信息刷新掉,更新成最新的信息。

所述信息存储模块会在数据库中将采集控制器信息模块、采集服务器信息模块、采集链路信息模块和采集网络拓扑模块采集的信息存储的关系型数据库mysql中,用于信息决策模块进行处理信息。

所述信息决策模块中的服务器决策模块会定时从信息存储模块中获取采集服务器信息模块采集的信息,得到最小负载服务器,链路决策模块会从信息存储模块中获取采集链路信息模块采集的信息,得到最优路径,通过服务器决策模块和链路决策模块的结果,控制器可以实现链路负载均衡和服务器负载均衡。控制器决策模块会定时从信息存储模块中获取采集控制器信息模块采集的信息,选择最小负载控制器。

下面通过一个多层的网络拓扑图来说明整个网络系统的工作状况进行介绍。

如图2所示,在这个多层网络中,每一层交换机代表一层网络,每层的控制器只负责本层网络的拓扑。当控制器连接到网络之后,每层的控制器开始定时的采集,信息采集模块会将采集的本层网络中的链路的带宽情况进行采集,我们用e代表一条链路,用bandwidth(e)代表链路的带宽值。采集本层网络中的服务器的信息(包括cpu、内存、响应时间等)。采集本层网络中的所有控制器的负载使用情况(包括流量表条目数和消息往返时间)。采集本层网络的拓扑结构图。

信息存储模块会先清除掉数据库里存储的上一次采集的数据信息,然后将采集模块采集的信息入库。信息入库完成后,信息存储模块会立即通知信息决策模块进行信息决策。

信息决策模块获取信息存储模块存储的链路的带宽bandwidth(e)信息后,会与设定的带宽使用阈值(ct1)进行比较,当超过该阈值之后会通过公式(1)计算出每条链路的权值然后通过dijkstra算法找出链路的最优路径。

其中,∑bit(e)代表单位时间内的链路上的字节数。

信息决策模块获取存储模块的服务器的信息(包括cpu、内存、响应时间等),通过服务器负载均衡算法获取静态负载信息和动态反馈负载信息,分别作为静态影响因子和动态影响因子。

(1)静态负载信息

由于影响服务器性能的标准主要是cpu个数,内存大小,服务器对数据的请求的响应时间。假设第i台服务器的带负载能力用c(i)来表示,其中p(i)为第i台服务器含有的cpu的个数,m(i)为第i台服务器内存的大小,t(i)为第i台服务器处理单个数据请求的响应时间,,r1、r2、r3为权值,且r1+r2+r3=1,则

c(i)=r1×p(i)+r2×m(i)+r3×t(i)

(2)动态反馈负载信息

主要是采集每台服务器的内存使用率和cpu使用率,并统计每台服务器的连接请求数。lc(i)表示第i台服务器的cpu使用率,lm(i)表示第i台的内存使用率,ln(i)为第i台服务器的连接请求数占所有请求数目的比值,ls(i)为计算得出的第i台服务器的动态负载值,k1、k2、k3为权值,且k1+k2+k3=1。

ls(i)=k1×lc(i)+k2×lm(i)+k3×ln(i)

(3)综合负载的计算

第i台服务器的综合负载l(i)的计算方法如下:

l(i)=ls(i)/c(i)

ls(i)为当前系统各项资源的占用状况,即服务器的动态反馈负载信息,c(i)为当前系统的最大处理能力,即服务器的静态负载信息。通过l(i)选择一个负载最低的服务器响应请求信息。

信息决策模块的控制器决策模块会让每个控制器会收集自己的信息(包括流量表条目数和往返时间),用n(i)表示控制器管理的流表数量,数量越大控制器的负载越大,用r(i)表示控制器发送消息给交换机的信息往返时间,时间越长说明控制器负载越大。利用公式:

cl(i)=w1×n(i)+w2×r(i)

cl(i)表示第i个控制器的负载状况,w1、w2为权值,且w1+w2=1。当控制器的负载超过了设定的阈值ct2时,此控制器就会转变成超级控制器,决策模块会从数据库中取出其他控制器的信息计算出负载状况,选择一个负载小的控制器,进行负载迁移,实现控制器均衡。

不难发现,本发明可以将链路负载均衡、服务器负载均衡以及控制器负载均衡结合起来,实现整个网络的负载均衡。本发明采用分层的网络结构,每层的控制器只需要管理本层的网络,不需要知道下一层的网络结构,大大降低的控制器的工作量。本发明的控制器同时具有普通控制器和超级控制器的功能,不会出现主控制器故障导致整个网络失去控制器负载均衡的功能。

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