一种基于云簇的虚拟机借调方法与流程

文档序号:21262543发布日期:2020-06-26 22:31阅读:230来源:国知局
一种基于云簇的虚拟机借调方法与流程

本发明涉及计算机技术领域,尤其涉及一种基于云簇的跨微云虚拟机借调方法。



背景技术:

随着云计算技术的发展,越来越多的用户选择将自身的应用和业务迁移到云上。云用户可以选择使用云服务运营商提供的即付即用、按需的、可弹性配置的公有云服务,也可以选择根据自身需求构建私有云设施。对于云服务运营商而言,云计算服务的弹性扩展是通过配置多个数据中心集群实现的。

私有云的构建是按照用户的使用需求来定制。考虑到要在高峰期时也能正常运行,私有云数据中心的规模需要按照用户的使用峰值进行配置。这样的配置方式存在以下问题:

首先,业务的需求信息难以准确预测。通过历史信息对高峰期进行准确无误的估计是不现实的,预测误差是必然存在的,这将导致较低标准的配置出现无法满足峰值需求,而较高标准的配置造成资源的闲置。

其次,随着用户自身业务规模的发展,其资源需求会发生改变。与公有云通常能在数分钟内完成扩容相比,私有云的扩容涉及设备的采购和安装,其过程按天或者周计,无法即时满足需求。另一方面,私有云在非高峰期时会有大量的资源闲置,造成资源浪费。

因此,需要一套支持在不同私有云(下称微云)之间进行虚拟机借调的解决方案,使得:(1)处于运行高峰期的微云可以通过向其它微云租赁虚拟机来缓解即时资源不足的情况;(2)低负荷运行的微云可以通过出租虚拟机获取额外的收益,减少资源的闲置。



技术实现要素:

为了解决个体微云在运行高峰期时资源紧缺,低负载运行时资源闲置无法被充分利用的问题,本发明提出了一种基于云簇的跨微云虚拟机借调方法。

本发明方法采用如下技术方案来实现:基于云簇的虚拟机借调方法,包括以下步骤:

s1、微云接收终端计算机的任务请求,将任务请求转化为一定数量和规格的虚拟机申请;

s2、微云在本地资源充足时,直接服务任务请求;在本地资源不足时,计算每个邻居微云可提供的虚拟机数量以及任务成本;

s3、微云根据跨微云虚拟机借调算法生成虚拟机借调方案;

s4、依据虚拟机借调方案,微云向租借方案列表中的邻居微云进行虚拟机借调。

优选地,在步骤s3中,跨微云虚拟机借调算法为:按照每个邻居微云的任务成本进行排序,优先选择任务成本最小的邻居微云添加入借调方案中,然后在剩余的邻居微云继续重复这一步骤,直至满足任务要求的虚拟机数量或者是没有可供选择的剩余邻居微云,最终获得本次的借调方案。

获得的借调方案中包括了一个或者若干个优选出来的邻居微云以及向该邻居微云借调的虚拟机数量;如果虚拟机借调算法运行正常结束,所有邻居微云借调的虚拟机数量总和等于任务请求需要借调的虚拟机数量;当虚拟机借调算法还没有运行正常结束而邻居微云列表为空时,不存在可供选择的剩余邻居微云,代表着邻居微云的资源无法满足借调要求,此时生成的借调方案为空。

本发明方法通过在云簇管理中心服务器上部署云簇管理系统,在微云服务器上部署云簇管理接口模块,由本地微云或者相邻微云满足本地终端计算机的任务需求。本发明设计了实现以上方法的详细体系结构、核心算法与满足服务的流程,支持在本地微云本地资源不足时,按照跨微云的虚拟机调度算法,从空闲微云处进行虚拟机借调,满足本地的用户任务需求,达到了在微云之间共享闲置资源的目的。与现有技术相比,本发明取得了如下技术效果:

