首页> 中国专利> IaaS云环境中的负载均衡系统和负载均衡方法

IaaS云环境中的负载均衡系统和负载均衡方法

摘要

本发明公开了一种IaaS云环境中的负载均衡系统和负载均衡方法,通过增加负载均衡调度模块,实现对负载均衡器的周期性调整,解决了IaaS云环境中现有的负载均衡器虽然可以对流量进行分发以及对后端机器进行负载均衡,但是由于负载均衡器的后端机器由传统的物理机变成了虚拟机,而负载均衡器并没有办法针对虚拟机和物理机的对应关系做出合适的负载均衡策略从而导致的云环境中物理机负载不均衡的问题,本发明的负载均衡系统和负载均衡方法针对上述情况,通过结合云环境拓扑及实时监控信息指导负载均衡器进行周期性的权重调整,达到平衡云环境中物理机负载的效果。

著录项

  • 公开/公告号CN105049536A

    专利类型发明专利

  • 公开/公告日2015-11-11

    原文格式PDF

  • 申请/专利权人 南京大学;

    申请/专利号CN201510567042.8

  • 发明设计人 孔繁宇;钱柱中;陆桑璐;

    申请日2015-09-08

  • 分类号H04L29/08(20060101);

  • 代理机构南京苏高专利商标事务所(普通合伙);

  • 代理人许丹丹

  • 地址 210093 江苏省南京市鼓楼区汉口路22号

  • 入库时间 2023-12-18 12:06:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-04-06

    授权

    授权

  • 2015-12-09

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20150908

    实质审查的生效

  • 2015-11-11

    公开

    公开

说明书

技术领域

本发明涉及云计算领域中的负载均衡技术,尤其涉及一种IaaS云环境中的负载均衡 系统和负载均衡方法。

背景技术

基础设施即服务IaaS所提供给消费者的服务是对所有计算基础设施的利用,包括 处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件, 包括操作系统和应用程序。消费者不管理或控制任何云计算基础设施,但能控制操作系 统的选择、存储空间、部署的应用,也有可能获得有限制的网络组件(例如路由器、防 火墙、负载均衡器等)的控制。

负载均衡器是一种把网络请求分散到一个服务器集群中的可用服务器上去,通过管 理进入的Web数据流量和增加有效的网络带宽。当前负载均衡技术广泛应用于网络服 务器中(2-4层网络),横向拓展的特性非常适合于网络服务器对于负载压力的应对,各 类负载均衡方案层出不穷,如硬件的F5、软件的LVS、HAProxy、Nginx等,在长期的 实践中已经成为了主流的系统架构设计方法。

OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具 体工作。OpenStack通过各种互补的服务提供了基础设施即服务IaaS的解决方案,每个 服务提供API以进行集成。

当传统应用迁移到IaaS云环境中后,由于以下原因,仍然需要采用对虚拟机之间 进行负载均衡来达到横向拓展:

(1)大量已经编写好的应用在系统设计架构上基于负载均衡而设计,非常适合于 做横向拓展;(2)纵向拓展(如创建性能更强的虚拟机)由于不能超过物理服务器本 身的性能极限,所以并不能满足大型应用的需求;(3)横向拓展避免了应用可能出现 的单点故障问题,增强了系统整体鲁棒性,有利于应用的稳定运行。

前两点基于应用的可拓展性(Scalability)要求,第三点基于应用的可用性 (Availability)要求,因此,在云环境中,云服务提供商(如OpenStack)本身为用户 提供了负载均衡服务(LBaaS),用户可以通过简单的配置在自己创建的虚拟机之间建 立负载均衡。

但是由于云环境和传统的物理机环境不同,直接在虚拟机之间建立的负载均衡关系 的做法由于无视了底层的物理服务器关系,虽然虚拟机之间维持了均衡的负载,但是非 常容易造成底层的物理服务器之间的负载严重不平衡,而较高的物理机负载又会反过来 影响虚拟机的性能,造成整体云服务性能的下降。

发明内容

发明目的:为了解决现有技术中存在的问题,本发明提供了一种IaaS云环境中的 负载均衡系统和负载均衡方法,基于整体云环境的结构信息和监控信息(主要包含CPU 利用率和I/O负载信息),对负载均衡的策略进行调整,通过对虚拟机之间负载均衡的 比例进行调整,来平衡整体物理机的CPU利用率及I/O负载,从而达到提升整体云服 务性能、优化云环境整体效率的效果。

