CN109343931B - 一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法 - Google Patents

一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法 Download PDF

Info

Publication number
CN109343931B
CN109343931B CN201811062553.4A CN201811062553A CN109343931B CN 109343931 B CN109343931 B CN 109343931B CN 201811062553 A CN201811062553 A CN 201811062553A CN 109343931 B CN109343931 B CN 109343931B
Authority
CN
China
Prior art keywords
virtual machine
host
application
machine
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811062553.4A
Other languages
English (en)
Other versions
CN109343931A (zh
Inventor
桂小林
张晨
徐盼
梁鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN201811062553.4A priority Critical patent/CN109343931B/zh
Publication of CN109343931A publication Critical patent/CN109343931A/zh
Application granted granted Critical
Publication of CN109343931B publication Critical patent/CN109343931B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法,包括以下步骤:步骤1:OpenStack自动为宿主机们上的虚拟机自省库LibVMI和内存分析框架Volatility配置相关文件;步骤2:获取应用感知数据并将其存储在数据库中;步骤3:在每个负载过重的宿主机上挑选出一个待迁移的虚拟机,得到待迁移虚拟机集合;步骤4:为每个待迁移的虚拟机挑选一个合适的宿主机,并使用实时迁移技术将其迁移。相比于传统方法,本发明在负载频繁变化的情况下有效地减少SLA违约次数,并且在CPU、内存以及带宽等多种资源上都实现了更好的负载均衡,具有很好的适应性和实用价值。

Description

一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法
【技术领域】
本发明属于云计算领域,具体涉及一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法。
【背景技术】
云计算作为一种新型的网络计算模式,通过网络以按需、易扩展的方式为用户提供各种虚拟的IT资源和应用服务,支持用户在任意位置、使用多种终端进行访问。根据其提供服务的不同,可以将云计算分为三种类型:基础设施即服务(Infrastructure as aService,IaaS)、平台即服务(Platform as a Service,PaaS)和软件即服务(Software asa Service,SaaS)。IaaS服务主要以虚拟机的形式为用户提供业务所需的IT基础设施,这些虚拟机部署在云服务提供商(Cloud Service Provider,CSP)的数据中心,由CSP统一管理和维护。典型的IaaS服务包括AWS的弹性计算云(Elastic Compute Cloud,EC2)以及VMWare和Openstack提供的虚拟机服务。
IaaS环境下为云租户提供虚拟机时,任何对于计算资源的请求都以虚拟机的形式进行,虚拟机中运行的应用由用户指定,这些应用往往是一些长期运行的后端服务。由于虚拟化技术提供的资源隔离机制,使得虚拟机中的应用只能使用该虚拟机配额内的资源。随着其上应用负载的动态变化,数据中心的宿主机很容易陷入负载不均衡的状态。对于负载过重的宿主机,由于资源的限制无法满足应用新的资源需求且会导致频繁的进程上下文切换。而负载较轻的宿主机上的剩余资源又存在闲置与浪费的问题。此外,负载过重的宿主机上还有可能出现资源使用不平衡的情况,比如一台宿主机CPU负载过重但内存和带宽相对空闲,另外一台宿主机带宽负载过重但CPU相对空闲。上述情况会导致资源的浪费以及云服务整体性能的下降,甚至违反与云租户签订的服务等级协定(Service Level Agreement,SLA),产生SLA违约(SLA Violation)。虚拟机之间的资源争用,本质上是由虚拟机中所承载的应用造成的。因此,在面向负载均衡的虚拟机调度中,要想实现更加高效的负载均衡除了观察虚拟机整体的资源需求之外,还必须考察虚拟机中运行应用的种类和数量。
每一次负载均衡的过程实际上就是重新寻找一个虚拟机和宿主机之间满足多种资源约束的最佳映射关系,这是一个NP-Hard问题。因此,大部分的研究通过使用启发式算法或者元启发式算法寻找一个次优解或近似最优解。
TsepoMofolo,R.S.使用虚拟机实时迁移技术将虚拟机从负载过重的宿主机上迁移到其他负载较低的虚拟机上,他们使用了修改后的降序最佳适应算法(Modified BestFit Decreasing),将待迁移的虚拟机按照CPU的资源请求量降序排列,并将可用的宿主机按照空闲CPU大小降序排列,然后使用最佳适应算法依次为每个虚拟机选择宿主机。Forsman,M.等人同样使用了虚拟机实时迁移技术来实现负载均衡,他们提出了两种不同的迁移策略:在push策略中,负载过重的宿主机主动将虚拟机迁移到负载较低的宿主机上,而在pull策略中,低负载的宿主机主动的从其他负载较重的宿主机上迁移虚拟机。但这两种研究都只考虑了CPU这一种资源的使用情况,但事实上,宿主机上还有很多其他的热点资源,例如带宽,却并未纳入考虑范围。
庄威等人根据虚拟机的资源需求特征以及宿主机的资源使用情况,使用多属性层次分析方法为虚拟机寻找部署压力最小的宿主机,从而实现负载均衡。该方法首先结合用户选择虚拟机的用途推断出虚拟机对各种资源的需求特征,然后按照1-9比例标度对虚拟机所需各种资源的重要性程度赋值,接着通过构造虚拟机所需各种资源的成对比较矩阵计算出虚拟机所需各种资源的权重向量V,再结合宿主机的资源使用向量M找出使V·M最小的宿主机作为待迁移虚拟机的目标宿主机,最后使用虚拟机实时迁移技术将迁移该虚拟机。但是他们在计算加权和时为不同的资源预先定义权重或简单地给他们赋予相等的权重,这显然不能适应虚拟机的资源请求和宿主机的资源使用情况都动态变化的特征。
基于预测的方法通过对虚拟机的资源需求和宿主机的资源使用情况进行预测,从而可以在热点宿主机出现之前就提取迁移虚拟机,这缩短了甚至消除了对负载不均衡状态的响应时间。但对于高度动态的工作负载,由于很难精确地预测资源需求及使用情况,基于预测的负载均衡方法并不是非常可靠。
综上所述,现有工作在一定程度上改善了数据中心中宿主机之间的负载均衡情况,但是大部分工作在进行虚拟机调度的过程中,只是把虚拟机当成一个黑盒,从外部观察其资源需求,而对其内部的情况一无所知,并不能很好地解决虚拟机的负载均衡问题。
【发明内容】
本发明的目的在于提供一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法,针对云计算环境中虚拟机实例动态创建和迁移的特性,设计了一种可以对LibVMI和Volatility进行自动配置的应用感知服务,实时收集云计算环境下虚拟机内部运行的应用信息以及资源使用情况并周期性检测宿主机的资源使用情况。为降低同驻虚拟机之间资源争用的概率,将由应用感知服务收集到的数据作为虚拟机调度的辅助信息,使那些内部运行应用差异比较大的虚拟机同驻,这可减少SLA违约次数以及取得更好的负载均衡效果。
为了实现上述目的,本发明采用的技术方案是:
一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法,包括以下步骤:
步骤1:OpenStack自动为宿主机们上的虚拟机自省库LibVMI和内存分析框架Volatility配置相关文件;
步骤2:获取应用感知数据并将其存储在数据库中;
步骤3:在每个负载过重的宿主机上挑选出一个待迁移的虚拟机,得到待迁移虚拟机集合;
步骤4:为每个待迁移的虚拟机挑选一个合适的宿主机,并使用实时迁移技术将其迁移。
进一步的,步骤1)具体包括以下步骤:
1.1)OpenStack的计算服务项目Nova检测宿主机是否存在虚拟机新建或迁移的情况,若存在,则Nova将情况对应的事件发送到OpenStack的分布式总线上,继续下一步骤;若不存在,则跳到步骤1.6);
1.2)OpenStack的告警服务项目Aodh检测到事件后,触发自动配置模块,自动配置模块在配置库中寻找配置内容,若配置成功,则直接使用配置库中的内容在宿主机上进行配置,跳到步骤1.6);若配置库匹配失败,则创建新的配置,继续下一步骤;
1.3)在宿主机上的目录/etc/libvmi.conf中为该虚拟机添加一个配置条目,包括了操作系统类型、System.map文件的位置以及用来在虚拟机或者内存镜像中访问数据的偏移量内容;
1.4)制作module.dwarf文件,将其和System.map文件压缩成一个压缩包即Profile,把压缩包放置于volatility/plugins/overlays/linux/目录下,并检验Profile是否配置成功,若配置成功,则继续下一步骤;若配置不成功,则检查原因,跳到步骤1.3;
1.5)将配置好的文件上传至配置库;
1.6)重复步骤1.1)-步骤1.5),直到所有的宿主机都完成了相关配置。
进一步的,步骤2)具体包括以下步骤:
2.1)通过实现资源发现模块Discovery、数据调用模块Pollster和数据感知模块Inspector这三个模块在OpenStack的监控服务项目Ceilometer中的数据采集模块agent-computer里添加应用感知插件;
2.2)修改/etc/ceilometer/pipeline.yaml,在sources下面添加name为process_list的条目;
2.3)Ceilometer为应用感知任务定义一条包含了一个数据源source和一个接收点sink的pipeline;
2.4)针对每条pipeline,Ceilometer将从source中提取数据项meters和采样间隔interval,使用这些meters对应的Pollster和interval生成周期性的定时采样任务;
2.5)这些采样任务采集到数据后使用sink中定义的transformer和publisher对数据进行转换和发布;
2.6)引入一个存储抽象层,将数据后端保存到数据库中。
进一步的,步骤3)具体包括以下步骤:
3.1)对宿主机h∈H计算每一个资源r∈R的使用率,若其大于资源r的使用阈值τr∈(0,1],则判定该宿主机负载过重,进行下一步骤;否则跳到步骤3.4);其中,判断条件为:
Figure BDA0001797470450000041
其中,H为宿主机集合;R是资源种类集合;
Figure BDA0001797470450000042
是宿主机h上资源r的当前使用量,
Figure BDA0001797470450000043
是宿主机h上资源r的总量,τr∈(0,1]是资源r的使用率阈值;
3.2)对该宿主机上的虚拟机v∈V,计算TV
Figure BDA0001797470450000044
以及它们的协方差
Figure BDA0001797470450000045
其中对于虚拟机集合V,其整体TV的应用运行情况定义为:
Figure BDA0001797470450000046
Figure BDA0001797470450000051
其中,V为虚拟机集合,VMi为虚拟机i;N为应用的种类数,ei,k表示虚拟机i中属于
Figure BDA0001797470450000052
的应用数量,eV,k表示虚拟机集合V中的所有虚拟机中属于
Figure BDA0001797470450000053
的应用数量之和;
Figure BDA0001797470450000054
表示属于应用种类typek的应用集合,k∈[0,N-1];
Figure BDA0001797470450000055
是虚拟机i上的应用运行情况,
Figure BDA0001797470450000056
为宿主机h上的除虚拟机v以外的所有虚拟机上的整体应用运行情况;
3.3)重复步骤3.2),找出使协方差
Figure BDA0001797470450000057
最大的虚拟机v,将v放入待迁移的虚拟机集合Vm中;
3.4)重复步骤3.1)-步骤3.3),直到遍历完所有的宿主机;
3.5)对Vm中的所有待迁移虚拟机按照其源宿主机热点资源的使用率由大到小排序,得到最终的Vm,其中,热点资源的定义为:
Figure BDA0001797470450000058
进一步的,步骤4)具体包括以下步骤:
4.1)对虚拟机VMi∈Vm计算虚拟机v的可用宿主机集合
Figure BDA0001797470450000059
其中,判断条件定义为:
Figure BDA00017974704500000510
其中,
Figure BDA00017974704500000511
表示待迁移的虚拟机VMi对于资源r∈R的占用量;
4.2)对每个宿主机
Figure BDA00017974704500000512
其上的虚拟机集合为Vh,计算
Figure BDA00017974704500000513
Figure BDA00017974704500000514
的协方差;
4.3)重复步骤4.2),找出使此协方差最小的宿主机h;
4.4)利用实时迁移技术将虚拟机VMi迁移到宿主机h上;
4.5)重复步骤4.1)-步骤4.4),直到为Vm中所有的虚拟机都找到目标宿主机。
进一步的,步骤2中,Discovery模块是用于识别出所有需要采集数据的资源,即找出当前宿主机上所有的虚拟机实例;Pollster运行在agent-compute的某个子线程中,针对需要感知数据的应用资源,周期性地调用Inspector来获取需要的数据并生成数据的采样。
步骤3和步骤4中的协方差计算意义,若虚拟机i的应用运行情况
Figure BDA00017974704500000515
和虚拟机j的应用运行情况
Figure BDA00017974704500000516
的协方差值越小,这表明这两个虚拟机上的应用差异性越大,越适合同驻在同一个宿主机上。
一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法,该方法包括以下步骤:
步骤1)若宿主机上有新建的虚拟机或迁移的虚拟机,自动为这类的虚拟机自省库LibVMI和内存分析框架Volatility配置相关文件;
步骤2)获取应用感知数据并将其存储在数据库中;
步骤3)检测宿主机的负载情况,只要宿主机上存在某一个资源的利用率超过阈值的情况,则判定该宿主机负载过重;在每个负载过重的宿主机上挑选出一个待迁移的虚拟机,最终得到待迁移虚拟机集合;
步骤4)为每个待迁移的虚拟机挑选一个合适的宿主机,并使用实时迁移技术将其迁移。
有益效果:与现有技术相比,本发明具有以下有益效果:
1.虚拟机自省技术兼容多种虚拟化架构和操作系统类型,不需要对虚拟机监控器和客户操作系统进行任何修改,也不会干扰虚拟机内部应用的正常运行,同时通过LibVMI获取的数据比从虚拟机内部直接获取的信息更加真实可靠。
2.具有较好的灵活性,例如可以不使用地址空间插件从LibVMI实时获取内存数据而是直接去读取一个已经存在的虚拟机的内存快照,或是使用Rekall来代替Volatility完成相关的内存分析任务;
3.具有简便性,云计算环境中虚拟机的动态创建和迁移是非常频繁的,且手动配置操作非常的繁琐,而发明方法中的自动配置方法简便了这一过程;
4.具有较好的可移植性,虽然发明方法中的自动配置方法是基于OpenStack实现的,但对于其他平台来说,只要其提供了事件响应机制,仅需少量修改就可以移植使用上述方法;
5.虚拟机调度过程中考虑了虚拟机本身运行的应用信息,实现了资源差异化的虚拟机放置方法,减少了在同一个宿主机上的资源争用概率,更加有效地利用宿主机上的物理资源。
【附图说明】
图1为本发明实现的差异化虚拟机放置策略图;
图2为本发明实现的基于VMI的虚拟机应用感知服务设计图;
图3为本发明实现的基于事件驱动的自动配置方法图;
图4为本发明实现的自动配置方法的流程图;
图5为本发明实现的虚拟机挑选方法的流程图;
图6为本发明实现的宿主机挑选方法的流程图;
图7为本发明一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法的流程图。
【具体实施方式】
下面结合附图,对本发明的技术方案做进一步详细说明。
请参阅图3所示,本发明提供一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法,包括以下步骤:
步骤1:系统自动为宿主机们上的虚拟机自省库LibVMI和内存分析框架Volatility配置相关文件。具体方法:
1.1)OpenStack的计算服务项目Nova检测宿主机是否存在虚拟机新建或迁移的情况,若存在,则Nova将情况对应的事件发送到OpenStack的分布式总线上,继续下一步骤;若不存在,则跳到步骤1.6);
1.2)OpenStack的告警服务项目Aodh检测到事件后,触发自动配置模块,自动配置模块在配置库中寻找配置内容,若配置成功,则直接使用配置库中的内容在宿主机上进行配置,跳到步骤1.6);若配置库匹配失败,则创建新的配置,继续下一步骤;
1.3)在宿主机上的目录/etc/libvmi.conf中为该虚拟机添加一个配置条目,包括了操作系统类型、System.map文件的位置以及用来在虚拟机或者内存镜像中访问数据的偏移量;继续下一步骤;
1.4)制作module.dwarf文件,将其和System.map文件压缩成一个压缩包即Profile,把压缩包放置于volatility/plugins/overlays/linux/目录下,并检验Profile是否配置成功,若配置成功,则继续下一步骤;若配置不成功,则检查原因,跳到步骤1.3;
1.5)将配置好的文件上传至配置库;
1.6)重复步骤1.1)-步骤1.5),直到所有的宿主机都完成了相关配置。
步骤1中,自动配置模块以Web Service的形式提供服务,Aodh检测到事件时,通过向指定的URL(http://controller:8888/api/autoconfig)发送一个HTTP POST请求来驱动配置模块执行相关的配置操作;自动配置模块部署在控制节点上,配置库和镜像库根据数据量的大小以及对性能的要求,可以部署在控制节点上,也可以部署在专用的存储节点上;镜像库是虚拟机内容的备份。
步骤1中,应用感知服务的配置中使用的实例名称指的是宿主机上虚拟机监控器对虚拟机定义的名称,因此在不同的宿主机上需要将这个名称修改为对应的值。
步骤1中,如果云平台不具有客户操作系统的登录权限,使用该虚拟机的镜像创建一个由云平台控制的相同类型的虚拟机,对该虚拟机创建新的配置,因为从相同镜像创建的虚拟机其配置内容除了实例名称之外其他内容都是相同的。
步骤2:获取应用感知数据并将其存储在数据库中。
步骤1完成相关配置后,利用LibVMI通过虚拟机监控器获取虚拟机的内存数据并使用Volatility从这些内存数据中重构出虚拟机的语义信息并提取出应用信息,然后再收集并存储这些感知数据。具体方法:
2.1)通过实现资源发现模块Discovery、数据调用模块Pollster和数据感知模块Inspector这三个模块在Openstack的监控服务项目Ceilometer中的数据采集模块agent-computer里添加一个子模块即应用感知插件;
2.2)修改/etc/ceilometer/pipeline.yaml,在sources下面添加name为process_list的条目;
2.3)Ceilometer为应用感知任务定义一条包含了一个数据源(source)和一个接收点(sink)的pipeline;
2.4)针对每条pipeline,Ceilometer将从source中提取数据项meters和采样间隔interval,使用这些meters对应的Pollster和interval生成周期性的定时采样任务;
2.5)这些采样任务采集到数据后使用sink中定义的transformer和publisher对数据进行转换和发布;
2.6)引入一个存储抽象层,将数据后端保存到数据库中。
步骤2中,Discovery模块是用于识别出所有需要采集数据的资源即找出当前宿主机上所有的虚拟机实例;Pollster运行在agent-compute的某个子线程中,针对合适的资源,周期性地调用Inspector来获取需要的数据并生成数据的采样(Sample)。
步骤2中,pipeline机制是Ceilometer用来解决代理需要采集哪些数据、这些数据的采集周期以及数据采集之后如何处理和发布等问题。
步骤2中,interval指定了轮询的周期,在实际的环境中,可以根据系统的具体情况选择一个合适的值。数据采集的频率是一个很重要的工程决策,因为一个错误的选择可能会增加系统的整体开销(过小的采集周期)或者降低了采集数据的有效性(过大的采集周期)。
步骤3:在每个负载过重的宿主机上挑选出一个待迁移的虚拟机,得到待迁移虚拟机集合。
根据步骤2存储的应用感知数据,可以得到整个云计算环境中的虚拟机集合Vcloud和应用集合Acloud,以及各个虚拟机v∈Vcloud的中运行的应用情况,从而计算每一个宿主机h∈H上的每一种资源r∈R的使用率,若某个宿主机上的某一种资源的使用率超过阈值τr,则在该宿主机上挑选出最不适合与其他虚拟机同驻的虚拟机;遍历宿主机集合H,得到待迁移虚拟机集合Vm。具体方法为:
3.1)如公式(1)所示,对宿主机h∈H计算每一个资源r∈R的使用率,若其大于资源r的使用阈值τr∈(0,1],则判定该宿主机负载过重,进行下一步骤;否则跳到步骤3.4);
Figure BDA0001797470450000091
其中,H为宿主机集合;R是资源种类集合;
Figure BDA0001797470450000092
是宿主机h上资源r的当前使用量,
Figure BDA0001797470450000093
是宿主机h上资源r的总量,τr∈(0,1]是资源r的使用率阈值;
3.2)对该宿主机上的虚拟机v∈V,根据公式(2)、公式(3)和公式(4)计算TV
Figure BDA0001797470450000094
以及它们的协方差
Figure BDA0001797470450000095
Figure BDA0001797470450000096
Figure BDA0001797470450000097
其中,V为虚拟机集合,VMi为虚拟机i;N为应用的种类数,ei,k表示虚拟机i中属于
Figure BDA0001797470450000098
的应用数量,eV,k表示虚拟机集合V中的所有虚拟机中属于
Figure BDA0001797470450000099
的应用数量之和;
Figure BDA00017974704500000910
表示属于应用种类typek的应用集合,k∈[0,N-1];
Figure BDA00017974704500000911
是虚拟机i上的应用运行情况,TV为整个虚拟机集合V的整体应用运行情况,
Figure BDA00017974704500000912
为宿主机h上的除虚拟机v以外的所有虚拟机上的整体应用运行情况;
Figure BDA0001797470450000101
其中,
Figure BDA0001797470450000102
N=Card(Acloud)≥1,Acloud为云端中的应用集合;
3.3)重复步骤3.2),找出使协方差
Figure BDA0001797470450000103
最大的虚拟机v,将v放入待迁移的虚拟机集合Vm中;
3.4)重复步骤3.1)-步骤3.3),直到遍历完所有的宿主机;
3.5)如公式(5)所示,计算Vm中的所有待迁移虚拟机的源宿主机热点资源的使用率
Figure BDA0001797470450000104
并按照由大到小的顺序排列,得到最终的Vm
Figure BDA0001797470450000105
步骤3中,公式(4)中的cov(VMi,VMj)代表着在虚拟机VMi和虚拟机VMj运行的应用的差异性,值越小说明应用差异性越大,VMi和VMj越适合同驻。
步骤4:为每个待迁移的虚拟机挑选一个合适的宿主机,并使用实时迁移技术将其迁移。
具体方法为:
4.1)如公式(6)所示,对虚拟机VMi∈Vm计算虚拟机v的可用宿主机集合
Figure BDA0001797470450000106
Figure BDA0001797470450000107
4.2)对宿主机
Figure BDA0001797470450000108
其上的虚拟机集合为Vh,按公式(4)计算
Figure BDA0001797470450000109
Figure BDA00017974704500001010
的协方差;
4.3)重复步骤4.2),找出使此协方差最小的宿主机h;
4.4)利用实时迁移技术将虚拟机VMi迁移到宿主机h上;
4.5)重复步骤4.1)-步骤4.4),直到为Vm中所有的虚拟机都找到目标宿主机。
综上所述,本发明提出一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法,考虑了云计算环境中虚拟机会发生动态变化这一特征,设计了一种由事件驱动的应用感知服务自动配置方法,收集、存储以及分析应用感知数据,从而得到宿主机的负载情况。同时将虚拟机之间存在潜在的资源争用纳入负载均衡考虑因素中,更加合理地对虚拟机进行调度;相比于传统方法,本发明在负载频繁变化的情况下可以有效地减少SLA违约次数,并且在CPU、内存以及带宽等多种资源上能实现更好的负载均衡,具有很好的适应性和实用价值。
虚拟机应用感知实际是实时获取每个虚拟机的当前进程列表。这是因为进程是应用程序的一个执行实例,并且进程是操作系统中资源分配的最小单位。
应用感知服务是对内存访问模块和内存分析模块的一个封装,对外提供一个应用感知服务接口,这里是基于消息中间件RabbitMQ实现了一个RPC服务为其他模块提供应用感知服务,对外屏蔽了内部的实现细节。

