当前位置: 首页 > 专利查询>吉林大学专利>正文

一种基于Docker集群的弹性任务调度系统及方法技术方案

技术编号:18657844 阅读:106 留言:0更新日期:2018-08-11 14:22
本发明专利技术涉及一种基于Docker集群的弹性任务调度系统及方法,属于计算机技术领域。包括构建Rancher集群,创建负载均衡器,创建任务调度器,创建资源监控器,创建弹性控制器,创建Docker私有镜像仓库。本发明专利技术通过Docker集群构建分布式的任务调度系统,能够有效避免单点故障的同时提升了物理资源利用率;能够根据系统负载动态地增加或减少业务服务器,具有很好的弹性,能够适应请求量突增等情况;可直接使用Docker镜像实现快速部署,当出现服务器宕机时,可快速恢复系统运行状态,具有极强的稳定性及可扩展性。

An elastic task scheduling system and method based on Docker cluster

The invention relates to a flexible task scheduling system and method based on Docker cluster, belonging to the field of computer technology. This includes building a Rancher cluster, creating a load balancer, creating a task scheduler, creating a resource monitor, creating an elastic controller, and creating a Docker private mirror repository. The distributed task scheduling system constructed by Docker cluster can effectively avoid single point of failure and improve the utilization ratio of physical resources; can dynamically increase or decrease the service servers according to the system load; has good flexibility and can adapt to sudden increase of requests; and can directly use Docker mirror reality. Now rapid deployment, when server downtime, can quickly restore the system running state, with strong stability and scalability.