1、本发明采用虚拟机借调的方式,在本地微云资源不足以满足任务需求时,根据资源调度策略,向邻居微云申请资源借调,使得任务仍然可以正常执行,且充分利用了空闲微云的闲置资源。

2、资源调度策略考虑了传输成本、使用成本和服务质量成本,在降低租借成本的同时,最大限度地降低了任务在邻居微云上执行与在本地执行的差异,提升了用户体验,降低任务的拒绝率。

3、采用负载预测技术,为本地微云预留了在下一个时间段可能到来的任务资源,在预测结果的基础上,向邻居微云通报剩余的可出租资源,减少了微云之间交叉租借的情况的发生。

4、本发明利用云计算资源统一共享理念、跨微云资源调度策略,为微云资源瓶颈提供了有效、低成本的解决方案,空闲微云也可以从闲置资源中获得了额外的收益,提高了整个系统中资源的利用率。

附图说明

图1是本发明基于云簇的跨微云虚拟机借调系统框架图;

图2是本发明的系统中各模块位置和数量关系图;

图3是本发明的一种基于云簇的跨微云虚拟机借调方法的流程图;

图4是本发明的计算跨微云虚拟机借调方案的算法流程图,其中(a)为虚拟机借调方案的总体流程图,(b)为借调方案中对邻居微云列表中是否有可用微云的判断流程图;

图5是本发明的跨微云的虚拟机借调流程的流程图;

图6是微云加入云簇系统的工作时序图;

图7是微云进行负载预测的工作时序图;

图8是微云维护邻居微云资源列表的工作时序图。

具体实施方式

下面结合附图及实施例对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例

如图1所示,本发明借调方法建立在基于云簇的跨微云资源借调系统上,系统的物理框架主要包括微云服务器(简称微云)、云簇管理中心服务器以及终端计算机。多个在地理位置上分散分布的、有可能由不同运营商运行的微云构建云簇系统;云簇的管理由一个独立运行的云簇管理系统和在各个微云的云簇管理接口模块共同组成。云簇管理中心服务器中部署了云簇管理系统,在整个云簇架构中处于中心位置,居中协调各微云服务器的信息沟通,统筹管理整个云簇的资源;微云服务器中部署了云簇管理接口模块,负责与云簇管理中心以及邻居微云的通信。

微云分散部署在靠近用户和任务的一侧,可与云簇管理系统直接通信,从云簇管理系统中获知其它微云的信息,从而与其它微云通信。也就是说,微云是在地理位置上分散分布的、有可能由不同运营商运行的相对独立的云计算平台,拥有自己的管理系统和本地的虚拟机资源池,接收本地用户(即终端计算机)的任务请求,为其提供任务要求的虚拟机。微云系统按照其设定通信时延阈值要求、带宽要求及相邻微云系统的资源确定其邻居微云集合。一个微云系统的邻居微云集合是指满足其设定要求、在网络层直接相连、并可按需提供借调服务资源的所有微云。一个微云可以直接与其邻居微云进行通信,以实现对虚拟机的借调。

也就是说,系统的逻辑架构包括部署在云簇管理中心服务器上的云簇管理系统,云簇管理系统上设有中心管理模块,部署在微云上的微云管理系统和虚拟机资源池,微云管理系统包括资源管理模块、资源预测模块、云簇管理接口模块、资源调度模块、任务管理模块及监控模块。任务管理模块负责接收用户在终端计算机上提交的任务请求,解析成满足任务所需的一定数量和规格的虚拟机请求,然后向资源调度模块进行申请。资源调度模块优先使用本地微云的虚拟机资源池来创建虚拟机,当本地资源无法满足全部申请时,用本地的剩余资源提供部分虚拟机,欠缺部分的虚拟机向邻居微云借调,最终在本地或者是邻居微云上生成相应的虚拟机。终端计算机(用户)通过远程桌面协议连接到这些虚拟机。

微云包括教育行业或企业搭建的云环境中的旧式或新型服务器,终端计算机包括学校实验室计算机或企业办公室的瘦终端、笔记本、台式机以及个人工作站等。虚拟机部署采取的虚拟化技术包括属于1型虚拟化的xen、vmwareesxi等,以及属于2型虚拟化的kvm、virtualbox、vmwareworkstation等。远程桌面连接协议包括rdp、vnc、spice等。

中心管理模块记录了整个云簇系统中全部微云的信息,负责居中协调整个云簇系统的信息沟通以及资源的宏观整合。当有新的微云加入云簇时,中心管理模块负责审核和认证,在认证通过后,向新加入的微云告知云簇拓扑中其它微云的相关信息,帮助其建立邻居微云列表。

资源管理模块负责维护各个微云的各项资源及资源实际使用情况。资源管理模块管理着物理服务器,即宿主机的资源,从而维护虚拟机资源池。

资源预测模块采用自回归移动平均模型(arima模型,autoregressiveintegratedmovingaveragemodel),依据微云以往的资源负载历史进行建模,进而使用模型来预测微云系统未来的资源需求。arima模型,自回归移动平均模型,是一种时间序列预测方法,适合处理和预测与时间序列相关的事件,可以根据微云以往的资源负载历史预测未来的资源需求。资源预测模块使用的以往的资源负载历史是指由本地用户提交的任务造成的资源负载,包括了在本地执行以及在邻居微云上借调的资源,但不包括邻居微云向本地申请借调的资源。

云簇管理接口模块负责不同系统间的通信,是实现云簇管理的重要模块,包括了微云与云簇管理系统的接口、微云与邻居微云的接口。微云与云簇管理系统的接口的功能包括:接入云簇、退出云簇、可借调资源信息报告与获取;微云与邻居微云的接口主要提供资源借调控制服务及资源借调的数据服务,其功能包括:建立邻居微云关系、取消邻居微云关系、查询邻居微云可借调资源量、回复邻居微云自身的可借调资源量、提交虚拟机借调申请、接受虚拟机借调申请、管理借调虚拟机。

资源调度模块负责在收到微云发送的任务请求时,从全局角度分配、调度资源满足用户的任务请求,可用于:(1)在本地微云的资源池中获取可用虚拟机满足任务需求;(2)通过微云与邻居微云之间的接口监听其它微云提交的资源借调请求;(3)通过微云与邻居微云之间的接口与邻居微云定时通信,更新邻居微云的资源列表;(4)当本地资源不足时,通过微云与邻居微云之间的接口向邻居微云申请资源借调。资源调度模块向邻居通报的可借用的资源量是根据资源预测模块的预测结果和本地资源池情况计算得到的,其计算方式是:当预测值大于当前任务负载(即负载将会加大)时,可借用资源量等于本地资源池的剩余资源量减去预测值与当前任务负载之差;当预测值小于当前任务负载(即负载将会减轻)时,可借用的资源量等于本地资源池的剩余资源量。当前任务负载的定义是指由本地用户提交的任务造成的资源负载,包括了在本地执行以及在邻居微云上借调的资源,但不包括邻居微云向本地申请借调的资源。

任务管理模块用于监听各个微云提交的任务请求、任务分配及任务执行情况。用户可以通过终端计算机向任务管理模块提交任务请求,得到任务的执行情况并对任务进行管理。

监控模块负责监控虚拟机的运行情况和服务质量,与虚拟机中的后台监控程序通信,收集虚拟机实时的运行情况,对虚拟机的服务质量进行记录和评估。

图2是资源借调系统各模块位置与数量关系图,阐述了各模块与物理设备的位置和数量关系,以及各模块之间的数量关系。安装了云计算平台的云端计算服务器通过虚拟化技术共同构成了虚拟机资源池,一个云端计算服务器可以虚拟化出多台虚拟机。用户的终端计算机可以通过远程桌面协议连接到虚拟机,一个终端计算机可以连接多台虚拟机。资源管理模块管理着本地微云的物理服务器,维护虚拟机资源池中各项资源以及资源的使用状态,与之是一对一的关系。资源预测模块与同一个微云当中的任务管理模块是一一对应的,根据任务模块中当前任务量进行下一时间段的任务量预测。监控模块负责监控所有虚拟机的运行状态,与虚拟机是一对多的关系。任务模块管理着资源池中生成的虚拟机,是一对多的关系;同时也接收来自用户终端(即终端计算机)的请求,与之也是一对多的关系。资源调度模块从资源预测模块和资源管理模块获取相关信息计算可借调资源、从任务管理模块接收虚拟机申请、通过云簇管理接口模块向其他微云进行通信。因此,资源调度模块与资源预测模块、任务管理模块、云簇管理接口模块以及资源管理模块是一对一的关系。

如图3所示,本发明基于云簇的虚拟机借调方法,包括以下步骤:

s1、微云接收本地用户(即终端计算机)的任务请求,将任务请求转化为一定数量和规格的虚拟机申请;

s11、微云接收本地用户的任务请求。

微云是一个云计算平台,对一定区域和范围内的用户提供云计算服务,微云可以是学校或企业搭建的私有云,也可以是云服务运营商搭建的公有云。任务请求,指用户为了完成某个特定的目标或工作提交的请求,如大数据处理、云桌面等。

s12、微云的任务管理模块负责处理任务请求,将任务请求转化为对一定数量和规格的虚拟机申请。任务管理模块负责解析用户的任务请求,得出所需的虚拟机的数量和规格,然后向资源调度模块申请对应的虚拟机。虚拟机规格,是指虚拟机对cpu资源、内存资源、存储资源以及带宽资源的要求。

s2、微云在本地资源充足时,直接服务任务请求;在本地资源不足时,计算每个邻居微云可提供的虚拟机数量以及任务成本;

s21、微云的资源调度模块收到虚拟机申请后,优先使用本地微云的虚拟机资源池来创建虚拟机。当本地资源无法满足全部虚拟机申请时,用本地的剩余资源提供部分虚拟机,欠缺部分的虚拟机向邻居微云借调。

s22、邻居微云的可借用资源信息保存在邻居微云资源列表中,由微云的资源调度模块负责更新和维护。本地微云的资源调度模块通过云簇管理接口模块定时与邻居微云通信,获取邻居微云的可借用资源信息。

即邻居微云资源列表,是指一个微云保存的相关的邻居微云可借资源指标的列表。此列表原始信息由云簇管理系统统一收集后推送到微云,微云确定其邻居形成相关的列表,包括了相关邻居微云的一些与虚拟机运行相关的资源和指标,即所述可借用资源信息,包括:cpu资源、内存资源、硬盘存储资源、带宽资源以及本地微云到该邻居微云的时延和数据传输速率、该邻居微云的虚拟机启动时间。

s23、计算邻居微云可提供的虚拟机数量,计算方式为:

(1)分别计算邻居微云的各项剩余资源指标除以虚拟机规格中对应指标的结果;

(2)然后取这些结果中的最小值作为该邻居微云可提供的虚拟机数量:

其中total_cpu指邻居微云可供借调的cpu资源,total_ram指邻居微云可供借调的内存资源,total_disk指邻居微云可供借调的硬盘资源,total_bandwidth指邻居微云可供借调的带宽资源,vm_cpu指虚拟机规格要求的cpu资源,vm_ram指虚拟机规格要求的内存资源,vm_disk指虚拟机规格要求的硬盘资源,vm_bandwidth指虚拟机规格要求的带宽资源。

s24、计算邻居微云的任务成本,邻居微云的任务成本等于传输成本、运行成本和服务质量成本的加权和:

cost_task=w1*cost_trans+w2*cost_use+w3*cost_qos