技术方案:本发明的IaaS云环境中的负载均衡系统包括:网络节点、计算节点以 及控制节点,网络节点上运行有负载均衡器,所述负载均衡器负责对网络流量进行分发; 控制节点上运行有网络控制模块、负载均衡控制模块、计算控制模块以及监控模块;其 特征在于,该系统还包括负载均衡调度模块,所述负载均衡调度模块与所述控制节点进 行周期性信息交互并通过所述控制节点对所述负载均衡器的权重分配进行调整。

其中,所述负载均衡调度模块与所述控制节点进行周期性信息交互具体如下:

(1)所述负载均衡调度模块与所述网络控制模块进行交互,获取用户负载均衡配 置信息,所述用户负载均衡配置信息包括所有用户配置的所有负载均衡池的信息;

(2)所述负载均衡调度模块与所述计算控制模块进行交互,获取虚拟机与物理机 的对应关系,并与步骤(1)中获得的负载均衡池中的虚拟机信息进行关联,形成拓扑 关系;

(3)所述负载均衡调度模块与所述监控模块进行交互,获取需要的监控信息,所 述监控信息为物理机以及虚拟机的实时CPU占用率和I/O负载监控数据;

(4)以全部物理机的最大CPU占用率取最小值为优化目标建立线性规划问题,并 进行求解得到所述线性规划问题的最优解;

(5)将步骤(4)中的最优解转换为各个负载均衡池中虚拟机的权重;

(6)所述负载均衡调度模块将所述各个负载均衡池中虚拟机的权重信息反馈给所 述网络控制模块请求修改所述负载均衡器的权重分配;

(7)所述控制节点负责调整所述负载均衡器的后端权重,完成一次负载均衡。

其中,步骤(4)中建立的线性规划问题如下:

优化目标:minT

约束条件:

1)对于每个负载均衡池Pi,有:

2)对于每台虚拟机vj,有:

3)对于每台物理机hi,有:

4)对于每台物理机hi,有:

式中,T为物理机的CPU占用率,Ci为物理机hi的最大容量;lj为负载均衡池Pi中虚 拟机vj均衡调整前的负载,l′j为虚拟机vj均衡调整后的负载,cj为虚拟机的最大容量;对 于每一个物理机hi,L′i为物理机hi均衡调整后的负载,S(hi)为物理机hi上的虚拟机集合。

本发明还公开了一种IaaS云环境中的负载均衡方法,负载均衡调度模块与控制节 点上运行的网络控制模块、计算控制模块、监控模块进行周期性信息交互并通过所述控 制节点对负载均衡器的权重分配进行调整实现负载均衡,进行一次所述负载均衡包括以 下步骤:

(1)所述负载均衡调度模块与所述网络控制模块进行交互,获取用户负载均衡配 置信息,所述用户负载均衡配置信息包括所有用户配置的所有负载均衡池的信息;

(2)所述负载均衡调度模块与所述计算控制模块进行交互,获取虚拟机与物理机 的对应关系,并与步骤(1)中获得的负载均衡池中的虚拟机信息进行关联,形成拓扑 关系;

(3)所述负载均衡调度模块与所述监控模块进行交互,获取需要的监控信息,所 述监控信息为物理机以及虚拟机的实时CPU占用率和I/O负载监控数据;

(4)以全部物理机的最大CPU占用率取最小值为优化目标建立线性规划问题,并 进行求解得到所述线性规划问题的最优解;

(5)将步骤(4)中的最优解转换为各个负载均衡池中虚拟机的权重;

(6)所述负载均衡调度模块将所述各个负载均衡池中虚拟机的权重信息回馈给所 述网络控制模块请求修改所述负载均衡器的权重分配;

(7)所述控制节点负责调整所述负载均衡器的后端权重。

其中,步骤(4)中建立的所述线性规划问题如下:

优化目标:minT

约束条件:

1)对于每个负载均衡池Pi,有:

2)对于每台虚拟机vj,有:

3)对于每台物理机hi,有:

4)对于每台物理机hi,有:

式中,T为物理机的CPU占用率,Ci为物理机hi的最大容量;lj为负载均衡池Pi中虚 拟机vj均衡调整前的负载,l′j为虚拟机vj均衡调整后的负载,cj为虚拟机的最大容量;对 于每一个物理机hi,L′i为物理机hi均衡调整后的负载,S(hi)为物理机hi上的虚拟机集合。