Claims (4)

1.一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法,其特征在于,包括以下步骤:
步骤1:OpenStack自动为宿主机们上的虚拟机自省库LibVMI和内存分析框架Volatility配置相关文件;
步骤2:获取应用感知数据并将其存储在数据库中;
步骤3:在每个负载过重的宿主机上挑选出一个待迁移的虚拟机,得到待迁移虚拟机集合;
步骤4:为每个待迁移的虚拟机挑选一个合适的宿主机,并使用实时迁移技术将其迁移;
步骤3)具体包括以下步骤:
3.1)对宿主机h∈H计算每一个资源r∈R的使用率,若其大于资源r的使用阈值τr∈(0,1],则判定该宿主机负载过重,进行下一步骤;否则跳到步骤3.4);其中,判断条件为:
Figure FDA0002825558620000011
其中,H为宿主机集合;R是资源种类集合;
Figure FDA0002825558620000012
是宿主机h上资源r的当前使用量,
Figure FDA0002825558620000013
是宿主机h上资源r的总量,τr∈(0,1]是资源r的使用率阈值;
3.2)对该宿主机上的虚拟机v∈V,计算TV
Figure FDA0002825558620000014
以及它们的协方差
Figure FDA0002825558620000015
其中对于虚拟机集合V,其整体的应用运行情况TV定义为:
Figure FDA0002825558620000016
Figure FDA0002825558620000017
其中,V为虚拟机集合,VMi为虚拟机i;N为应用的种类数,ei,k表示虚拟机i中属于
Figure FDA0002825558620000018
的应用数量,eV,k表示虚拟机集合V中的所有虚拟机中属于
Figure FDA0002825558620000019
的应用数量之和,
Figure FDA00028255586200000110
表示属于应用种类typek的应用集合,k∈[0,N-1];
Figure FDA00028255586200000111
是虚拟机i上的应用运行情况,
Figure FDA00028255586200000112
为宿主机h上的除虚拟机v以外的所有虚拟机上的整体应用运行情况;
3.3)重复步骤3.2),找出使协方差
Figure FDA00028255586200000113
最大的虚拟机v,将v放入待迁移的虚拟机集合Vm中;
3.4)重复步骤3.1)-步骤3.3),直到遍历完所有的宿主机;
3.5)对Vm中的所有待迁移虚拟机按照其源宿主机热点资源的使用率由大到小排序,得到最终的Vm,其中,热点资源的定义为:
Figure FDA0002825558620000021
步骤4)具体包括以下步骤:
4.1)对虚拟机VMi∈Vm计算虚拟机v的可用宿主机集合
Figure FDA0002825558620000022
其中,判断条件定义为:
Figure FDA0002825558620000023
其中,
Figure FDA0002825558620000024
表示待迁移的虚拟机VMi对于资源r∈R的占用量;
4.2)对每个宿主机
Figure FDA0002825558620000025
其上的虚拟机集合为Vh,计算
Figure FDA0002825558620000026
Figure FDA0002825558620000027
的协方差;
4.3)重复步骤4.2),找出使此协方差最小的宿主机;
4.4)利用实时迁移技术将虚拟机VMi迁移到使协方差最小的宿主机上;
4.5)重复步骤4.1)-步骤4.4),直到为Vm中所有的虚拟机都找到目标宿主机。
2.根据权利要求1所述的一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法,其特征在于,步骤1)具体包括以下步骤:
1.1)OpenStack的计算服务项目Nova检测宿主机是否存在虚拟机新建或迁移的情况,若存在,则Nova将情况对应的事件发送到OpenStack的分布式总线上,继续下一步骤;若不存在,则跳到步骤1.6);
1.2)OpenStack的告警服务项目Aodh检测到事件后,触发自动配置模块,自动配置模块在配置库中寻找配置内容,若配置成功,则直接使用配置库中的内容在宿主机上进行配置,跳到步骤1.6);若配置库匹配失败,则创建新的配置,继续下一步骤;
1.3)在宿主机上的目录/etc/libvmi.conf中为该虚拟机添加一个配置条目,包括了操作系统类型、System.map文件的位置以及用来在虚拟机或者内存镜像中访问数据的偏移量内容;
1.4)制作module.dwarf文件,将其和System.map文件压缩成一个压缩包即Profile,把压缩包放置于volatility/plugins/overlays/linux/目录下,并检验Profile是否配置成功,若配置成功,则继续下一步骤;若配置不成功,则检查原因,跳到步骤1.3;
1.5)将配置好的文件上传至配置库;
1.6)重复步骤1.1)-步骤1.5),直到所有的宿主机都完成了相关配置。
3.根据权利要求1所述的一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法,其特征在于,步骤2)具体包括以下步骤:
2.1)通过实现资源发现模块Discovery、数据调用模块Pollster和数据感知模块Inspector这三个模块在Openstack的监控服务项目Ceilometer中的数据采集模块agent-computer里添加应用感知插件;
2.2)修改/etc/ceilometer/pipeline.yam1,在sources下面添加name为process_list的条目;
2.3)Ceilometer为应用感知任务定义一条包含了一个数据源source和一个接收点sink的pipeline;
2.4)针对每条pipeline,Ceilometer将从source中提取数据项meters和采样间隔interval,使用这些meters对应的Pollster和interval生成周期性的定时采样任务;
2.5)这些采样任务采集到数据后使用sink中定义的transformer和publisher对数据进行转换和发布;
2.6)引入一个存储抽象层,将数据后端保存到数据库中。
4.根据权利要求1所述的一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法,其特征在于,步骤2中,Discovery模块是用于识别出所有需要采集数据的资源,即找出当前宿主机上所有的虚拟机实例;Pollster运行在agent-compute的某个子线程中,针对需要感知数据的应用资源,周期性地调用Inspector来获取需要的数据并生成数据的采样。
CN201811062553.4A 2018-09-12 2018-09-12 一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法 Active CN109343931B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811062553.4A CN109343931B (zh) 2018-09-12 2018-09-12 一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811062553.4A CN109343931B (zh) 2018-09-12 2018-09-12 一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法