其中,w1、w2及w3是权重,w1+w2+w3=1,cost_task是任务成本,cost_trans是传输成本,cost_use是使用成本,cost_qos是服务质量成本。

(1)传输成本是指将任务镜像从本地微云转载到邻居微云,提供虚拟机服务所需要的传输开销。它与虚拟机转载方式、是否转载镜像及镜像大小、数据传输规模及带宽需求有关,同时也与该邻居微云可提供的虚拟机数量有关;

其中,p∈{0,1}表示是否需要转载镜像,0表示不需要,1表示需要;n表示该邻居微云可提供的虚拟机数量,image表示镜像大小,rate表示端到端的数据传输速度。

(2)运行成本是指任务虚拟机在邻居微云上运行时的开销,与任务时长和该邻居微云的虚拟机单位时长运行成本有关;

cost_use=time_use*price_use

其中,time_use是任务时长,price_use是该邻居微云上对应规格的虚拟机单位时间的收费。运行成本越低,则代表该邻居微云的虚拟机运行任务时的开销越低。

(3)服务质量成本是指邻居微云提供的虚拟机在用户服务质量方面的评估指标,与虚拟机的时延以及虚拟机的启动时间有关。虚拟机的时延是指本地微云到邻居微云的通信时延,虚拟机的启动时间是指邻居微云从创建虚拟机到虚拟机可供使用所经过的时间。通过分段函数,用时延与启动时间作为自变量,计算出相应的服务质量成本。

cost_qos=f1(delay)+f2(time_setup)

函数f1和f2是分段函数,用于计算虚拟机时延和虚拟机启动时间造成的服务质量成本,delay是本地微云到邻居微云的通信时延,threshold_delay是时延阈值;当时延小于时延阈值时,时延对服务质量成本的影响极小,所以算为0;当时延大于时延阈值时,时延对服务质量成本有影响,使用一次函数计算其成本。同理,虚拟机启动时间造成的服务质量成本亦是如此。服务质量成本越低,则代表该邻居微云能为用户提供更好的服务质量。

s3、微云根据跨微云虚拟机借调算法生成虚拟机借调方案;虚拟机借调方案如图4中的图(a)、(b)所示,包括以下步骤:

s31、获取邻居微云列表和本次借调所需的虚拟机数量,邻居微云列表包含步骤s2中计算得出的每个邻居微云的可借用虚拟机数量和任务成本,将每个邻居微云可借调的虚拟机数量以及任务成本作为结果添加入候选列表中。也就是说,邻居微云列表中包含参与借调方案的邻居微云,以及每个邻居微云需要借调的虚拟机数量。

s32、计算租借方案列表(也叫借调方案列表),将候选列表中的微云按任务成本大小进行升序排序。

s33、优先选择任务成本最小的邻居微云添加入租借方案列表中,同时记录对应的借调数量。

s34、在剩余的邻居微云中重复步骤s33,直至满足任务要求的虚拟机数量或者是邻居微云列表中无可供选择的邻居微云;若邻居微云列表中无可供选择的邻居微云且任务要求的虚拟机数量没有满足,则将租借方案列表清空。

s35、返回租借方案列表,若租借方案列表为空,则表示无可用的租借方案;若不为空,则表示有可用的租借方案。

s4、依据虚拟机借调方案,微云向租借方案列表中的邻居微云进行虚拟机借调。

虚拟机借调是指微云向租借方案列表中的邻居微云进行虚拟机借调的工作流程,包括了预申请、预申请确认、任务镜像传输、获取远程桌面控制凭证以及任务完成后的任务关闭步骤;如图5所示,具体包括:

s41、微云向邻居微云进行资源预申请。即申请方微云向邻居微云发送与任务相关的预申请信息,包括:虚拟机数量、虚拟机规格、使用时长、镜像校验信息。