【技术实现步骤摘要】
一种基于Docker集群的弹性任务调度系统及方法
本专利技术涉及计算机
,特别是涉及一种基于Docker集群的弹性任务调度系统。
技术介绍
经过多年的发展,云计算已经从研究阶段真正的步入大范围的使用阶段。包括搜索、电商、游戏等各种业务都已部署在数据中心,通过云计算的服务模式获得更高的资源利用率,更快的响应时间并且能够承担更大的并发访问量。因此,各大企业也争相整合现有硬件设备以搭建私有云,并将企业的业务迁入云端。在这种多业务的数据中心中,往往为每个业务提供多台运行相同业务的服务器,从而加大并行处理能力,加快请求响应速度。在这种前提下,任务调度成为数据中心需要解决的关键问题之一,它按照特定目标为用户请求选择合适的响应服务器。一般来说,任务调度可以通过硬件和软件两种方式来实现,硬件任务调度系统固化了调度算法,具有速度快的优点,但不够灵活且成本较高。而软件任务调度系统,虽然能够灵活的选择算法但是速度相对较慢且自身占用较多的服务器资源。此外,面对当前业务种类不断增加,突发访问量巨大等现实条件,这两种任务调度方法都存在着弹性较差的缺点,不能够根据业务请求量动态调整。在硬件实现方式中,当访问量突增时可能出现单点故障造成整个系统的瘫痪,为此只能通过增加硬件调度器的方式来实现横向扩展,这无疑将带来很高的成本,而当业务量下降时过多的硬件调度器将造成资源的浪费。相比之下,基于软件实现的任务调度可以通过简单的增加通用服务器来实现系统的扩展,甚至可以使用虚拟化技术来提升系统的资源利用率,但是传统的虚拟化技术自身将带来较大的额外开销,并且软件部署过程复杂,启动速度慢,不能够及时应对业务量的变化。Docker作为目前最流行的容器级虚拟化技术,其具有轻量、灵活、启动速度快等优点,天然的适合实现系统弹性,目前很多数据中心已经通过将业务部署在Docker上来实现自动化的伸缩,实现弹性集群,但在任务调度系统中尚未出现。另一方面,Docker集群技术发展迅速,以Kubernetes、Mesos、Swarm以及Rancher为代表的容器编排引擎不断完善,使Docker集群易于部署、维护和扩展。为此,基于Docker集群的应用将不断增加。
技术实现思路
本专利技术提供一种基于Docker集群的弹性任务调度系统及方法,是一种可自动伸缩的分布式任务调度系统,该系统不仅需要快速完成任务调度,还必须能够避免传统调度方式中存在单点故障的问题,更重要的是能够根据请求量大小完成调度系统的自动伸缩,并且方便在数据中心中快速完成部署及算法更新。本专利技术采取的技术方案是:一种基于Docker集群的弹性任务调度系统:包括:(1)构建Rancher集群:选择其中一台服务器作为RancherServer节点,而包括RancherServer自身在内的全部N台服务器都作为RancherAgent节点,系统中的所有功能容器都分布在RancherAgent节点上;(2)创建负载均衡器:负载均衡器利用Nginx实现,拉取Nginx的Docker镜像后,需要配置高可用(HA)特性,通过结合Keepalived服务,当MASTER节点宕机时,能够快速启动BACKUP节点,使业务中断对用户来说是透明的;(3)创建任务调度器:任务调度器基于开源的Haproxy实现;具体一种基于一致性哈希算法改进的新任务调度算法,在Haproxy源码中增加算法后通过源码编译安装。(4)创建资源监控器:资源监控器基于Python语言开发,作为运行在Ubuntu操作系统的守护进程存在,实时请求各任务调度器的资源实用情况;(5)创建弹性控制器;弹性控制器由一组启动、关闭Docker容器的命令脚本以及调用脚本的应用程序组成,利用实时获取的资源监控器数据,自动调用相应脚本;(6)创建Docker私有镜像仓库;Docker私有镜像库按照Docker官方推荐的私有库安装方式构建,同时优化了私有库的查询过程。本专利技术所述步骤(3)中新任务调度算法包括如下步骤:a)预处理,确定任务调度器副本数量:每隔固定时间间隔获取各任务调度器的CPU、内存及磁盘的使用率,分别用ci,mi,di,表示,其中i表示任务调度器序号,接下来,用如下公式计算每个任务调度器i的使用率加权和si:si=w1ci+w2mi+w3di其中w1+w2+w3=1,可以根据对不同资源的侧重进行调整,本专利技术中使用w1=0.4,w2=0.4,w3=0.2,得到每个任务调度器的使用率加权和si后,将该加权和从小到大排列,加权和排在前面,说明该任务调度器使用率较低,可以分配更多的请求。为此,按照此排序确定虚拟副本数,排在第一任务调度器设置10个副本,往后依次减少;b)将服务器映射到hash空间内:副本数确定后,用“任务调度器IP+副本标号”组成字符串,作为一个虚拟副本的唯一标识,接下来,利用Murmurhash算法计算该字符串的哈希值,最后利用取模运算将副本映射到0到232-1的环状哈希空间内;c)将服务器请求映射到哈希空间内:当请求到达时,利用发起客户端请求的IP作为请求标识,同样利用Murmurhash算法计算哈希值并映射到与任务调度器副本相同的哈希空间内;d)将请求分发到虚拟副本:由于哈希空间是环状的,请求映射到哈希空间后,从该请求出发,顺时针寻找,将请求映射到第一个虚拟副本上;e)将虚拟副本映射到物理服务器:根据虚拟副本的标识可以确定该副本所述的任务调度器IP,真正请求将被映射到具有该IP的任务调度器中。一种基于Docker集群的弹性任务调度方法,具体步骤包括:A、用户请求通过域名访问业务服务器时,请求会首先到达负载均衡器;B、负载均衡器使用轮询策略,以最小计算开销尽可能均匀的将请求转发给任务调度器;C、任务调度器使用预制的调度算法,真正将请求发送到相应的业务服务器,该算法要求能够充分利用所有业务服务器,降低每台服务器的负载,加快响应速度;D、在任务调度器工作期间,资源监控器周期性地向任务调度器发送资源使用状态请求信息,将返回的结果呈现给管理员,并在达到阈值时发出告警;E、弹性控制器接收从资源监控器推送的使用状态信息,根据当前状态调用相应脚本,启动或停止容器;F、Docker私有镜像库中存放所有模块的镜像,方便在某个模块出故障时快速恢复系统运行状态;在算法更新时,运行新调度算法的任务调度器将制成镜像上传至Docker私有镜像库,方便选择与应用。本专利技术所述一种基于Docker的弹性任务调度系统,基于Docker容器虚拟化技术、分布式集群技术以及微服务架构。所述系统特征在于利用微服务架构的思想,在Docker集群中创建提供特定服务的Docker容器,通过容器间彼此交互完成整个任务调度工作,同时确保系统的弹性、稳定性与易扩展性。其中最重要的特征是:本专利技术采用层级式的任务调度方法,将传统的任务调度工作分为两部完成。来自用户的请求首先到达负载均衡器,负载均衡器使用简单的轮询策略将请求转发给目标任务调度器,任务调度器利用预制的调度算法选择目标服务器,并将用户请求转发给该服务器。最终,目标服务器将响应结果按照相反的顺序返回给客户端。在该调度过程中,负载均衡器的目的仅仅是作为系统的入口,以最小计算开销将请求转发给任务调度器,而真正耗费计算资源的任务调度算法在分布式的任务本文档来自技高网
...