有益效果:本发明提出了基于线性规划的云环境负载均衡,通过结合云环境的拓扑 及实时监控信息指导负载均衡器权值的调整,以达到优化云环境整体效率的目的。负载 均衡调度模块基于整体云环境的结构信息和监控信息,对负载均衡的策略进行调整,通 过对虚拟机之间负载均衡的比例进行调整,来平衡整体物理机的负载,从而达到提升整 体云服务性能的目的。

附图说明

图1是结合OpenStack平台的负载均衡系统的结构示意图;

图2是图1中的负载均衡系统收集数据示意图;

图3是虚拟机和物理机的拓扑结构示意图;

图4是虚拟机v1的CPU负载变化监控图;

图5是虚拟机v2的CPU负载变化监控图;

图6是虚拟机v3的CPU负载变化监控图;

图7是物理机h1的CPU负载变化监控图;

图8是物理机h2的CPU负载变化监控图。

具体实施方式

为了便于理解,下面结合实施例与附图对本发明作进一步的说明,实施方式提及的 内容并非对本发明的限定。

图1以OpenStack平台为例介绍本发明的负载均衡系统,图中左侧部分为OpenStack 的网络布局,包含了连接公共网络的网络节点、计算节点以及标准的控制节点;网络节 点负责为租户提供虚拟网络服务,主要专注于租户虚拟网络的实现;计算节点负责为用 户提供计算资源,通过运行用户指定的虚拟机将计算资源提供给用户,控制节点为整个 云环境的中央管理节点,负责云平台内部的管理和通信,并且作为用户的控制接口。

用户对负载均衡池的访问请求通过网络节点进行,在网络节点上运行有HAProxy 模块,HAProxy模块作为负载均衡器,负责对网络流量进行分发;控制节点上同时运行 有计算控制模块Nova、网络控制模块Neutron、负载均衡控制模块LBaaS和监控模块 Ceilometer;计算控制模块用来控制用户的虚拟机在计算节点上的运行;网络控制模块 用来控制用户在虚拟机上建立的虚拟网络服务;负载均衡控制模块用来控制用户创建的 虚拟机负载均衡服务;监控模块用于收集云环境中的实时监控信息,包括计算节点上运 行的虚拟机以及真实计算节点对应的物理机的CPU、I/O等各个方面的实时负载信息等; 图1展示了上述模块的基本结构,可以看到控制节点在整个云环境中通过计算、网络、 负载均衡控制模块的共同协同工作,将运行在各个计算机节点上的用户虚拟机组织成虚 拟网络,并在此基础上建立负载均衡服务。其中右侧为负载均衡调度模块,该模块可以 把网络请求分散到一个服务器集群中的可用服务器上去,通过管理进入的Web数据流 量和增加有效的网络带宽,并且支持在运行过程中对处于负载均衡状态下的后端机器进 行动态的权重调整。负载均衡调度模块周期性运行对云环境负载均衡做出调整,其一次 运行过程如下:

(1)使用OpenStack提供的neutronclient或其他方法访问网络控制模块API,与 OpenStack的网络控制模块进行交互,调用ListpoolsAPI(/v2.0/lbaas/pools),获取用户 负载均衡配置信息,即:全局所有用户配置的所有负载均衡池的信息;

(2)使用OpenStack提供的novaclient或其他方法访问计算控制模块API,与 OpenStack的计算控制模块进行交互,调用ListserverdetailsAPI(/v2.1/servers/detail) 获取云环境中虚拟机与物理机的逻辑对应关系,即某台虚拟机实际运行在云环境中具体 哪一台计算节点上,并与上一步中获得的负载均衡池中的虚拟机信息进行连接,形成如 图2所示的拓扑关系;

(3)使用OpenStack提供的ceilometerclient或其他方法访问监控模块API,与 OpenStack的监控模块进行交互,调用ListsamplesAPI(/v2/samples),获得需要的监控 信息,即:物理机以及虚拟机的实时CPU利用率及I/O负载监控数据,如图2左侧列 出的监控项所示;

(4)建立线性规划问题,并进行求解得到最优解;

(5)将步骤(4)中的最优解转换为各个负载均衡池中虚拟机的权重;

(6)将新的权重信息通过OpenStack提供的neutronclient或其他方法访问网络控 制模块API反馈给OpenStack网络控制模块,对于调整后的每一台虚拟机,调用Update poolmemberAPI(/v2.0/lbaas/pools/{pool_id}/members/{member_id})请求修改负载均衡 器权值;