s42、邻居微云收到预申请后,进行预申请的确认。即邻居微云收到预申请信息后,需要查看自身资源是否足够,确认本地是否有对应的任务镜像。若自身资源足够,则可以进行借调,为申请方进行资源的预留;若自身资源不足,则不可以进行借调,将会在返回信息中附上最新的可借调资源情况;若本地无对应镜像且资源足够,则需要进行镜像传输,将会在返回信息中要求申请方进行任务镜像传输。

s43、当存在一个邻居微云拒绝了预申请时,申请方微云需要重新规划租借方案(也叫借调方案),采用增量方式重新提交新的预申请。申请方微云将根据返回信息,更新自身的邻居微云资源列表,并统计欠缺的虚拟机数量,使用步骤s3中的算法计算增量式的租借方案列表。

s44、当申请方微云的所有预申请都成功后,将向参与借调的所有邻居微云进行申请的确认。若存在被拒绝的预申请同时又无可用的增量式租借方案时,代表着邻居微云无足够的资源可供借调,在该情况下申请方微云需要通知参与借调的邻居微云,取消预申请,并拒绝为用户的任务请求提供服务。

s45、收到申请确认后,邻居微云按照任务要求,使用任务镜像为申请方微云生成对应数量和规格的虚拟机,并向申请方微云返回虚拟机的连接许可,并赋予申请方对这些虚拟机的管理权限。

s46、任务虚拟机建立在邻居微云上,由邻居微云直接提供服务,申请方微云将本地用户(即终端计算机)的虚拟机连接请求通过连接凭证重定向到邻居微云的虚拟机中。

图6-8是本发明所涉及系统的相关工作时序图,也是本发明所涉及方法的具体实施过程。图6是微云加入云簇系统的工作时序图,图7是微云进行负载预测的工作时序图,图8是微云维护邻居微云资源列表的工作时序图。

图6是微云加入云簇系统的工作时序图,其主要涉及模块是云簇管理系统的中心管理模块和微云上的云簇管理接口模块、资源调度模块,步骤包括:

(1)微云的云簇管理接口模块向云簇管理系统的中心管理模块申请加入云簇(图6步骤1),中心管理模块对申请方微云进行资格审查(图6步骤2),审核通过后向其返回云簇系统中其它微云的信息(图6步骤3),包括其它微云的名称、通信地址以及资源容量。

(2)收到其它微云的名称与地址信息后,新加入的微云建立邻居微云列表。对其它微云依次进行计算通信延迟,按照一定的阈值确定能否成为邻居微云(图6步骤4),并对这些符合条件的邻居微云发送组成邻居微云申请(图6步骤5),邻居微云向云簇中心管理模块核查申请者的身份(图6步骤6、步骤7),在得到身份确认后向申请者返回申请结果,双方成为邻居微云(图3步骤8),将对方添加进自身的邻居微云列表中。

图7是微云进行负载预测的工作时序图,其主要涉及模块是微云上的资源预测模块、任务管理模块和资源调度模块,步骤包括:

微云的资源预测模块向任务管理模块获取当前时间段的任务负载情况(图7步骤1),任务管理模块向资源预测模块返回历史任务负载情况(图7步骤2),资源预测模块使用arima模型建立预测模型(图7步骤3),然后每隔固定时间,预测模块根据新的任务负载情况对当前预测模型进行修正并生成下一个时间段的任务负载预测(图7步骤4-7),预测模块向调度模块通知预测结果(图7步骤8)。

图8是微云维护邻居微云资源列表的工作时序图,其主要涉及模块是微云上的资源预测模块、资源调度模块、资源管理模块和云簇管理接口模块,步骤包括:

资源调度模块向资源预测模块和资源管理模块获取预测结果和本地资源池的使用信息(图8步骤1-3),调度模块计算可供借用的资源量(图8步骤4),然后通过云簇管理接口模块向邻居微云发送可借用的资源量(图8步骤5,6,7,),邻居微云的资源调度模块根据收到的信息更新自身的邻居微云资源列表(图8步骤8)。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其它的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1