Publications (2)

Publication Number Publication Date
CN109343931A CN109343931A (zh) 2019-02-15
CN109343931B true CN109343931B (zh) 2021-02-12

Family

ID=65305248

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811062553.4A Active CN109343931B (zh) 2018-09-12 2018-09-12 一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法

Country Status (1)

Country Link
CN (1) CN109343931B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825486B (zh) * 2019-09-19 2022-05-03 北京大学 一种基于区块链的虚拟机迁移行为的自我感知方法及系统
CN114071046A (zh) * 2020-07-31 2022-02-18 上海华博信息服务有限公司 一种特种影片转制服务平台
CN115904642A (zh) * 2021-08-19 2023-04-04 北京字节跳动网络技术有限公司 云服务器控制方法、装置、存储介质及电子设备
CN114048004A (zh) * 2021-11-22 2022-02-15 北京志凌海纳科技有限公司 虚拟机高可用批量调度方法、装置、设备及存储介质
CN116737320A (zh) * 2023-06-29 2023-09-12 河南大学 基于ahp方法的云数据中心资源平衡感知的虚拟机放置策略
CN117271056A (zh) * 2023-09-19 2023-12-22 北京火山引擎科技有限公司 公有云降频风险识别方法、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130290468A1 (en) * 2010-08-24 2013-10-31 University Of Massachusetts Methods and Apparatus to Migrate Virtual Machines Between Distributive Computing Networks Across a Wide Area Network
CN106201700A (zh) * 2016-07-19 2016-12-07 北京工业大学 一种虚拟机在线迁移的调度方法
CN106775949A (zh) * 2016-12-28 2017-05-31 广西大学 一种感知复合应用特征与网络带宽的虚拟机在线迁移优化方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130290468A1 (en) * 2010-08-24 2013-10-31 University Of Massachusetts Methods and Apparatus to Migrate Virtual Machines Between Distributive Computing Networks Across a Wide Area Network
CN106201700A (zh) * 2016-07-19 2016-12-07 北京工业大学 一种虚拟机在线迁移的调度方法
CN106775949A (zh) * 2016-12-28 2017-05-31 广西大学 一种感知复合应用特征与网络带宽的虚拟机在线迁移优化方法

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
Automated Cloud Migration based on Network Traffic Dependencies;Jargalsaikhan Narantuya 等;《2017 IEEE Conference on Network Softwarization (NetSoft)》;20170815;全文 *
lib/readme.txt;OA136;《https://github.com/OA136/lib/blob/master/README.txt》;20180705;第1-7页 *
OpenStack的私有云环境下信息监测系统的应用研究;黄艳霞;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170215;第8-26页 *
云环境下基于多属性层次分析的虚拟机部署与调度策略;庄威 等;《西安交通大学学报》;20130228;第47卷(第2期);全文 *
华强.面向虚拟化的物联网服务系统内存分析与安全保障方案的设计与实现.《中国优秀硕士学位论文全文数据库 信息科技辑》.2018,第12-25、32-34页. *
面向虚拟化的物联网服务系统内存分析与安全保障方案的设计与实现;华强;《中国优秀硕士学位论文全文数据库 信息科技辑》;20180415;第12-25、32-34页 *
黄艳霞.OpenStack的私有云环境下信息监测系统的应用研究.《中国优秀硕士学位论文全文数据库 信息科技辑》.2017,第8-26页. *