【技术保护点】
1.一种基于Docker集群的弹性任务调度系统,其特征在于,包括:(1)构建Rancher集群:选择其中一台服务器作为RancherServer节点,而包括RancherServer自身在内的全部N台服务器都作为RancherAgent节点,系统中的所有功能容器都分布在RancherAgent节点上;(2)创建负载均衡器:负载均衡器利用Nginx实现,拉取Nginx的Docker镜像后,需要配置高可用(HA)特性,通过结合Keepalived服务,当MASTER节点宕机时,能够快速启动BACKUP节点,使业务中断对用户来说是透明的;(3)创建任务调度器:任务调度器基于开源的Haproxy实现,基于一致性哈希算法改进的新任务调度算法,在Haproxy源码中增加算法后通过源码编译安装;(4)创建资源监控器:资源监控器基于Python语言开发,作为运行在Ubuntu操作系统的守护进程存在,实时请求各任务调度器的资源实用情况;(5)创建弹性控制器;弹性控制器由一组启动、关闭Docker容器的命令脚本以及调用脚本的应用程序组成,利用实时获取的资源监控器数据,自动调用相应脚本;(6)创建Docker私有镜像仓库;Docker私有镜像库按照Docker官方推荐的私有库安装方式构建,同时优化了私有库的查询过程。...

【技术特征摘要】
1.一种基于Docker集群的弹性任务调度系统,其特征在于,包括:(1)构建Rancher集群:选择其中一台服务器作为RancherServer节点,而包括RancherServer自身在内的全部N台服务器都作为RancherAgent节点,系统中的所有功能容器都分布在RancherAgent节点上;(2)创建负载均衡器:负载均衡器利用Nginx实现,拉取Nginx的Docker镜像后,需要配置高可用(HA)特性,通过结合Keepalived服务,当MASTER节点宕机时,能够快速启动BACKUP节点,使业务中断对用户来说是透明的;(3)创建任务调度器:任务调度器基于开源的Haproxy实现,基于一致性哈希算法改进的新任务调度算法,在Haproxy源码中增加算法后通过源码编译安装;(4)创建资源监控器:资源监控器基于Python语言开发,作为运行在Ubuntu操作系统的守护进程存在,实时请求各任务调度器的资源实用情况;(5)创建弹性控制器;弹性控制器由一组启动、关闭Docker容器的命令脚本以及调用脚本的应用程序组成,利用实时获取的资源监控器数据,自动调用相应脚本;(6)创建Docker私有镜像仓库;Docker私有镜像库按照Docker官方推荐的私有库安装方式构建,同时优化了私有库的查询过程。2.根据权利要求1所述的一种基于Docker集群的弹性任务调度系统,其特征在于,所述步骤(3)中新任务调度算法包括如下步骤:a)预处理,确定任务调度器副本数量:每隔固定时间间隔获取各任务调度器的CPU、内存及磁盘的使用率,分别用ci,mi,di,表示,其中i表示任务调度器序号,接下来,用如下公式计算每个任务调度器i的使用率加权和si:si=w1ci+w2mi+w3di其中w1+w2+w3=1,可以根据对不同资源的侧重进行调整,本发明中使用w1=0.4,w2=0.4,w3=0.2,得到每个任务调度器的使...

【专利技术属性】
技术研发人员:刘鹏徐高潮金镇君丁言李阳葛佳琦吴春毅
申请(专利权)人:吉林大学
类型:发明
国别省市:吉林,22

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

1