基于容器技术的云计算资源合理调度方法研究

邵海军
摘 要: 传统基于Hypervisor 模型的云计算资源调度方法存在长时间得不到调度,调度性能低的问题。针对该问题,设计基于容器技术的云计算资源合理调度方法,设计了调度系统的架构以及调度流程。详细说明了虚拟机迁移时间判断流程以及被迁移虚拟机选择流程。采用Migrate方法完成虚拟机的迁移,资源统计过程通过调用Libvirt的接口实现通信,并通过近似的方式运算虚拟机CPU使用率,降低了云计算资源调度时的数据中心能耗。经过测试表明,所提方法稳定性高,总体性能优,达到了预期目标。
关键词: 容器技术; 云计算; 资源调度; CPU使用率
中图分类号: TN911?34; TP302 文献标识码: A 文章编号: 1004?373X(2017)22?0033?03
Abstract: As the traditional cloud computing resource scheduling method based on the Hypervisor model has long scheduling delay and low scheduling performance, a cloud computing resource scheduling method based on the container technology is proposed, and the architecture and dispatch process of the scheduling system are designed. The judging process of virtual machine migration time and the selection process of the migrated virtual machine are elaborated. The Migrate method is adopted to accomplish the virtual machine migration. The Libvirt interface is invoked to realize communication during the resource statistical process. The CPU utilization rate of the virtual machine is obtained by means of approximate computations, which reduces energy consumption of the data center during cloud computing resource scheduling. The test results show that the proposed method has high stability and excellent total performance, and has achieved the anticipated goal.
Keywords: container technology; cloud computing; resource scheduling; CPU utilization rate
0 引 言
在信息化迅速發展的今天,云计算的发展给人们带来前所未有的便利。作为云计算中主要支撑技术之一的虚拟化技术也随之得到了广泛的应用[1]。 传统基于Hypervisor 模型的云计算资源调度方法,通过控制节点完成虚拟机迁移的判断,基于节点的资源使用情况分析从节点是否需要实施虚拟机迁移,导致末位节点长时间得不到调度,调度性能低。容器是一种基于操作系统的虚拟化技术,其可解决云计算资源调度过程中的程序独立性和资源共享性问题。提出了基于容器技术的云计算资源合理调度方法,提升云计算机资源调度的总体性能。
1 基于容器技术的云计算资源合理调度系统设计
1.1 调度系统架构设计
如图1所示,设计的基于容器技术的云计算资源调度系统构架分为软件分层和模块化两方面内容,实现基于应用容器的模拟机调度框架[2]。由图1可以看出,云计算资源数据中心节点包括控制节点以及从节点,控制节点在调度系统中起到控制作用。各节点间工作流程为:
(1) 从节点在Host上控制Libvirt启动Libvirtd与主节点之间进行数据请求和命令,在基于容器的虚拟化技术软件OpenVZ上控制资源域Domain。
(2) 主节点通过主机Host来控制Libvirt[3],在OpenVZ上控制Domain,通过Libvirt来实现基于应用容器的云资源调度系统。由此可见,通过Libvirt来完成各节点间的请求和命令,可以使系统的通信设计变得更加高效。
1.2 调度系统流程设计
设计的调度系统架构应具备较高的通用性能,才能确保系统实现负载的平衡、能耗的最低化以及高质量的用户服务。因此本文从增强系统可配置性以及最小化问题复杂度两方面着手[4],完成一个调度系统框架设计,帮助用户更加精确地进行配置系统调度。此设计云计算资源调度系统中的虚拟机迁移流程主要包括四步:
(1) 分析迁移规范;
(2) 采集合理的被迁移虚拟机;
(3) 删除目标主机;
(4) 合理规划目标主机的权重分布状态。
2 云计算资源合理调度系统实现
2.1 虚拟机迁移时间判断
采用循环首次适应算法完成虚拟机迁移时间的判断。该算法基于首次适应算法,将操作系统中内存分区的分配算法进行改良而实现[5]。当检索到表尾时,则又循环到表头重新开始。算法流程为:
(1) Mig Jud Factory和Mig Jud Register 用于该模块实现反射功能,将Mig Jud Register和Mig Jud Factory实例化;
(2) 将Mig Jud Base和Concrete Mig Jud注册到Mig Jud Factory中;
(3) System调取get Host List 获取主机列表;
(4) 调用get Value采集具体判断模块并传入主机判断;
(5) 迁移条件判断模块核心方法是 Is System Need Migrate 用于返回是否需要触发迁移;
(6) 由于在低负载时,只需迁移物理节点上所有虚拟机,若处于低负载,则需要设置一个flag,以供后面虚拟机在迁移时进行选择。
2.2 被迁移虚拟机选择
本文采用最低潜在提升方案选择被迁移虚拟机,分析虚拟机CPU占用率情况,通过最低潜在提升且内存使用率最低虚拟机满足CPU使用率和迁移代价两方面需求。被迁移虚拟机选择流程的详细过程为:
(1) 得到节点上所有虚拟机列表。
(2) 对迁移过程反馈的flag进行检测,当结果为true时,虚拟机运行结束,返回列表顶端;反之进入下一步。
(3) 根据CPU使用率对虚拟机列表进行降序排列[6],保证最低潜在增长虚拟机排在首位。
(4) 对mem_flag进行检测,若是false,则说明在物理节点上仅有CPU使用率处于高负载,并不包括内存使用率。这时在模拟机列表里应选取CPU使用率最高且内存使用率较低的模拟机返回结束[7],反之进入下一步。
(5) 在这一过程中flag为false,mem_flag为true,说明物理节点CPU使用率和内存使用率均处于高负载。
2.3 迁移执行和资源统计
Migrate是迁移执行的一个重要方法,该方法通过Domain和Host两个参数对被迁移虚拟机以及目标主机实施标定,通过底层调用Libvirt的vir Migrate To Uri 实现迁移。对虚拟机或Host进行任何操作时,都需要先与Hypervisor建立连接[8],才能进行管理操作。Hypervisor函数是以vir Connect开头的系列函数,由于Libvirt中不包含虚拟CPU使用率接口,所以本文对两次时间间隔中vir Domain Get Info 所得的 CPU 运行时间以及get time of day 所得的实际时间进行比例运算,再将比例运算结果除以 CPU 个数得到的近似值作为CPU的使用率。该过程的代码为:
3 实验分析
3.1 稳定性测试
实验通过运行脚本Monitor.sh,获得本文设计的CPU与内存使用率。实验时间间隔为1 min,经过250 min后,本文系统CPU和内存情况如图2所示。从图中可知,本文调度系统CPU使用率变化约为200%,系统内存使用率始终保持0.1,说明系统运行稳定。
3.2 性能测试
为了检测系统数据中心在本文方法调度前和调度后的能耗波动,实验在如下场景中进行检测:在节点1上安排3个初始状态为空闲的虚拟机,并在15 min以后同时进入死循环程序;在节点2上安排3个初始状态为空闲的虚拟机,并在20 min以后同时进入死循环程序;在节点3上安排3个初始状态为空闲的虚拟机,并在25 min以后同时进入死循环程序;3个节点获得CPU使用率的时间间隔为6 min,运算出3个节点CPU平均使用率。同上述场景一样,将本文调度系统部署在控制节点中进行同样的测试。实验假设睡眠状态下的CPU使用率是1%。系统运行前后对比情况如图3所示。
从图3中可以看出,运行本文调度系统24 min以内,CPU综合使用率明显更优;基于CPU资源使用率和服务器能耗间关系得系统运行后数据中心总体能耗显著低于系统运行前能耗。
4 结 论
本文设计了基于容器技术的云计算资源合理调度方法。经过测试表明,所提方法稳定性高,总体性能优,达到了预期目标。
参考文献
[1] 张品,张海明,黎建辉,等.一种基于Linux容器技术的大规模遥感数据云服务平台[J].科研信息化技术与应用,2015,6(2):47?55.
[2] 陆钢,杨新章,何震苇,等.电信运营商对容器技术的探索和思考[J].电信科学,2016,32(8):159?163.
[3] 王焱.基于K?means和蝙蝠算法的云计算虚拟机智能调度[J].现代电子技術,2016,39(21):21?23.
[4] 嵇可可.基于动态趋势预测蚁群算法的云计算资源调度优化研究[J].科技通报,2016,32(1):187?190.
[5] 宁彬,谷琼,吴钊,等.基于膜计算的蝙蝠算法在云计算资源调度的研究[J].计算机应用研究,2015(3):830?833.
[6] 丁玺润,陈梅,李晖.面向容器的云平台数据重分布策略研究[J].微型机与应用,2016,35(5):26?29.
[7] 赵保华.基于混合算法的云计算任务调度方法研究[J].现代电子技术,2016,39(12):70?72.
[8] 王晓冉,王伟,陈铁南,等.基于容器技术的性能测试服务资源管理[J].计算机应用与软件,2016,33(7):5?9.
[9] 赵宏伟.基于改进粒子群算法的云计算资源调度模型的研究[J].沈阳大学学报(自然科学版),2015,27(6):507?511.