Also Published As

Publication number Publication date
CN109343931A (zh) 2019-02-15

Similar Documents

Publication Publication Date Title
CN109343931B (zh) 一种在IaaS环境中面向负载均衡的应用感知虚拟机调度方法
US10884812B2 (en) Performance-based hardware emulation in an on-demand network code execution system
EP3847549B1 (en) Minimizing impact of migrating virtual services
US10713080B1 (en) Request-based virtual machine memory transitioning in an on-demand network code execution system
US10949237B2 (en) Operating system customization in an on-demand network code execution system
US11526434B1 (en) Network-level garbage collection in an on-demand code execution system
US11010188B1 (en) Simulated data object storage using on-demand computation of data objects
US10360067B1 (en) Dynamic function calls in an on-demand network code execution system
EP2425349B1 (en) Application efficiency engine
CN106489251B (zh) 应用拓扑关系发现的方法、装置和系统
US11106560B2 (en) Adaptive thresholds for containers
Wood et al. Sandpiper: Black-box and gray-box resource management for virtual machines
JP2019023915A (ja) 要求処理技術
CN106452818B (zh) 一种资源调度的方法和系统
Flores et al. Evidence-aware mobile computational offloading
CN103530189A (zh) 一种面向流式数据的自动伸缩及迁移的方法及装置
CN108595306A (zh) 一种面向混部云的服务性能测试方法
CN108920153A (zh) 一种基于负载预测的Docker容器动态调度方法
KR20100138689A (ko) 클라우드 컴퓨팅 서비스를 제공하는 관리 서버 및 방법
US10169102B2 (en) Load calculation method, load calculation program, and load calculation apparatus
CN111381928B (zh) 一种虚拟机迁移方法、云计算管理平台和存储介质
US10824339B1 (en) Snapshot-based garbage collection in an on-demand code execution system
CN108762885B (zh) 一种虚拟机创建方法、装置、管理设备及终端设备
Buyya et al. Cost-efficient orchestration of containers in clouds: a vision, architectural elements, and future directions
CN103677983B (zh) 应用的调度方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant