一种容器和虚拟机混合云环境下的负载动态迁移方法与流程

文档序号:18899390发布日期:2019-10-18 21:43阅读:286来源:国知局
一种容器和虚拟机混合云环境下的负载动态迁移方法与流程

本发明涉及负载动态迁移领域,特别涉及一种容器和虚拟机混合云环境下的负载动态迁移方法。



背景技术:

随着容器技术的快速发展,越来越多的企业选择了容器化,容器化的计算平台正成为一种新的潮流。相较于传统的云计算虚拟化,即通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,容器虚拟化拥有更加快捷和轻便的部署特性。

采用容器已经成为大势所趋,但是在生产环境中,将容器部署在虚拟机上还是物理机上,也是一个需要思考的问题。vmware公司对于这一问题进行了实验探究,实验结果表明:容器部署在虚拟机上与容器部署在物理机上差异并不大,几乎不存在较大的性能损耗,相反,由于部署在虚拟机上,还能吸收虚拟机的一部分优点:与虚拟机相结合地部署容器能够实现整个服务组中的服务彼此隔离而且运行在一个虚拟机中。这种方式通过引入两个层级:容器与虚拟机,而提升了分布式应用程序的安全。另外这种方式达成了更有效的资源使用并且可以为所定义的隔离和安全目标在减少虚拟机数量的同时增加容器的密度。

对于实际生产中,容器部署在虚拟机上这一环境下,经常会出现负载不均衡的情况,具体表现为服务器的cpu利用率显著提高,我们将出现此类情况的服务器称为过载服务器。此时,需要对过载服务器上的虚拟机或者容器进行迁移。

近几年,对于容器虚拟化环境中的迁移研究,已经取得了一些进展。sarehfotuhipiraghaj等人提出了一种云数据中心节能的容器整合框架和算法,通过在虚拟机上整合容器,来提升服务器的能源效率。聂虎卿提出了一种基于最小迁移量的容器迁移方法,对容器的增长态势进行判断,首先选取处于增长态势的容器,然后再在上述容器中,选择负载较大的容器进行迁移。

虽然近几年在容器虚拟化环境下的迁移,已经有了一些进展,但是对于容器部署在虚拟机上这一情况下的研究,还不够完善。对于此种环境下,通过容器迁移或虚拟机迁移达到负载均衡,需要解决以下的几个问题:

(1)由于虚拟机上不止运行着容器,还运行着其他进程,对于服务器出现过载的情况,需要判断究竟是容器还是虚拟机的运行导致服务器出现过载。

(2)由于容器的负载时刻都在变化,单纯对容器历史负载数据进行回归分析,就判断容器处于增长或者下降态势,不太准确。对于待迁移容器的选择,需要有更好的方法。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提供一种容器和虚拟机混合云环境下的负载动态迁移方法,该方法首先对虚拟机负载和容器负载进行判断,找出对服务器负载影响较大的部分,若虚拟机影响较大,则对虚拟机整体进行迁移,若容器影响较大,则对容器历史负载数据进行分析,对接下来一段时间容器负载进行预测,选择接下来一段时间内处于增长态势的容器进行迁移。

本发明的目的通过以下的技术方案实现:

一种容器和虚拟机混合云环境下的负载动态迁移方法,包含以下步骤:

选择待迁移服务器步骤:运用静态阈值法,选择出过载的服务器;

选择待迁移虚拟机步骤:选择过载服务器上负载较高的虚拟机,将其加入待迁移虚拟机列表mig_vmlist;

判断迁移容器还是虚拟机步骤:判断过载服务器上,出现过载的原因是由于虚拟机负载影响较大还是容器负载影响较大:如果是虚拟机负载影响较大,下一步迁移虚拟机;如果是虚拟机上的容器负载影响较大,下一步选择容器进行迁移;

选择待迁移容器步骤:通过最小二乘法的拟合方法,对容器的cpu利用率进行预测,选择容器负载处于上升态势的容器,加入到待迁移容器列表mig_clist中,迁移其中的容器;

容器迁移步骤:对于目标服务器上没有虚拟机的情况,首先创建虚拟机,然后将待迁移容器列表中的容器迁移到新创建的虚拟机上;对于目标服务器上存在虚拟机的情况,直接将待迁移容器列表中的容器迁移到目标服务器的虚拟机上;

虚拟机迁移步骤:将待迁移虚拟机列表中虚拟机采用混合拷贝的方法迁移到目标服务器上。

所述选择待迁移服务器步骤具体包括:

步骤1.1、在t时间段内,每隔时间t,收集每个物理机hi,在tμ时刻的cpu利用率

步骤1.2、设置服务器负载阈值h*,如果一段时间内物理机平均负载大于h*,将其标记为过载服务器。

所述选择待迁移虚拟机步骤,具体为:

步骤2.1、在t时间段内,每隔时间t,收集tμ时刻过载服务器上虚拟机vj的cpu利用率

步骤2.2、对于每台虚拟机vj每个时刻tμ的cpu利用率求均值,得到计算方法如下:

步骤2.3、对于每台虚拟机的求所有虚拟机的cpu利用率均值计算方法如下:

其中,为服务器i上的虚拟机数量;

步骤2.4、将此服务器上cpu利用率大于的虚拟机,加入到待迁移列表mig_vmlist中,将mig_vmlist中的虚拟机按照cpu利用率从高到低排序,总是优先将cpu利用率最大的虚拟机作为待迁移对象。

所述判断迁移容器还是虚拟机步骤,具体为:

步骤3.1、在t时间段内,每隔时间t,收集待迁移虚拟机列表mig_vmlist中cpu利用率最大的虚拟机vj上每个容器的cpu利用率然后得到虚拟机vj上所有容器的总cpu利用率其计算方法如下:

其中,为虚拟机vj上容器的数量;

步骤3.2、对相同时刻tμ的虚拟机vj上所有容器的总cpu利用率与虚拟机vj的cpu利用率分别同服务器的cpu利用率进行余弦相似度计算,余弦相似度的计算公式如下:

其中,γ(c,h)为虚拟机vj上所有容器cpu利用率之和与服务器cpu利用率的相似度计算结果,γ(v,h)为虚拟机vj的cpu利用率与服务器cpu利用率相似度计算结果;

步骤3.3、比较γ(c,h)和γ(v,h)的大小,若γ(v,h)较大,选取待迁移虚拟机列表中第一个虚拟机进行迁移,执行虚拟机迁移步骤,若γ(c,h)较大,则执行选择待迁移容器步骤。

所述选择待迁移容器步骤,具体为:

步骤4.1、对待迁移虚拟机vj上收集到的所有容器在tμ时刻的cpu利用率求得均值其计算方法如下:

其中,为虚拟机vj上容器的数量;

步骤4.2、采用非线性回归预测方法,对t时间段内的容器cpu利用率和时间进行拟合,其中采用的回归预测模型如下:

y=m0+m1x+m2x2

其中,y为容器cpu利用率;x为时间;m0、m1和m2为模型系数;

然后将非线性回归转换为线性回归,其转换规则如下:

z1=x

z2=x2

y=m0+m1z1+m2z2

然后根据其每个时刻tμ和所对应的容器cpu利用率的训练数据,计算损失函数,寻找的目标函数让损失函数尽可能小,损失函数模型如下:

构造最小二乘法回归参数的估计值模型,来确定参数的值,其估计值模型如下:

在求得参数之后,构造每一个容器cpu利用率的回归曲线模型;

步骤4.3、利用容器ck的cpu利用率的回归曲线模型,预测下一个t时间段内,每个时刻tμ的cpu利用率,将其与进行比较,若收集到的cpu利用率大于的次数,超过则将此容器加入到待迁移容器列表mig_clist中;

步骤4.4、对mig_clist中的容器进行迁移,执行容器迁移步骤。

所述容器迁移步骤,具体为:

首先判断目标服务器是否存在着虚拟机,若不存在,则在目标服务器上创建虚拟机,然后选取mig_clist中的容器进行基于预拷贝的迁移;若存在,则直接选取mig_clist中的容器,进行基于预拷贝的迁移。

所述虚拟机迁移步骤,具体为:

对于待迁移虚拟机列表mig_vmlist中的虚拟机,进行基于混合拷贝的虚拟机迁移。

本发明与现有技术相比,具有如下优点和有益效果:

本发明提出的动态迁移方法,该方法首先周期性收集服务器负载,利用静态阈值法,判断服务器是否过载,若出现过载,收集同时刻部署在过载服务器上的虚拟机负载和部署在这些虚拟机上的容器负载,将服务器负载分别与虚拟机负载、容器负载进行余弦相关性分析,若虚拟机与物理机负载相关性较大,表明虚拟机运行对服务器出现过载影响较大,则选择负载较大的虚拟机进行迁移;若容器与物理机负载相关性较大,表明容器运行对服务器出现过载影响较大,则迁移容器。然后,对于迁移容器的选择,采用了回归分析预测的方法,对负载呈上升态势的容器进行迁移。本发明通过利用余弦相关性来更准确地分析出对过载影响更大的虚拟机或容器资源,使得服务器集群更好地达到负载均衡。

附图说明

图1为本发明所述一种容器和虚拟机混合云环境下的负载动态迁移方法的流程图。

图2为基于预拷贝的容器迁移步骤图。

图3为基于混合拷贝的虚拟机迁移步骤图。

具体实施方式

下面结合说明书附图及实例以对本发明一种容器和虚拟机混合云环境下的负载动态迁移方法作进一步详细说明。

本发明的设计方案强调,在迁移过程中,精准选择需要迁移的部分,减少不必要的迁移。

实施例一

如图1所示,为本发明的流程图,一种容器和虚拟机混合云环境下的负载动态迁移方法,具体方法步骤如下:

(1)首先利用静态阈值法,将服务器负载大于此阈值的服务器选择出来,标记为过载服务器。

