基于负载预测的容器云平台智能资源优化方法与流程

文档序号:15981046发布日期:2018-11-17 00:20阅读:246来源:国知局
本发明涉及一种基于负载预测的容器云平台智能资源优化方法,属于云计算领域,更具体说属于容器云平台智能调度范畴。
背景技术
云计算技术迅速发展,基于云平台的应用也层出不穷。云平台通过虚拟化技术将计算机资源整合成资源池,以按需付费的方式实现了用户对计算资源的弹性需求。云计算发展至今,虚拟化技术一直是云平台中的关键技术,而容器技术则是近年来新兴的一种虚拟化技术。它的出现给传统虚拟化技术带来了挑战,为构建高效的云平台提供了新的思路。在docker,lxc,warden,openvz等众多容器技术中,人们最为看好的是docker容器技术。docker容器技术自开源以来,就受到了广泛的关注和讨论。docker容器技术是一种操作系统层虚拟化技术,与传统的虚拟机技术不同,它不需要运行客户机操作系统,容器以进程的形式运行在宿主机操作系统上,这也使得容器具有比传统虚拟机更轻便,灵活,快速部署等优点。由于众多新颖的特性以及项目本身的开放性,docker迅速获得包括google、microsoft、vmware等业界行业领导者的青睐,并对其提供支持。现今各大云计算运营商正在大量的构建基于docker容器技术的云平台。然而现在大规模的容器云平台普遍存在着资源利用率低,资源利用不均衡、资源调度滞后等问题。不同的容器需求不同维度的资源,当一个节点任意维度的资源耗尽时,如果有多维资源需求的容器被启动,那么该节点将不能满足创建容器的需求,也就不能运行此容器。在这种情况下,其他维度的剩余资源就被闲置了下来,导致资源利用率很低。此外,目前几乎所有云平台的资源调度方法都是基于监控的资源调度,集群通过实时监控各个节点和容器的负载情况,如果负载值大于某个阈值,就执行相应的调度算法,这种调度方法很容易出现资源调度滞后等问题,等到发现负载过重在进行调度时,一方面可能会导致服务质量下降,机器性能下降,严重会导致宕机。另一方面,可能就是某一个时间点负载过重,之后就正常了。如果这种情况还进行调度的话,将大大增加调度成本。技术实现要素:(一)解决的技术问题本发明解决的技术问题是:如何提供一种资源优化方法,用于解决现在容器云平台资源调度存在的资源利用率低,资源利用不均衡、资源调度滞后等问题。(二)技术方案(三)有益效果本发明提供了一种基于负载预测的容器云平台智能资源优化方法。该方法基于灰度模型,根据容器实例的历史负载,预测各容器实例下一个时间段的负载情况;根据某个节点上所有容器实例未来负载的资源需求情况,判断该节点资源需求是否过高或者过低;如果未来资源需求高于节点负载上限的情况,对该节点上的部分容器实例进行迁移,防止服务质量下降,机器性能下降。如果未来资源需求低于节点负载下限,为避免出现节点负载过重带来的性能损耗,执行调度将该节点容器实例迁移至其他节点,将该节点空置出来,降低资源开销,提高资源利用率。附图说明图1为容器云平台智能资源优化的主体架构;图2为基于灰度模型的负载预测流程图;图3为基于时间窗口的负载预测示意图;图4为调度策略生成算法的流程图;图5为调度方法的流程图;图6为负载对比图;图7为资源利用率对比图。具体实施方式为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。本发明容器云平台智能资源优化的主要架构如图1所示,该方法包括以下步骤:(1)实时获取容器云平台每个容器实例的多维度负载数据,并生成每个维度对应的负载时间序列。具体包括:(1-1)在容器云平台的每一个容器实例上运行cadvisor工具,实时获取容器节点的资源利用率数据,包括cpu、内存、磁盘、网络等多个维度,并发送给每个物理节点上的datacollection模块。(1-2)datacollection模块接收数据。带上物理节点编号,容器编号,以及维度名等信息形成一条json格式的负载数据。(1-3)将负载数据发送给调度策略生成节点的datacollection模块。(1-4)调度策略生成节点的datacollection模块接收来自各个物理节点的负载数据,解析出json数据的每个维度的负载值,根据物理节点编号,容器编号,以及维度名将负载值插入到相应的负载时间序列后边。(2)根据容器实例的历史负载数据,通过基于时序分析的负载预测技术,预测每个容器实例下一时间窗口的负载。如图2所示,具体包括:(2-1)对于容器实例的每个维度,从对应的历史负载时间序列获取最新的n*m个历史负载数据;划分成n个时间窗口,每个时间窗口中包含m个历史负载数据;n的取值一般是30,m为时间窗口大小,根据实际情况而定,一般和数据时间周期大小一样。(2-2)如图3所示,提取每个时间窗口中第i个历史负载数据,构成一个时间序列每个时间窗口中包含m个历史负载数据,所以形成m个时间序列为(2-3)为保证gm(1,1)模型方法的有效性,需要对数据做必要的检验处理。计算序列的级比。方法是:其中,表示第k个时间窗口中第i个历史负载数据。如果所有的级比都落在可容覆盖区间内,则数列可以建立gm(1,1)模型且可以进行灰色预测。(2-4)如果数据序列不满足gm(1,1)模型方法的要求,对数据做适当的变换处理,如平移变换,通过取不同的c使数据序列的级比都落在可容覆盖内。(2-5)对检验处理后的序列使用公式进行一次累加生成新的序列(2-6)建立gm(1,1)模型为其中α为发展灰度,μ为内生成控制灰度。(2-7)用回归分析求得α,μ的估计值。设利用最小二乘法求解得:其中(2-8)得到相应的白化模型为:(2-9)求解微分方程,即可得到预测模型为:(2-10)对预测模型值累减,得到预测值:(2-11)通过对m个时间序列进行预测,得到容器实例下一个时间窗口的m个时刻的负载预测值为(2-12)通过以上方法对cpu、内存、磁盘、网络等多个维度的负载进行预测,得到容器实例的每个维度在下一个时间窗口的m个时刻的负载预测值。(3)根据物理节点上各个容器实例在下一个时间窗口的负载预测值,计算各个物理节点下一个时间窗口的综合负载,根据综合负载为物理节点设置负载标志。(3-1)获取待分析的物理节点上所有的容器实例中的各个维度的下一个时间窗口的m个时刻的负载预测值(3-2)对待分析的物理节点上所有容器实例同一维度的对应时刻负载预测值进行求和,即为q维度的第i个时刻负载预测值,为物理节点上第p个容器实例中维度q的第i个时刻负载预测值,s表示该物理节点上容器实例的个数;cq表示该物理节点在不运行任何容器实例时维度q的负载值。获得物理节点相应维度下一个时间窗口的m个时刻的负载预测值(3-3)根据λq是q维度的权重,为物理节点q维度的第i个时刻负载预测值,获得待分析物理节点下一个时间窗口的m个时刻的综合负载值(3-4)根据为各个物理节点下一个时间窗口的m个时刻设置负载标志。负载值与负载状态的对应关系为:(4)如图4所示,执行容器云平台调度策略生成算法,生成调度策略。即决定迁移哪些容器实例,迁移到那个物理节点等。(4-1)对于下一个时间窗口的m个时刻存在color=red负载状态的物理节点,根据综合负载值wload的变化趋势判断该物理节点在未来时间t(t一般取5min)内的负载变化趋势。计算公式如下:用以判断接下来负载失衡是否会加剧。若负载失衡将会加剧,则标示该物理节点为需要执行调度的物理节点。(4-2)对于下一个时间窗口的m个时刻存在color=green负载状态的物理节点,若在未来时间t内一直处于green状态,则标示该物理节点为需要执行调度的物理节点。(4-3)对于下一个时间窗口的m个时刻存在color=red负载状态的需要执行调度的物理节点,以最少容器实例迁移数为目标函数,以迁移后该物理节点在时间t内的负载状态一直为color=blue为约束条件,利用动态规划算法,找到需要迁移的容器实例。(4-4)对于某一个需要迁移的容器实例,以迁移后目标物理节点在时间t内的综合负载wload平均值最大为目标函数,以迁移后时间t内该物理节点的负载状态一直为color=blue为约束,同样利用动态规划算法,寻找容器实例迁移的最佳目标物理节点。如果没有找到目标节点,说明集群中没有符合迁移条件的物理节点,则集群需要增加物理节点,并将增加的物理节点作为容器实例迁移的目标物理节点。(4-5)对于下一个时间窗口的m个时刻存在color=green的需要执行调度的物理节点,对该节点上的每一个容器实例执行44中寻找迁移的目标物理节点算法,确定迁移的最佳目标物理节点。(46)对于每一个需要迁移的容器实例执行调度策略生成算法,最终生成完整的调度策略。(5)如图5所示,执行调度策略,对每一个需要迁移的容器实例,调用容器云平台的调度接口实现容器实例调度迁移,最终完成整个容器云平台的调度。具体包括:(5-1)用export命令将待迁移的容器实例打包,并上传到集群的本地容器包库。(5-2)在目标物理节点上,从集群的本地容器包库上获取到上面生成的容器包,用import命令导入成镜像,并用这个镜像部署一个应用容器实例。(5-3)将保存原容器实例运行数据的数据卷容器挂载到新产生的容器实例,并启动运行该容器实例。(5-3)待新产生的容器实例运行成功后,删除原来节点上的容器实例,迁移成功。(5-4)待所有调度策略执行完,集群将之前负载标志为color=green的空闲物理节点剔除掉。(6)试验效果(6-1)本试验搭建了2个docker集群,每个集群包括1个master节点和5个node物理节点。其组成如表1所示。表1主机名ip地址配置情况master192.168.0.101cpu:intelcorei5四核;内存:8gbnode1192.168.0.102cpu:intelcorei5四核;内存:4gbnode2192.168.0.103cpu:intelcorei5四核;内存:4gbnode3192.168.0.104cpu:intelcorei5四核;内存:4gbnode4192.168.0.105cpu:intelcorei5四核;内存:4gbnode5192.168.0.106cpu:intelcorei5四核;内存:4gb(6-2)分别在两个集群上运行如表2所示的容器实例。表2(6-3)集群1使用kubernetes来管理集群,在集群2的master节点上运行基于负载预测的容器云平台智能资源优化方法中的decision模块,loadforcase模块,datacollection模块以及容器调度模块,在5个node节点上分别运行datacollection模块。(6-4)如图6所示,分别得到了两个集群各个节点负载情况,集群1的各个节点负载不均衡,节点1的负载已经高达85%,已经超过了正常范围,节点5的负载只有12%。集群2的各个节点负载比较均衡,节点1降低到71%,属于正常范围内;其中接点5的负载为0,是因为节点负载太低,将其上的容器实例迁移到别的节点上去了。由此可以看出基于负载预测的容器云平台智能资源优化方法能有效解决数据中心的负载不均衡问题。(6-5)如图7所示,分别计算了两个集群的cpu,内存,硬盘的资源利用率,从图中可以看出,集群1的各个维度的使用率普遍较低,集群2的各个维度的使用率较集群1都用明显的提高,由此可以看出基于负载预测的容器云平台智能资源优化方法能有效解决数据中心资源利用率低的问题。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1