(7)OpenStack的控制节点在执行API调用后自动修改对应HAProxy的配置文件 完成HAProxy后端权重的调整,完成一次负载均衡。

OpenStack中默认通过HAProxy提供软件负载均衡功能,用户可以通过创建负载均 衡池并将想要作为负载均衡后端的虚拟机绑定到该负载均衡来建立负载均衡服务。创建 成功后通过负载均衡池所绑定的公共IP即可访问所有虚拟机后端构成的负载均衡集群。

HAProxy的一个重要功能在于可以实时的调整负载均衡后端机器的比例权重,实时 修改后端虚拟机的负载分配比例。

本发明中将物理机的CPU利用率和I/O负载作为首要的负载衡量标准,上述步骤 (4)中所建立的线性规划问题具体如下:

问题输入:

1)共有N台物理机(计算节点),物理机hi的负载为Li,每台物理机的最大容量为Ci

2)系统中虚拟机vj的负载为lj,最大容量为cj

3)共有M个负载均衡池,每个负载均衡池Pi对应一组虚拟机:Pi={v1,v2,v3,…vj…}, 且每个虚拟机vj仅能存在于一个负载均衡池中,即对于任意两个负载均衡池,其交集为 空集;

4)对于每一个物理机hi,S(hi)表示这台物理机上的虚拟机集合;

问题输出:对于每个负载均衡池Pi,对所有的虚拟机vj∈Pi,给出新的期望负载l′j

求解该问题后得到期望负载,将其转换为比例后即可用来指导HAProxy进行各个 后端虚拟机的动态权重调整,以达到云环境整体负载优化的目的。求解上述问题的线性 规划问题,具体如下:

约束条件:

1)对于每个负载均衡池Pi,其总负载不变:

2)对于每台虚拟机vj,其负载不超过最大容量:

3)对于每台物理机hi,其负载不超过最大容量:

优化目标:添加变量T,对所有物理机hi,有规划目标为minT。

通过求解该线性规划问题,即可得到先前定义问题的解。

以下结合具体数值对本发明所提供的IaaS云环境中的负载均衡方法做更进一步详 细介绍。

用户设置了两个负载均衡池P1和P2,P1对应于虚拟机{v1,v2},P2对应于虚拟机 {v3},虚拟机v1运行在物理机h1上,虚拟机v2,v3运行在物理机h2上。此处作为决 策依据的负载可以采用CPU占用率和I/O负载,为便于理解,此处取CPU占用率作为 负载衡量指标,虚拟机均为2CPU机器,物理机均为4CPU机器。所有虚拟机上都运行 着相同的产生CPU负载的Web应用,当收到用户请求后进行一定量的CPU运算后返 回。

通过向负载均衡池P1产生两倍于P2的访问量,使得所有虚拟机负载均为50%, 生成虚拟机负载如下(机器负载=实时CPU利用率*机器CPU核数量):

l1=1l2=1l3=1

对应的物理机负载为:

L1=1L2=2

1.建立线性规划问题并进行运行算法求解

在本实施例中根据本发明中描述的问题及算法可以得到对应的线性规划问题:

l1+l2=l1+l2=2l3=l3=1l1c1=2l2c2=2l3c3=2l1C1=4l2+l3C2=4l1C1=l14Tl2+l3C2=l2+l34T

采用单纯形法求解该问题,得到结果:

l1=1.5l2=0.5l3=1

2.调整权重

根据上一步中得到的结果,可以确定负载均衡池P1中新的权重比例关系应该修改 为3:1,使用此比例对HAProxy进行调整。

3.实验测试效果

实验的效果如图4至图8所示,图4、图5以及图6中可以看到在图的中间靠右位 置(约10:54:45的位置),在运行本发明的负载均衡方法后,v1的负载出现了上涨而v2 的负载出现了下降,v3则保持不变。图7和图8中可以看出在运行本发明的负载均衡 方法后,两台物理机的权重发生了改变,并趋向于平衡。

本发明具体应用途径很多,上述以OpenStack平台为例进行介绍,仅为便于理解设 置,本发明中的负载均衡调度模块以及负载均衡方法对于支持负载均衡功能的IaaS云 环境的如OpenNebula(HTTP的loadbalancer模块)、CloudStack(OVSPlugin提供Load Balancing功能)和OpenStack(LBaaS模块)等开源平台均适用,应当指出以上实施例 对本发明不构成限定,相关工作人员在不偏离本发明技术思想的范围内,所进行的多样 变化和修改,均落在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号