(2)接着对于过载服务器上的虚拟机进行选择,计算出此服务器上所有虚拟机cpu利用率的均值,选择某一时间段内平均cpu利用率大于此均值的虚拟机,将其加入到待迁移虚拟机列表中。

(3)对过载服务器上的虚拟机和容器的负载进行判断,采用余弦相似性的分析方法,对同时刻的服务器cpu利用率分别与虚拟机cpu利用率、容器cpu利用率进行相关性分析,然后对两者的相关性进行比较,若服务器和虚拟机的相关性较强,则对待迁移虚拟机列表中的虚拟机进行热迁移,执行步骤(6),若服务器和容器的相关性较强,则对待迁移虚拟机上的容器进行选择,执行步骤(4)。

(4)收集待迁移虚拟机上的容器,在一个时间段t内的n个时刻的cpu利用率,求得t时间段内的均值。对t时间段内的数据进行回归分析,对每一个容器构建其cpu利用率的拟合函数,然后对接下来t时间段的内的n个时刻cpu利用率进行预测,对这n个数据,若出现大于上一t时间段的cpu利用率均值的次数超过则加入到待迁移容器列表中,进行容器热迁移,执行步骤(5)。

(5)对目标服务器进行检测,若目标服务器上存在有虚拟机,直接进行基于预拷贝的容器迁移;若目标服务器上不存在虚拟机,先创建虚拟机,再进行容器迁移。

(6)对待迁移虚拟机列表中的虚拟机进行基于混合拷贝的虚拟机迁移。

如图2所示,为基于预拷贝的容器迁移的步骤图。其具体过程为:首先待迁移容器在虚拟机上继续运行,将这些容器的内存标记为脏页;然后采用预拷贝策略,循环迭代拷贝内存脏页直到符合中止条件;此时将剩余内存脏页一次性拷贝完毕;拷贝容器的cpu状态与i/o状态;最后在目的服务器上的虚拟机开启容器,关闭待迁移虚拟机上的容器。

如图3所示,为基于混合拷贝的虚拟机迁移的步骤图。其具体过程为:首先采用预拷贝的初次迭代,虚拟机在过载服务器上继续运行的同时,将待迁移虚拟机的全部内存拷贝到目的主机;经过第一轮的拷贝过后,待迁移虚拟机将被暂停,目的服务器上,待迁移虚拟机的处理状态和不可分页内存被拷贝过来;在目的主机上开启虚拟机,采用延迟拷贝的策略继续拷贝内存页面,即目的服务器上的虚拟机访问到未被推送过来的页面时,再请求过载服务器上的虚拟机将这些页面发送过来。

实施例二

一种容器和虚拟机混合云环境下的负载动态迁移方法,应用本发明到容器和虚拟机混合云环境中,其中容器采用的是docker,利用kubernetes对容器进行管理,虚拟机与服务器系统都采用centos7。

在某时间段t内,利用脚本程序,执行sar–utn命令,每隔t时刻,一共查看n个时刻的服务器和虚拟机的cpu利用率。同一时间,在kubernetes的master节点上,调用各个slave节点上cadvisor的restapi,获取监控到的每个时刻的容器cpu利用率。

对收集到的集群服务器负载,利用静态阈值法,将服务器cpu利用率大于静态阈值的服务器标记为过载。在过载服务器上,将cpu利用率大于此台服务器上虚拟机cpu利用率均值的虚拟机,加入到待迁移虚拟机列表中。

接下来利用余弦相关性分析,对同时刻的服务器cpu利用率分别与虚拟机cpu利用率、容器cpu利用率进行相关性分析,然后对两者的相关性进行比较:

(1)若服务器和虚拟机的相关性较强,则对待迁移虚拟机列表中的虚拟机进行基于混合拷贝的热迁移,首先采用预拷贝的初次迭代,虚拟机在过载服务器上继续运行的同时,将待迁移虚拟机的全部内存拷贝到目的主机;经过第一轮的拷贝过后,待迁移虚拟机将被暂停,目的服务器上,待迁移虚拟机的处理状态和不可分页内存被拷贝过来;在目的主机上开启虚拟机,采用延迟拷贝的策略继续拷贝内存页面,即目的服务器上的虚拟机访问到未被推送过来的页面时,再请求过载服务器上的虚拟机将这些页面发送过来。

(2)若服务器和容器的相关性较强,则对待迁移虚拟机上的容器进行选择,对t时间段内的数据进行回归分析,对每一个容器构建其cpu利用率的拟合函数,然后对接下来t时间段的内的n个时刻cpu利用率进行预测,对这n个数据,若出现大于上一t时间段的cpu利用率均值的次数超过则加入到待迁移容器列表中,进行容器热迁移。首先待迁移容器在虚拟机上继续运行,将这些容器的内存标记为脏页;然后采用预拷贝策略,循环迭代拷贝内存脏页直到符合中止条件;此时将剩余内存脏页一次性拷贝完毕;拷贝容器的cpu状态与i/o状态;最后在目的服务器上的虚拟机开启容器,关闭待迁移虚拟机上的容器。

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

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