应用托管环境下的虚拟机优化调度方法*
2014-03-23范庆涛赵卓峰丁维龙
姜 永,范庆涛,赵卓峰,丁维龙
(1.北方工业大学云计算研究中心,北京100144;2.泰山索道运营中心,山东泰安271000)
1 引言
基础设施即服务IaaS(Infrastructure as a Service)作为云计算的一种主要也是最为成熟的服务类型,在当前的诸多云计算建设项目中被广泛采用和实施[1,2]。IaaS以虚拟化技术为基础,通过池化数据中心的物理资源(如CPU、内存、存储等)并以网络服务的形式提供给用户使用,使得用户可以通过网络按需获取资源[3]。从当前实际的云计算中心(特别是诸多私有云)的应用情况来看,IaaS层面服务的一个主要用途就是承载不同用户的不同类型的应用系统,以虚拟机形式为其提供所必需的基础设施资源,应用托管已成为IaaS服务的典型应用模式[4]。
在应用托管模式下,基于IaaS服务建立的应用托管系统利用诸如VSphere、OpenStack等虚拟化云平台软件,将用户的应用程序封装在镜像中,并为该镜像指定运行所需要的物理资源形成虚拟机模板;然后将这些封装有应用程序的虚拟机模板组合成一个应用系统模板提给用户使用;最后用户通过应用模板向应用托管系统请求以虚拟机形式分配云计算中心的服务器、存储等基础设施资源以部署应用。由于在应用托管模式下不可能预测可能提出的应用托管需求,从而使得在应用托管初期对承载不同应用功能的虚拟机实例只能采取随机或者轮转的方式进行简单调度。随着应用托管的持续运行和托管应用的增多,这种方式可能会产生虚拟化服务器集群的负载倾斜及虚拟化服务器节点的资源利用率不高的情况,甚至会对所托管应用的正常运行产生影响[5~7]。为此,迫切需要结合不同用户具体的应用托管业务需求,选择合适的时刻对承载不同类型应用的虚拟机进行优化调度,以平衡各服务器的虚拟机负载,保障所承载应用的正常运行,并最大化用于虚拟化的服务器的资源利用率,减少不必要的能源消耗[8]。
由于具体托管应用的不同,包括数据类型、运行特征、资源需求等方面的不同,也会表现出对虚拟机调度的额外需求。以一个用于交通管理领域的应用托管为例,如图1所示,由于不同时刻交通状况存在着较大的差异(如上班高峰期和凌晨),这种差异直接导致不同时刻所产生的交通数据量和计算量的变化,也会表现为对基础设施资源需求方面的不同,即需要托管系统根据这些差异动态地增加或删除相关虚拟机服务器[9,10]。而在现有IaaS调度方式下,由于只关注用户请求资源即创建虚拟机时刻的需求,而极少关注用户释放资源后资源的闲置,从而在交通低峰时导致交通应用托管系统的资源闲置和浪费。另外,现有IaaS主要根据虚拟机的配置进行调度,忽略了承载不同类型应用的虚拟机对资源需求的差异,如计算敏感型应用需要更多的CPU资源,数据敏感型应用需要更多的存储和内存资源,从而会极大影响虚拟机调度的效果。如表1所示,从表1中可以看出,如果单纯按虚拟机的配置进行调度而不考虑应用特征,将会造成大量资源的浪费。
针对上述问题,本文提出了一种应用托管环境下的虚拟机优化调度方法,该方法通过对虚拟机承载应用的分析并以虚拟机实际使用的物理资源为调度依据,通过周期性的调度优化实现减少物理服务器使用数量、提高物理服务器资源利用率的目标。
Figure 1 Overall structure of the vehicle identification data communication and core图1 车辆识别数据通信及核心计算系统总体架构图Table 1 Resource allocation and actual use of different types of virtual machine
表1 不同类型虚拟机的资源分配及实际使用情况
随着应用托管规模不断扩大,应用托管环境下的虚拟机调度问题会越来越复杂,普通的人工调度和静态调度方法已经很难满足要求。目前虚拟机的调度问题已经引起许多研究者的注意。Hu J等人[11]提出一种基于遗传算法的虚拟机负载均衡算法,该算法根据历史数据和系统当前的状态,通过遗传算法计算分配虚拟机所需资源后对系统的影响,然后选择影响最小的一种分配方法。该方法能实现很好的负载均衡并减少虚拟机的迁移次数。但是,该方法以虚拟机请求的资源为计算依据,但实际不同应用的虚拟机对资源的需求是不同的,并且可能与其所请求的资源相距甚远,因此会导致计算偏差。其次,虚拟机的迁移调度不同于传统的进程调度和作业调度,是一个很耗资源的过程,有时正是虚拟机的调度导致资源使用的恶化,而该方法没有考虑虚拟机迁移时的资源限制存在一定的隐患。最后,该方法没有考虑节能情况,在系统资源闲置的时候不会聚合系统中的负载释放物理机。Li W等人[6]从用户的角度出发,综合考虑各云服务提供商价格模式、虚拟机的配置、服务性能,为用户选择合适的云服务提供商,并在云服务提供商调整策略改变上述因素时在各云服务商间迁移虚拟机,以使用户利益最大化。本文主要考虑应用托管环境下的资源负载均衡和节能问题,通过监测虚拟机实际使用的物理资源进行调度,更加准确。我们限制了单台物理服务器迁移虚拟机的数量,能防止虚拟机的迁移导致环境中资源使用的恶化,当多个物理机负载较低时,将其上的虚拟机聚合起来使部分物理机闲置,然后通过将这部分机器休眠或关闭达到节能的目的。
2 虚拟机优化调度方法
2.1 问题定义
设数据中心有n台物理服务器,经过一定时期的应用托管后这n台服务器上分布着m个虚拟机,服务于p个应用,通过虚拟机调度和迁移使:(1)开启的物理服务器尽可能少;(2)各物理服务器的资源利用率在可接受的范围并尽可能地高。
为了求解上述问题,本文首先作如表2所示的定义。
Table 2 Problem definition表2 问题定义
其中H和L作为虚拟机迁出的指标,确保物理服务器的资源利用率在H和L之间,不太高也不太低;A作为虚拟机迁入指标,避免虚拟机迁入后导致资源利用率超过H而造成二次迁移;R的设置是为了能及时响应用户的资源申请,避免应用托管环境中资源被用尽、需新开物理服务器时导致用户响应延迟。
其次,为了统一评价物理服务器的负载优先权重,本文定义如下物理服务器i的负载程度公式:
其中,0<αj<1,表示第j种资源的权重。另外,本文还定义如下的虚拟机i迁移权重公式,为调度算法在选择迁移的虚拟机时提供度量:
作为中关村国家自主创新示范区、全国科技创新中心的核心区,海淀区一直是战略新兴产业发展的策源地。经过多年发展,海淀区已经形成大数据、智能制造、大健康、生态产业、创新服务、文化科技融合六大产业。尽管海淀区的产业发展已经取得巨大成就,但在走向“全球影响力的科技创新中心”的道路上仍然面临专业技术人才紧缺的难题。
其中,0<βj<1,表示第j种资源迁移权重。
上述问题可以归纳为以下的规划问题:
2.2 方法描述
基于上述定义,本文提出了一种周期性的虚拟机优化调度方法。每次调度由物理服务器划分、迁移决策、资源管理三个部分配合完成。物理服务器划分根据物理服务器的当前状态将其划分到不同队列;迁移决策根据资源的调整目标选择源物理服务器、虚拟机及目的物理服务器,进行虚拟机的在线迁移;资源管理根据当前的资源使用情况进行物理服务器的开关机管理。
2.2.1 物理服务器划分
根据物理服务器当前有无正在迁移的虚拟机及物理资源的利用率情况,将物理服务器划分为六类:
(1)忙碌物理服务器。虚拟机的迁移需要消耗较多的物理资源,可能导致服务器过载,这时如果再进行其它虚拟机调度可能会使情况恶化。因此,要限制物理服务器上虚拟机迁移的数量,对于已经有虚拟机在迁移的物理服务器不再进行虚拟机的调度。
(2)空闲物理服务器。该类物理服务器没有虚拟机运行且没有虚拟机正在迁入。
(3)关闭状态物理服务器。该类服务器处于关机状态,当环境中资源不够用时可以开启来满足资源需求。
(4)高负载物理服务器。对于非忙碌且非空闲物理服务器i,如果存在j(1≤j≤k)使uij/sij<hj,则把该服务器归入高负载物理服务器。
(5)低负载物理服务器。对于非忙碌且非空闲物理服务器i,如果对于任意的j(1≤j≤k)都有uij/sij<lj,则把该服务器归入低负载物理服务器。
(6)正常物理服务器。不属于以上各类型的其它物理服务器。
2.2.2 迁移决策
该部分主要解决哪些物理服务器上的哪些虚拟机迁往哪台物理服务器。考虑到所获取的资源数据可能并不十分精确,并且云环境中资源的使用仍处于动态变化之中,本文采用较简单的贪心算法来进行调度,以获取近似最优解。具体流程如图2所示。
Figure 2 Migration decision-making process图2 迁移决策流程
2.2.3 资源管理
检查云计算环境下可用资源是否满足预留资源需求,如果满足,检查有空闲物理服务器并在满足预留资源需求的前提下关闭空闲物理服务器。如果不满足,则开启已关闭的物理服务器以满足需求,如果仍不能满足则向管理员发送报告。
2.3 调度算法
虚拟机的调度迁移需要消耗大量的物理资源并且迁移时间较长,为了避免因虚拟机迁移而导致应用托管系统物理资源使用的恶化,本算法限定一台物理服务器一次只允许一个虚拟机迁入或迁出。另外,考虑到虚拟机的物理资源使用处于动态变化中,所获取的物理资源的使用并不会完全精确,所以本文选用了简单而又高效的贪心算法来获取近似最优解,调度方式上采用周期性的调度。具体算法实现如下:
算法1 虚拟机优化调度算法
3 系统实现
本文在以开源IaaS平台OpenStack为基础的交通应用托管环境下实现了基于上述优化调度方法的系统。为了实现上述目标,系统应实现以下功能:(1)数据采集功能:自动采集各服务器所拥有的各种资源及使用情况,运行的虚拟机的数据及各虚拟机的物理资源使用情况;(2)数据组织及存储:采集的数据应当合理地组织和存储,以便于后续处理;(3)调度决策:根据掌握的资源使用情况进行调度决策。因此,系统主要由以下三个模块构成,如图3所示。
3.1 数据采集模块
整个虚拟机调度算法依赖于所收集到的服务器和虚拟机的实时数据,这些数据反映了云计算环境资源的使用情况,为简单起见,这里只考虑CPU和内存相关的指标。其中,描述虚拟机资源情况的指标有:实际物理内存使用量(VMEM_U)、实际物理CPU使用量(VCPU_U)。描述物理服务器的指标有:物理内存总量(PMEM_T)、物理内存实际使用量(PMEM_U)、物理CPU总量(PCPU_T)、物理CPU实际使用量(PCPU_U)。
所有数据的采集由位于物理服务器的采集模块完成。对于物理服务器的指标通过物理服务器操作系统提供的接口获取。对于虚拟机的指标从物理服务器系统中运行虚拟机的进程获取,整个过程对用户和虚拟机都透明。
3.2 数据存储模块
由采集模块获取的各种监控指标数据都发往存储模块存储。考虑到这些数据具有结构简单、周期性频繁更新的特点,并且当服务器规模达到成千上万时可能存在高并发,系统采用去中心化的Zoo Keeper集群来组织和存储这些数据,如图4所示。
Figure 4 Zookeeper cluster data storage module图4 Zoo Keeper集群数据存储模块
Figure 3 System architecture图3 系统架构
采集模块启动后会在Zoo Keeper的/hosts下以自己的域名创建临时性目录节点(如/hosts/pm1),然后在其下创建与该物理服务器资源指标相关的节点(如/hosts/pm1/PMEM_T,/hosts/pm1/PMEM_U等等)来保存相关数据及一个虚拟机根节点如(/hosts/pm1/vms),然后在其下创建该物理服务器上的各个虚拟机节点及虚拟机相关资源使用节点。
3.3 调度模块
调度模块从存储模块获取整个云计算环境资源使用情况的数据;然后按照给定的参数设置和算法给出调度结果,并调用云计算平台的接口完成虚拟机的迁移调度;最后关闭多余的空闲物理服务器以达到提高资源利用率和节能的目的。
3.4 实例验证
接下来,在我们云计算中心的应用托管环境下使用和验证调度的效果。在当前的托管环境下,五台HP服务器构建的集群上搭建了OpenStack平台,实现资源的虚拟化和管理,应用于在研的智能交通项目。其中,一物理机台作为控制节点,其它四台作为资源池(如表3所示)。在这一环境下,利用本文设计实现的数据采集模块、存储模块和调度模块,完成虚拟机的调度。
Table 3 Server configuration and usage表3 服务器配置及用途
在应用托管环境下托管了三套交通应用用于开发和测试,各计算节点的虚拟机分布及资源使用情况的初始状态如表4所示。
Table 4 Initial state of virtual machines distribution and usgae of physical resource in the hosting environment表4 托管环境初始状态虚拟机分布及物理资源使用情况
指定资源利用率上限H=(h1,h2)=(70%,90%)(其中h1表示CPU利用率上限,h2表示内存利用率上限),资源利用率下限L=(l1,l2)=(10%,30%)(其中l1表示CPU利用率下限,l2表示内存利用率下限),资源利用率接受向量A=(a1,a2)=(60%,80%)(其中a1表示CPU接受利用率,a2表示内存接受利用率),经过优化调度系统调度一定时间后,托管环境的虚拟机分布及物理资源使用情况如表5所示。
由调度前后状态的对比可以看出,调度前stack02内存使用率偏高而stack07、stack08的CPU、内存使用率都偏低,已经低于设定的资源利用率下限了,因此优化调度系统通过多轮调度将stack02上的一台前端模拟服务器虚拟机及stack08上的两台虚拟机都迁移到了stack07上,这样既消除了stack02内存使用的热点问题,同时也提高了stack07的资源利用率,并将stack08空闲了出来。这样的结果,一方面,虚拟机在资源允许的情况下被集中部署,提高了物理服务器资源利用率;另一方面,调度后被空闲的物理机可以关机以备用,有效减少了运行中的物理服务器使用数量,节省了用电和管理的开销。
Table 5 Distribution of virtual machines hosted and usage of physical resources after the optimizing scheduling表5 优化调度后托管环境虚拟机分布及物理资源使用情况
4 结束语
本文以应用托管环境的实际物理资源使用情况为依据,提出了一种以减少物理服务器使用数量、提高物理服务器资源利用率为目标的优化调度方法,并在以智能交通为背景的实际应用托管项目中以CPU和内存资源为调度指标进行了验证。从实验结果看,该方法有效地提高了智能交通托管应用中所涉及的各类服务器的CPU和内存利用率,并可减少物理服务器的总体使用量。
[1] Armbrust M,Fox A,Griffith R,et al.Above the clouds:A Berkeley view of cloud computing.EECS Department[R].Berkeley:University of California,2009.
[2] Dodda R,Smith C,Moorsel A.An architecture for crosscloud system management[C]∥Proc of the 2nd International Conference on Contemporary Computing,2009:556-567.
[3] Barham P,Dragovic B,Fraser K,et al.Xen and the art of virtualization[C]∥Proc of the 19th ACM Symposium on Operating Systems Principles,2003:164-177.
[4] Nurmi D,Wolski R,Grzegorczyk C,et al.Eucalyptus:A technical report on an elastic utility computing archietcture linking your programs to useful systems[S].California:UCSBComputer Science Technolog Report Number,2008-10.
[5] Li W,Tordsson J,Elmroth E.Virtual machine placement for predictable and time-constrained peak loads[C]∥Proc of the 8th International Conference on Economics of Grids,Clouds,Systems,and Services,2012:120-134.
[6] Li W,Tordsson J,Emroth E.Modeling for dynamic cloud scheduling via migration of virtual machines[C]∥Proc of the 3rd IEEE International Conference on Cloud Computing Technology and Science,2011:163-171.
[7] Li W,Svard P,Tordsson J,et al.A general approach to service deployment in cloud environments[C]∥Proc of the 2nd International Conference on Cloud and Green Computing,2012:17-24.
[8] Minhas U F,Yadav J,Aboulnaga A,et al.Database systems on virtual machines:How much do you lose?[C]∥Proc of the 24th IEEE International Conference on Data Engineering Workshop,2008:35-41.
[9] Maximilien E M,Ranabahu A,Engehausen R,et al.Toward cloud-agnostic middlewares[C]∥Proc of the 24th ACM SIGPLAN Conference Companion on Object Oriented Programming Systems Languages and Applications,2009:619-626.
[10] Kllapi H,Sitaridi E,Tsangaris M M,et al.Schedule optimization for data processing flows on the cloud[C]∥Proc of 2011 ACM SIGMOD International Conference on Management of Data,2011:289-300.
[11] Hu J,Gu J,Sun G,et al.A scheduling strategy on load balancing of virtual machine resources in cloud computing environment[C]∥Proc of the 3rd International Symposium on Parallel Architectures,Algorithms and Programming,2010:89-96.