基于SDN的云服务器负载均衡方法及装置转让专利

申请号 : CN201510882642.3

文献号 : CN105391797B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 沃天宇吴炳臻杨任宇马晴

申请人 : 北京航空航天大学

摘要 :

本发明提供一种基于SDN的云服务器负载均衡方法及装置,其中方法包括:获取云服务器集群中各服务器的状态信息,服务器的状态信息包括服务器的负载;根据各服务器的负载,确定云服务器集群的负载总和;判断云服务器集群的负载总和是否大于第一预设阈值;若大于第一预设阈值,则根据负载总和与第一预设阈值之差启动新的服务器;若不大于第一预设阈值,则判断负载总和是否小于第二预设阈值;若小于第二预设阈值,则根据负载总和与第二预设阈值之差关闭部分服务器。本发明提供的基于SDN的云服务器负载均衡方法及装置,能够实现云服务器的动态负载均衡,避免有大量数据访问时云服务器的处理速度变慢,提高了云服务器的处理效率。

权利要求 :

1.一种基于SDN的云服务器负载均衡方法,其特征在于,包括:获取云服务器集群中各服务器的状态信息,所述服务器的状态信息包括所述服务器的负载;

根据各服务器的负载,确定所述云服务器集群的负载总和;

判断所述云服务器集群的负载总和是否大于第一预设阈值;若大于第一预设阈值,则根据所述负载总和与所述第一预设阈值之差启动新的服务器;若不大于第一预设阈值,则判断所述负载总和是否小于第二预设阈值;若小于第二预设阈值,则根据所述负载总和与所述第二预设阈值之差关闭部分服务器;所述方法还包括:获取交换机的状态信息,所述交换机的状态信息包括所述交换机的负载;

判断所述交换机的负载是否大于第三预设阈值;若大于第三预设阈值,则根据所述交换机的负载与所述第三预设阈值之差启动新的服务器;若不大于第三预设阈值,则判断所述交换机的负载是否小于第四预设阈值;若小于第四预设阈值,则根据所述交换机的负载与所述第四预设阈值之差关闭部分服务器。

2.根据权利要求1所述的方法,其特征在于,所述交换机的状态信息还包括:所述交换机发往每个服务器的数据的流量;

相应的,在所述获取交换机的状态信息之后,还包括:

根据各服务器的处理能力以及所述交换机发往各服务器的流量,判断发往各服务器的流量是否均衡;

若不均衡,则对所述交换机的流表进行调整。

3.根据权利要求1所述的方法,其特征在于,所述交换机的负载为所述交换机发往所述云服务器集群中各服务器的数据的流量之和。

4.根据权利要求1-3任一项所述的方法,其特征在于,所述服务器的负载为所述服务器的内存和/或CPU的负载。

5.一种基于SDN的云服务器负载均衡装置,其特征在于,包括:获取模块,用于获取云服务器集群中各服务器的状态信息,所述服务器的状态信息包括所述服务器的负载;

确定模块,用于根据各服务器的负载,确定所述云服务器集群的负载总和;

判断模块,用于判断所述云服务器集群的负载总和是否大于第一预设阈值;若大于第一预设阈值,则根据所述负载总和与所述第一预设阈值之差启动新的服务器;若不大于第一预设阈值,则判断所述负载总和是否小于第二预设阈值;若小于第二预设阈值,则根据所述负载总和与所述第二预设阈值之差关闭部分服务器;所述判断模块还用于:获取交换机的状态信息,所述交换机的状态信息包括所述交换机的负载;

判断所述交换机的负载是否大于第三预设阈值;若大于第三预设阈值,则根据所述交换机的负载与所述第三预设阈值之差启动新的服务器;若不大于第三预设阈值,则判断所述交换机的负载是否小于第四预设阈值;若小于第四预设阈值,则根据所述交换机的负载与所述第四预设阈值之差关闭部分服务器。

6.根据权利要求5所述的装置,其特征在于,所述交换机的状态信息还包括:所述交换机发往每个服务器的数据的流量;

相应的,所述判断模块还用于:

在所述获取交换机的状态信息之后,根据各服务器的处理能力以及所述交换机发往各服务器的流量,判断发往各服务器的流量是否均衡;

若不均衡,则对所述交换机的流表进行调整。

7.根据权利要求5所述的装置,其特征在于,所述交换机的负载为所述交换机发往所述云服务器集群中各服务器的数据的流量之和。

8.根据权利要求5-7任一项所述的装置,其特征在于,所述服务器的负载为所述服务器的内存和/或CPU的负载。

说明书 :

基于SDN的云服务器负载均衡方法及装置

技术领域

[0001] 本发明涉及计算机技术,尤其涉及一种基于SDN的云服务器负载均衡方法及装置。

背景技术

[0002] SDN(Software Defined Network,软件定义网络)是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。
[0003] 基于SDN的云服务器利用虚拟机来代替物理机作为服务器为用户提供服务,可以满足资源的弹性伸缩需求,能够有效解决传统的物理租机存在的管理难度大、业务扩展性弱的缺陷。
[0004] 但是,当有大量数据访问云服务器时,云服务器的负载过大,导致云服务器处理速度变慢、处理效率低下。

发明内容

[0005] 本发明提供一种基于SDN的云服务器负载均衡方法及装置,用以解决现有技术中云服务器负载过大时处理速度变慢的技术问题。
[0006] 本发明提供一种基于SDN的云服务器负载均衡方法,包括:
[0007] 获取云服务器集群中各服务器的状态信息,所述服务器的状态信息包括所述服务器的负载;
[0008] 根据各服务器的负载,确定所述云服务器集群的负载总和;
[0009] 判断所述云服务器集群的负载总和是否大于第一预设阈值;若大于第一预设阈值,则根据所述负载总和与所述第一预设阈值之差启动新的服务器;若不大于第一预设阈值,则判断所述负载总和是否小于第二预设阈值;若小于第二预设阈值,则根据所述负载总和与所述第二预设阈值之差关闭部分服务器。
[0010] 进一步地,所述方法还包括:
[0011] 获取交换机的状态信息,所述交换机的状态信息包括所述交换机的负载;
[0012] 判断所述交换机的负载是否大于第三预设阈值;若大于第三预设阈值,则根据所述交换机的负载与所述第三预设阈值之差启动新的服务器;若不大于第三预设阈值,则判断所述交换机的负载是否小于第四预设阈值;若小于第四预设阈值,则根据所述交换机的负载与所述第四预设阈值之差关闭部分服务器。
[0013] 进一步地,所述交换机的状态信息还包括:所述交换机发往每个服务器的数据的流量;
[0014] 相应的,在所述获取交换机的状态信息之后,还包括:
[0015] 根据各服务器的处理能力以及所述交换机发往各服务器的流量,判断发往各服务器的流量是否均衡;
[0016] 若不均衡,则对所述交换机的流表进行调整。
[0017] 进一步地,所述交换机的负载为所述交换机发往所述云服务器集群中各服务器的数据的流量之和。
[0018] 进一步地,所述服务器的负载为所述服务器的内存和/或CPU的负载。
[0019] 本发明还提供一种基于SDN的云服务器负载均衡装置,包括:
[0020] 获取模块,用于获取云服务器集群中各服务器的状态信息,所述服务器的状态信息包括所述服务器的负载;
[0021] 确定模块,用于根据各服务器的负载,确定所述云服务器集群的负载总和;
[0022] 判断模块,用于判断所述云服务器集群的负载总和是否大于第一预设阈值;若大于第一预设阈值,则根据所述负载总和与所述第一预设阈值之差启动新的服务器;若不大于第一预设阈值,则判断所述负载总和是否小于第二预设阈值;若小于第二预设阈值,则根据所述负载总和与所述第二预设阈值之差关闭部分服务器。
[0023] 进一步地,所述判断模块还用于:
[0024] 获取交换机的状态信息,所述交换机的状态信息包括所述交换机的负载;
[0025] 判断所述交换机的负载是否大于第三预设阈值;若大于第三预设阈值,则根据所述交换机的负载与所述第三预设阈值之差启动新的服务器;若不大于第三预设阈值,则判断所述交换机的负载是否小于第四预设阈值;若小于第四预设阈值,则根据所述交换机的负载与所述第四预设阈值之差关闭部分服务器。
[0026] 进一步地,所述交换机的状态信息还包括:所述交换机发往每个服务器的数据的流量;
[0027] 相应的,所述判断模块还用于:
[0028] 在所述获取交换机的状态信息之后,根据各服务器的处理能力以及所述交换机发往各服务器的流量,判断发往各服务器的流量是否均衡;
[0029] 若不均衡,则对所述交换机的流表进行调整。
[0030] 本发明提供的基于SDN的云服务器负载均衡方法及装置,通过获取云服务器集群中各服务器的状态信息,根据各服务器的负载,确定所述云服务器集群的负载总和,判断所述云服务器集群的负载总和是否过大或过小,并相应地启动新的服务器或者关闭部分服务器,能够实现云服务器的动态负载均衡,避免有大量数据访问时云服务器的处理速度变慢,提高了云服务器的处理效率,且在云服务器的负载较小时能够关闭部分服务器,有效节约资源。

附图说明

[0031] 图1为本发明实施例一提供的基于SDN的云服务器负载均衡方法的流程图;
[0032] 图2为本发明实施例二提供的基于SDN的云服务器负载均衡装置的结构示意图。

具体实施方式

[0033] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0034] 实施例一
[0035] 本发明实施例一提供一种基于SDN的云服务器负载均衡方法。负载均衡是指多个服务器以对称的方式组成一个服务器集群,每个服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一服务器上,而接收到请求的服务器独立地回应客户的请求,能够平均分配客户请求到服务器列阵,使得用户可以快速获取所需数据,解决大量并发访问服务器的问题,这种群集技术可以用最少的投资获得接近于大型主机的性能。
[0036] 随着云计算的不断发展,由于云计算对资源的伸缩性做了良好的处理,可以按需分配和购买所需要的资源,避免资源浪费,越来越多的服务部署在云服务器上,因此,云服务器上的负载均衡也是伴随着传统服务而来的一种硬性需求。
[0037] 传统的负载均衡方案有软件负载均衡和硬件负载均衡两种方式。其中,软件负载均衡优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。但是从性能上来说,软件负载均衡的性能较差,当遇到大量突发式的访问的时候,软件处理的低效性很容易成为系统瓶颈。硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵,灵活性差。
[0038] 而随着OpenFlow技术的发展,许多厂商也生产了OpenFlow交换机。SDN作为一种新型的网络虚拟化技术,带来了很多网络部分的灵活性,OpenVswitch也支持了OpenFlow协议,对虚拟服务器接入SDN网络提供了有效的支持,所以,基于SDN的负载均衡方案具有比硬件负载均衡器更强大的灵活性,避免了昂贵的硬件花费。同时,借助于交换机的快速处理数据包的能力,也极大地避免了软件负载均衡方案的低效性。
[0039] 图1为本发明实施例一提供的基于SDN的云服务器负载均衡方法的流程图。如图1所示,本实施例中的基于SND的云服务器负载均衡方法,可以包括:
[0040] 步骤101、获取云服务器集群中各服务器的状态信息,所述服务器的状态信息包括所述服务器的负载。
[0041] 具体地,本实施例中的方法的执行主体可以为SDN控制器。SDN控制器可以获取云服务器集群中各服务器的负载,其中,所述服务器的负载为所述服务器的内存和/或CPU的负载,所述负载可以是服务器的实时负载,也可以是一段时间内的平均负载。
[0042] 本实施例中的服务器,可以为虚拟服务器。
[0043] 步骤102、根据各服务器的负载,确定所述云服务器集群的负载总和。
[0044] 具体地,所述云服务器集群中的全部服务器的负载之和即为所述云服务器集群的负载总和。
[0045] 步骤103、判断所述云服务器集群的负载总和是否大于第一预设阈值;若大于第一预设阈值,则根据所述负载总和与所述第一预设阈值之差启动新的服务器;若不大于第一预设阈值,则判断所述负载总和是否小于第二预设阈值;若小于第二预设阈值,则根据所述负载总和与所述第二预设阈值之差关闭部分服务器。
[0046] 若负载总和大于第一预设阈值,说明云服务器的当前负载较大,此时,可以根据所述负载总和与所述第一预设阈值之差启动新的服务器,具体地,若所述负载总和与所述第一预设阈值之差较大,可以启动较多的新的服务器,若所述负载总和与所述第一预设阈值之差较小,可以启动较少的新的服务器。
[0047] 优选的是,可以根据单个服务器的处理能力、以及所述负载总和与所述第一预设阈值之差来综合确定需要启动的新的服务器的个数。
[0048] 若负载总和不大于第一预设阈值,说明云服务器的当前负载不大,此时可以判断所述负载总和是否小于第二预设阈值,若小于,则说明云服务器的当前负载过小,此时,可以根据所述负载总和与所述第二预设阈值之差关闭部分服务器,具体地,若所述负载总和与所述第二预设阈值之差的绝对值较大,可以关闭较多的服务器,若所述负载总和与所述第二预设阈值之差的绝对值较小,可以关闭较少的服务器。
[0049] 优选的是,可以根据单个服务器的处理能力以及所述负载总和与所述第二预设阈值之差来综合确定需要关闭的服务器的个数。
[0050] 其中,所述第一预设阈值和第二预设阈值可以根据实际需要来设置,具体地,可以根据集群中服务器的个数、各服务器的处理速度、以及用户需求来综合设定。
[0051] 在实际应用中,当云服务器集群启动时,SDN控制器可以获取集群中服务器的个数以及各服务器的处理能力,通过SDN控制器的负载均衡初始模块来设计负载均衡规则,并下发流表,进入SDN网络的客户请求通过匹配不同的流表来导入到不同的服务器上。在网络运行期间,可以根据本实施例中的方法来实时调整服务器的个数,完成负载均衡功能。
[0052] 本实施例提供的基于SDN的云服务器负载均衡方法,通过获取云服务器集群中各服务器的状态信息,根据各服务器的负载,确定所述云服务器集群的负载总和,判断所述云服务器集群的负载总和是否过大或过小,并相应地启动新的服务器或者关闭部分服务器,能够实现云服务器的动态负载均衡,避免有大量数据访问时云服务器的处理速度变慢,提高了云服务器的处理效率,且在云服务器的负载较小时能够关闭部分服务器,有效节约资源。
[0053] 进一步地,上述实施例提供的方法,还可以包括:
[0054] 获取交换机的状态信息,所述交换机的状态信息包括所述交换机的负载;
[0055] 判断所述交换机的负载是否大于第三预设阈值;若大于第三预设阈值,则根据所述交换机的负载与所述第三预设阈值之差启动新的服务器;若不大于第三预设阈值,则判断所述交换机的负载是否小于第四预设阈值;若小于第四预设阈值,则根据所述交换机的负载与所述第四预设阈值之差关闭部分服务器。
[0056] 其中,所述交换机可以为OpenFlow交换机或OpenSwitch交换机,所述交换机的负载为所述交换机发往所述云服务器集群中各服务器的数据的流量之和。所述流量可以是当前一段周期内的流量,所述周期可以根据实际需要来设置。所述第三预设阈值和第四预设阈值可以根据云服务器集群中服务器的个数、服务器的处理能力以及云服务器的性质来综合确定。
[0057] 当交换机的负载过大时,可以相应地启动新的服务器,所需启动的新的服务器的个数可以根据所述交换机的负载与第三预设阈值之差来确定,具体地,若所述交换机的负载与第三预设阈值之差较大,则启动较多的新的服务器,反之则启动较少的新的服务器;当交换机的负载过小时,可以关闭部分服务器,所需关闭的服务器的个数可以根据所述交换机的负载与第四预设阈值之差来确定,具体地,若所述交换机的负载与第四预设阈值之差的绝对值较大,则关闭较多的服务器,反之则关闭较少的服务器。
[0058] 本实施例中,通过交换机的流量状态来对云服务器进行调整,当遇到资源瓶颈的时候,可以自动地添加服务器,资源充足的时候,可以自动地减少服务器,并且,相比较于传统的云服务器负载均衡方案,尤其是基于软件比如LVS(Linux Virtual Server,Linux虚拟服务器)实现的负载均衡方法,解决了单点瓶颈问题,尤其是当请求过大的时候,能够从网络转发的层面来做到负载均衡,避免了软件处理数据的低性能问题。
[0059] 在上述实施例提供的技术方案的基础上,优选的是,在启动新的服务器或关闭部分服务器后,可以根据云服务器集群中的服务器个数及各服务器处理能力对交换机的流表进行调整。
[0060] 优选的是,本实施例中,根据云服务器集群中的服务器个数以及各服务器处理能力确定交换机的流表,具体可以包括:
[0061] 根据服务器个数以及各服务器的处理能力,确定集群的总处理能力;根据集群的总处理能力,确定虚拟节点的个数以及各服务器对应的虚拟节点,并为每个虚拟节点分配源IP地址,使得每个虚拟节点对应的源IP地址的个数相等(某些情况下也可以是相近),其中,每个服务器的虚拟节点的个数与所述服务器的处理能力成正比;将属于同一服务器的虚拟节点对应的源IP地址合并,并将所述服务器与合并后的源IP地址的对应关系存储在流表中,以使交换机在接收到数据包后,根据数据包的源IP地址将所述数据包发送给相应服务器处理。
[0062] 例如,集群中有两个服务器一和服务器二,服务器一的处理能力为3,服务器二的处理能力为5,则集群的总处理能力为8,因此,可以设置8个虚拟节点A、B、C、D、E、F、G、H,其中,节点A、B、C属于服务器一,节点D、E、F、G、H属于服务器二,将源IP地址在8个节点上平均分配,假设分配结果表1所示。
[0063] 表1
[0064]源IP地址的前三位 虚拟节点
000 A
001 B
010 C
011 D
100 E
101 F
110 G
111 H
[0065] 按照表1,将属于同一服务器的虚拟节点对应的源IP地址进行合并,得到最终的流表,如表2所示。
[0066] 表2
[0067]源IP地址的前N位 服务器
00 服务器一
010 服务器一
011 服务器二
1 服务器二
[0068] 这样,当交换机接收到数据包后,可以根据流表查找所述数据包的源IP地址对应的服务器,并将所述数据包发送给所述服务器处理。
[0069] 本实施例中,通过将属于同一服务器的虚拟节点对应的源IP地址合并,并将所述服务器与合并后的源IP地址的对应关系存储在流表中,能够有效减少交换机中的流表条目数,提高交换机处理数据包的性能。
[0070] 在上述实施例提供的技术方案的基础上,优选的是,所述交换机的状态信息还包括:所述交换机发往每个服务器的数据的流量。
[0071] 相应的,在所述获取交换机的状态信息之后,还可以根据各服务器的处理能力以及所述交换机发往各服务器的流量,判断发往各服务器的流量是否均衡;若不均衡,则对所述交换机的流表进行调整。
[0072] 例如,假设云服务器集群中设置有服务器A和服务器B,服务器A的处理能力是服务器B的2倍,若交换机发往服务器A的数据的流量是发往服务器B的数据的流量的2倍左右,则认为所述交换机发往各服务器的流量是均衡的,若交换机发往服务器A的数据的流量等于发往服务器B的数据的流量,或者远大于发往服务器B的数据的流量的2倍,则认为所述交换机发往各服务器的流量是不均衡的。
[0073] 在判断发往各服务器的流量是不均衡的之后,可以对交换机的流表进行调整,使得发往各服务器的流量均衡。具体地,若发往某一服务器的流量过大,则将流表中所述服务器对应的部分源IP地址分配给其它服务器,若发往某一服务器的流量过小,则将流表中其它服务器对应的部分源IP地址分配给所述服务器。
[0074] 实施例二
[0075] 本发明实施例二提供一种基于SDN的云服务器负载均衡装置。图2为本发明实施例二提供的基于SDN的云服务器负载均衡装置的结构示意图。如图2所示,本实施例中的基于SDN的云服务器负载均衡装置,可以包括:
[0076] 获取模块201,用于获取云服务器集群中各服务器的状态信息,所述服务器的状态信息包括所述服务器的负载;
[0077] 确定模块202,用于根据各服务器的负载,确定所述云服务器集群的负载总和;
[0078] 判断模块203,用于判断所述云服务器集群的负载总和是否大于第一预设阈值;若大于第一预设阈值,则根据所述负载总和与所述第一预设阈值之差启动新的服务器;若不大于第一预设阈值,则判断所述负载总和是否小于第二预设阈值;若小于第二预设阈值,则根据所述负载总和与所述第二预设阈值之差关闭部分服务器。
[0079] 本实施例中的基于SDN的云服务器负载均衡装置,可以用于执行实施例一中的基于SDN的云服务器负载均衡方法,其具体实现方式与实施例一类似,此处不再赘述。
[0080] 本实施例提供的基于SDN的云服务器负载均衡装置,通过获取云服务器集群中各服务器的状态信息,根据各服务器的负载,确定所述云服务器集群的负载总和,判断所述云服务器集群的负载总和是否过大或过小,并相应地启动新的服务器或者关闭部分服务器,能够实现云服务器的动态负载均衡,避免有大量数据访问时云服务器的处理速度变慢,提高了云服务器的处理效率,且在云服务器的负载较小时能够关闭部分服务器,有效节约资源。
[0081] 进一步地,所述判断模块203还用于:
[0082] 获取交换机的状态信息,所述交换机的状态信息包括所述交换机的负载;
[0083] 判断所述交换机的负载是否大于第三预设阈值;若大于第三预设阈值,则根据所述交换机的负载与所述第三预设阈值之差启动新的服务器;若不大于第三预设阈值,则判断所述交换机的负载是否小于第四预设阈值;若小于第四预设阈值,则根据所述交换机的负载与所述第四预设阈值之差关闭部分服务器。
[0084] 进一步地,所述交换机的状态信息还包括:所述交换机发往每个服务器的数据的流量;
[0085] 相应的,所述判断模块203还用于:
[0086] 在所述获取交换机的状态信息之后,根据各服务器的处理能力以及所述交换机发往各服务器的流量,判断发往各服务器的流量是否均衡;
[0087] 若不均衡,则对所述交换机的流表进行调整。
[0088] 进一步地,所述交换机的负载为所述交换机发往所述云服务器集群中各服务器的数据的流量之和。
[0089] 进一步地,所述服务器的负载为所述服务器的内存和/或CPU的负载。
[0090] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。