一种基于负载预测的Docker容器动态调度方法技术

技术编号:19634703 阅读:248 留言:0更新日期:2018-12-01 15:29
本发明专利技术提供一种基于负载预测的Docker容器动态调度方法。该方法先由Docker容器负载监控模块采集Docker容器的负载数据;再将负载数据存储在时间序列数据库;接着Docker容器负载预测模块从时间序列数据库获取和处理负载数据,结合ARIMA模型分析负载数据,并生成负载预测值;最后Docker容器调度模块根据负载预测值自动扩展Docker容器集群中的Docker容器个数。本发明专利技术将负载预测技术应用于Docker容器调度领域,实现Docker容器集群根据实时负载情况自动扩展,有效解决Docker容器集群不能因负载情况自动调整资源存在运行阶段负载能力不足的问题,提高Docker容器集群的可用性。

A Dynamic Scheduling Method for Docker Containers Based on Load Prediction

The invention provides a Docker container dynamic scheduling method based on load prediction. This method first collects the load data of Docker container by Docker container load monitoring module, then stores the load data in the time series database; then Docker container load forecasting module acquires and processes the load data from the time series database, combines ARIMA model analysis with load data, and generates load forecasting value; finally, Docker container load forecasting module generates load forecasting value. The container scheduling module automatically expands the number of Docker containers in the Docker container cluster according to the load prediction value. The invention applies load forecasting technology to the field of Docker container scheduling, realizes the automatic expansion of Docker container cluster according to real-time load conditions, effectively solves the problem that Docker container cluster can not automatically adjust resources due to load conditions, and has insufficient load capacity in operation stage, and improves the availability of Docker container cluster.

【技术实现步骤摘要】
一种基于负载预测的Docker容器动态调度方法
本专利技术属于Docker容器动态调度
,特别是提供一种基于负载预测的Docker容器动态调度方法。
技术介绍
微服务架构将一个应用拆分成多个独立的、具有业务属性的服务,每个服务运行在独立的进程中,服务间通过轻量级的通信机制互相协作,从而为终端用户提供业务价值。基于微服务架构的应用的部署方式包括基于云平台的手动部署、脚本部署等方式,而基于Docker容器的镜像部署是目前比较主流的一种方式。作为开源的应用容器引擎,Docker容器使得开发人员能够把应用及其依赖包封装至可移植的Docker容器中,然后将Docker容器发布到存在Docker容器环境的Linux机器上。Docker容器借助操作系统层的虚拟化实现资源的隔离,与宿主机共享操作系统,因此能够极大地提高资源利用率和提升I/O等方面的性能。为了维护基于Docker容器部署的应用的可用性,基于冗余备份技术构建高可用Docker容器集群,并且通过水平扩展技术扩展Docker容器集群是常用解决方案。基于目前现有的Docker容器编排部署技术构建的Docker容器集群,并不能根据实时的Docker容器负载情况自动调整资源,导致Docker容器集群在运行阶段负载能力不足。而部署Docker容器的过程包含下载镜像,部署镜像,启动Docker容器等一系列操作。当发现当前Docker容器资源不能满足负载需求时才开始申请资源,由于下载镜像等操作会导致部署新Docker容器的过程非常耗费时间,那么,在这段时间里,应用的可用性将无法得到保证。因此,本专利技术提供一种基于负载预测的Docker容器动态调度方法,而这种Docker容器动态调度方法执行效率高、减少人为干预,能够高效地维护应用的可用性。
技术实现思路
本专利技术的目的在于将负载预测技术应用到Docker容器动态调度,解决当前Docker容器集群不能因负载情况自动调整资源存在运行阶段负载能力不足的问题,为Docker容器集群的使用者提供一种基于负载预测的Docker容器动态调度方法。本专利技术的目的至少通过如下技术方案之一实现。一种基于负载预测的Docker容器动态调度方法,其包括:首先采集Docker容器的负载数据;然后将负载数据存储在时间序列数据库;接着从时间序列数据库获取和处理负载数据,结合ARIMA模型(AutoregressiveIntegratedMovingAveragemodel,自回归移动平均模型)对负载数据进行分析,生成负载预测值;最后根据负载预测值,扩展Docker容器集群中的Docker容器个数。进一步的,负载数据采集由Docker容器负载监控模块完成,Docker容器负载监控模块按照定时轮询的策略通过查询伪文件的方式采集Docker容器对CPU、内存、磁盘I/O和网络这四类资源的消耗状况作为Docker容器的负载数据,然后将负载数据与服务器节点和Docker容器信息相关联,存储在时间序列数据库中。进一步的,通过Docker容器负载预测模块从时间序列数据库获取Docker容器的负载数据,结合ARIMA模型对负载数据进行抽象,构建在线的Docker容器负载预测模型,然后通过该模型对Docker容器的负载数据进行分析,生成负载预测值。进一步的,通过Docker容器调度模块获取Docker容器负载预测模块生成的负载预测值,当负载预测值超过Docker容器集群使用者指定的Docker容器的负载最高阈值时,按照Docker容器集群使用者指定的步长自动扩展容器,直到Docker容器负载预测模块重新生成的负载预测值低于Docker容器的负载最高阈值。进一步的,将负载预测应用于Docker容器动态调度领域实现Docker容器集群根据实时负载情况自动扩展,解决Docker容器集群不能因负载情况自动调整资源存在运行阶段负载能力不足的问题,提高Docker容器集群的可用性。与现有的技术相比,本专利技术具有如下优点和技术效果:本专利技术将负载预测技术应用到Docker容器动态调度领域,Docker容器集群使用者通过简单的配置就可以实现Docker容器集群根据实时负载情况自动扩展,解决基于现有Docker容器编排部署技术构建的Docker容器集群不能因负载情况自动调整资源存在运行阶段负载能力不足的问题,提高Docker容器集群的可用性。附图说明图1为基于负载预测的Docker容器动态调度方法总体架构图;图2为Docker容器负载预测模块工作流程图;图3为Docker容器调度模块工作流程图。具体实施方式以下结合附图和实例对本专利技术的具体实施作进一步说明,但本专利技术的实施和保护不限于此,需指出的是,以下若有未特别详细说明之处,均是本领域技术人员可参照现有技术实现的。本实例提供一种基于负载预测的Docker容器动态调度方法,总体架构如图1所示,具体包括负载数据采集、负载数据存储、负载数据分析和Docker容器动态调度共四个流程。负载数据采集Docker容器集群使用者首先在每个服务器节点部署Docker容器负载监控模块,并且指定Docker容器负载监控模块采集负载数据的时间间隔,然后启动Docker容器负载监控模块。Docker容器负载监控模块采集Docker容器在CPU、内存、磁盘I/O和网络这四类资源的消耗情况作为Docker容器的负载数据。在Docker容器的CPU资源消耗情况中,CPU指标分为两类:一类体现Docker容器在CPU资源的使用情况,包括用户CPU消耗、系统CPU消耗、各个CPU消耗和总共CPU消耗;一类体现Docker容器在CPU资源的使用饱和程度,包括CPU限制执行数和CPU使用率被限制的总时间。Docker容器负载监控模块在CPU资源消耗方面采集的是Docker容器在CPU资源的使用情况。Docker容器的核心技术是控制组技术和命名空间技术。控制组由多个控制组子系统组成实现,其中cpuacct子系统用于统计各个控制组的CPU使用情况,包含如下三个接口:lcpuacct.stat:报告该控制组分别在用户态和内核态消耗的CPU时间。lcpuacct.usage:报告该控制组消耗的总CPU时间。lcpuacct.usage_percpu:报告该控制组在宿主机各个CPU上消耗的CPU时间,总和即cpuacct.usage的值。控制组的接口基于伪文件系统实现,因此,Docker容器负载采集模块通过cpuacct这个控制组子系统,以文件操作的方式获取实时的CPU负载情况。Docker容器负载监控模块以定时轮询的策略,按照Docker容器集群使用者指定的时间间隔,通过查询控制组伪文件获取Docker容器的负载数据。负载数据存储Docker容器负载监控模块每次采集到的负载数据是一条和时间戳相关的待记录新条目,需要对这些负载数据进行存储,以便Docker容器负载预测模块分析负载数据。Docker容器负载监控模块采用InfluxDB时间序列数据库对负载数据进行存储。InfluxDB存储的数据从逻辑上由measurement、tag组、field组以及一个时间戳组成。Measurement可以比作是关系型数据库中的数据表,Docker容器负载监控模块以用户CPU消耗、系统CPU消耗、总本文档来自技高网
...

【技术保护点】
1.一种基于负载预测的Docker容器动态调度方法,其特征在于包括:首先采集Docker容器的负载数据;然后将负载数据存储在时间序列数据库;接着从时间序列数据库获取和处理负载数据,结合ARIMA模型对负载数据进行分析,生成负载预测值;最后根据负载预测值,扩展Docker容器集群中的Docker容器个数。

【技术特征摘要】
1.一种基于负载预测的Docker容器动态调度方法,其特征在于包括:首先采集Docker容器的负载数据;然后将负载数据存储在时间序列数据库;接着从时间序列数据库获取和处理负载数据,结合ARIMA模型对负载数据进行分析,生成负载预测值;最后根据负载预测值,扩展Docker容器集群中的Docker容器个数。2.根据权利要求书1所述的一种基于负载预测的Docker容器动态调度方法,其特征在于负载数据采集由Docker容器负载监控模块完成,Docker容器负载监控模块按照定时轮询的策略通过查询伪文件的方式采集Docker容器对CPU、内存、磁盘I/O和网络这四类资源的消耗状况作为Docker容器的负载数据,然后将负载数据与服务器节点和Docker容器信息相关联,存储在时间序列数据库中。3.根据权利要求书1所述的一种基于负载预测的Docker容器动态调度方法,其特征在于通过Docker容器负载预测模块从时间序列数据库获取Docker容器的...

【专利技术属性】
技术研发人员:刘发贵郑少斌欧嘉敏
申请(专利权)人:华南理工大学
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1