CN108388472A - 一种基于Docker集群的弹性任务调度系统及方法 - Google Patents
一种基于Docker集群的弹性任务调度系统及方法 Download PDFInfo
- Publication number
- CN108388472A CN108388472A CN201810173004.8A CN201810173004A CN108388472A CN 108388472 A CN108388472 A CN 108388472A CN 201810173004 A CN201810173004 A CN 201810173004A CN 108388472 A CN108388472 A CN 108388472A
- Authority
- CN
- China
- Prior art keywords
- task
- docker
- request
- task dispatcher
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于Docker集群的弹性任务调度系统及方法,属于计算机技术领域。包括构建Rancher集群,创建负载均衡器,创建任务调度器,创建资源监控器,创建弹性控制器,创建Docker私有镜像仓库。本发明通过Docker集群构建分布式的任务调度系统,能够有效避免单点故障的同时提升了物理资源利用率;能够根据系统负载动态地增加或减少业务服务器,具有很好的弹性,能够适应请求量突增等情况;可直接使用Docker镜像实现快速部署,当出现服务器宕机时,可快速恢复系统运行状态,具有极强的稳定性及可扩展性。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于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容器,通过容器间彼此交互完成整个任务调度工作,同时确保系统的弹性、稳定性与易扩展性。其中最重要的特征是:本发明采用层级式的任务调度方法,将传统的任务调度工作分为两部完成。来自用户的请求首先到达负载均衡器,负载均衡器使用简单的轮询策略将请求转发给目标任务调度器,任务调度器利用预制的调度算法选择目标服务器,并将用户请求转发给该服务器。最终,目标服务器将响应结果按照相反的顺序返回给客户端。在该调度过程中,负载均衡器的目的仅仅是作为系统的入口,以最小计算开销将请求转发给任务调度器,而真正耗费计算资源的任务调度算法在分布式的任务调度器中实现。通过分担系统入口的计算压力,最大程度上避免了单点故障。
此外,所述系统为了能够具有更好的弹性、稳定性,能够完美应对请求量突增等复杂情况。除上述负载均衡器与任务调度器外,系统还包括资源监控器、弹性控制器以及Docker私有镜像库三个辅助功能模块。其中,资源监控器负责监控所有任务调度器的负载情况,为弹性控制器提供控制依据,并且根据预先确定的阈值触发告警。弹性控制器负责根据资源监控模块获得的实时数据来启动或关闭执行任务调度的容器,实现任务调度器的弹性伸缩,以适应请求量的变化。Docker私有镜像库是为了实现快速的扩展,将任务调度器打包成镜像存入本地私有镜像库,新的服务器节点中可以快速拉取镜像,降低容器启动延迟,实现快速扩展。当更新调度算法时,只需要将实现新算法的容器存入Docker私有镜像库,通过配置拉取新的容器就能够方便地实现算法的更新。所有模块均由提供指定功能的Docker容器实现,由于Docker容器具有轻量的特点,各模块均能够实现秒级启动,从而为系统提供了极强的弹性,以及快速实现系统部署及算法扩展的能力。
本发明的有益效果是:
本发明通过Docker集群构建分布式的任务调度系统,能够有效避免单点故障的同时提升了物理资源利用率。
本发明能够根据系统负载动态地增加或减少业务服务器,具有很好的弹性,能够适应请求量突增等情况。
本发明可直接使用Docker镜像实现快速部署,当出现服务器宕机时,可快速恢复系统运行状态,具有极强的稳定性及可扩展性。
附图说明
图1是本发明一种基于Docker集群的弹性任务调度系统结构图;
图2是基于Docker集群的弹性任务调度系统组成模块图;
图3是基于Docker集群的弹性任务调度系统部署流程图。
具体实施方式
一种基于Docker集群的弹性任务调度系统:
(1)构建Rancher集群:选择其中一台服务器作为RancherServer节点,而包括RancherServer自身在内的全部N台服务器都作为RancherAgent节点,系统中的所有功能容器都分布在RancherAgent节点上;
(2)创建负载均衡器:负载均衡器利用Nginx实现,拉取Nginx的Docker镜像后,需要配置高可用(HA)特性,通过结合Keepalived服务,当MASTER节点宕机时,能够快速启动BACKUP节点,使业务中断对用户来说是透明的;
(3)创建任务调度器:任务调度器基于开源的Haproxy实现,基于一致性哈希算法改进的新任务调度算法,在Haproxy源码中增加算法后通过源码编译安装;
所述新任务调度算法包括如下步骤:
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的任务调度器中;
(4)创建资源监控器:资源监控器基于Python语言开发,作为运行在Ubuntu操作系统的守护进程存在,实时请求各任务调度器的资源实用情况;
(5)创建弹性控制器;弹性控制器由一组启动、关闭Docker容器的命令脚本以及调用脚本的应用程序组成,利用实时获取的资源监控器数据,自动调用相应脚本;
(6)创建Docker私有镜像仓库;Docker私有镜像库按照Docker官方推荐的私有库安装方式构建,同时优化了私有库的查询过程。
一种基于Docker集群的弹性任务调度方法,具体步骤包括:
A、用户请求通过域名访问业务服务器时,请求会首先到达负载均衡器;
B、负载均衡器使用轮询策略,以最小计算开销尽可能均匀的将请求转发给任务调度器;
C、任务调度器使用预制的调度算法,真正将请求发送到相应的业务服务器,该算法要求能够充分利用所有业务服务器,降低每台服务器的负载,加快响应速度;
D、在任务调度器工作期间,资源监控器周期性地向任务调度器发送资源使用状态请求信息,将返回的结果呈现给管理员,并在达到阈值时发出告警;
E、弹性控制器接收从资源监控器推送的使用状态信息,根据当前状态调用相应脚本,启动或停止容器;
F、Docker私有镜像库中存放所有模块的镜像,方便在某个模块出故障时快速恢复系统运行状态;
在算法更新时,运行新调度算法的任务调度器将制成镜像上传至Docker私有镜像库,方便选择与应用。
在本发明的一个较佳实施例中,任务调度系统基于6台Dell Poweredge R730物理服务器搭建,配置为8核CPU、32GB内存、1TB硬盘。为了方便容器管理,在该实施例中利用Rancher实现容器编排,Kubernets、Swarm等同样可选。Rancher提供了一整套完整的Docker编排解决方案,功能上包括网络、存储、负载均衡、服务发现等,可以通过web界面和命令行的方式便捷的创建基于Docker集群的应用。除此之外,由于Rancher完全开源,方便后续的自主定制开发。为此,本实施例中选择Rancher对容器进行编排。所述任务调度系统的部署过程如下:
(1)构建Rancher集群:选择其中一台服务器作为RancherServer节点,而包括RancherServer自身在内的全部6台服务器都作为RancherAgent节点,系统中的所有功能容器都分布在RancherAgent节点上。
(2)创建负载均衡器:负载均衡器利用Nginx实现,拉取Nginx的Docker镜像后,需要配置高可用(HA)特性,通过结合Keepalived服务,当MASTER节点宕机时,能够快速启动BACKUP节点,使业务中断对用户来说是透明的。
(3)创建任务调度器:任务调度器基于开源的Haproxy实现。本实施例中提出了一种基于一致性哈希算法改进的新任务调度算法,在Haproxy源码中增加算法后通过源码编译安装。
(4)创建资源监控器:资源监控器基于Python语言开发,作为运行在Ubuntu操作系统的守护进程存在,实时请求各任务调度器的资源实用情况。
(5)创建弹性控制器;弹性控制器由一组启动、关闭Docker容器的命令脚本以及调用脚本的应用程序组成。利用实时获取的资源监控器数据,自动调用相应脚本。
(6)创建Docker私有镜像仓库;Docker私有镜像库按照Docker官方推荐的私有库安装方式构建,同时优化了私有库的查询过程。
(7)创建业务服务器;此部分不属于所述调度系统,目的是为了方便系统测试。业务服务器使用安装Tomcat及Java编译环境的容器构成,能够像用户端返回html文件,(部署流程图)。
在本发明的一个较佳实例中,上述所有模块均基于安装Ubuntu14.04操作系统的Docker容器,并且所有实现上述模块功能的容器均上传至本地私有仓库,方便扩展及故障恢复。此外,物理服务器数量可根据业务量酌情添加或减少,极端情况下,甚至可以使用一台物理服务器部署整个任务调度系统,最大程度上提高了资源利用率,节约了资源。而当业务请求量巨大时,上述调度系统可以快速扩展至更大规模的物理服务器数量。
下面结合附图对本发明中的一个示范性实施例做出说明,给出了本发明在该实施例中的操作步骤与实现细节,有助于本发明的优点和特征能够被本领域的技术人员更好的理解,可以对本该实施例做出各种改变和修改,界定了本发明的保护范围。
参阅图1,用户发起的业务请求首先到达所述任务调度系统,经过任务调度系统处理后得到响应请求的目标服务器,最终由任务调度系统将请求转发给目标服务器。参阅图2,所述任务调度系统包括负载均衡器、任务调度器、资源监控器、弹性控制器和Docker私有镜像仓库5个部分,通过各模块彼此交互,协同完成工作。本实施例中选择6台DellPoweredge R730服务器实现系统部署,配置为8核CPU、32GB内存、1TB硬盘,安装Ubuntu14.04操作系统。
参阅图3,所述基于Docker的弹性任务调度系统的部署方法详细步骤包括:
如图步骤1,构建Rancher集群,本实施例选择Rancher作为容器编排工具。Rancher集群中的节点分为Server节点和Agent节点,Server节点提供核心容器管理服务以及API服务,而Agent节点负责承载容器。为此,选择一台服务器通过Dokcer镜像的方式创建RancherServer,随后将包括RancherServer主机在内的所有6台服务器通过Web接口加入到Rancher集群中,作为RancherAgent承载各类Docker容器。
如图步骤2,所述负载均衡器作为整个系统的入口,使用NGINX镜像启动容器并为该容器提供公网IP,将容器的80端口映射到主机的80端口,以供外网访问。配置NGINX服务,使其使用轮询策略,将到达的请求分发到多个任务调度器模块。此外,负载均衡器需要配置HA特性,因此需要完成一个master两个backup节点的配置,并通过结合Keepalived迅速检测节点连通性来避免出现单点故障,当主节点宕机时,从节点能够快速提供服务。
如图步骤3,所述任务调度器以开源的Haproxy为基础,在Haproxy源代码中增加I_CH任务调度算法,然后通过源码编译的方式完成安装,最后修改配置文件使用I_CH作为系统的任务调度算法。所述I_CH算法是对一致性Hash算法进行改进,针对原始一致性Hash算法不能针对目标服务器的剩余资源调整任务负载,可能造成任务负载率不均衡的问题提出了改进方法。算法流程如下:
1)根据资源监控器定时获取服务器可用资源情况,将CPU、内存、磁盘等使用情况加权求和并且根据综合使用率降序排序;
2)根据服务器使用率的排序情况,为每个服务器确定副本数;
3)利用Murmurhash算法将所有副本映射到Hash空间中;
4)当请求到来时,利用相同算法将请求映射到同一个的Hash空间中;
5)从当前请求出发顺时针旋转,将请求分配给遇到的第一个虚拟服务器;
6)找到虚拟服务器对应的物理服务器,将请求真正映射到物理服务器上;
如图步骤4,所述资源监控器负责采集,存储和显示任务调度集群中各节点的实时运行状态信息,本发明中的实施例采用Python语言开发实现,通过与任务调度器交互获取信息,并向用户提供基于Web的监控及管理界面,方便地实现包括告警策略等系统配置。该模块需要与任务调度器及弹性控制器保持联通。
如图步骤5,所述弹性控制器通过与监控器进行通信,获得当前资源使用情况后,根据设置的阈值采取减少或增加容器等动作,实现自动化伸缩的目的,该部分同样由python实现,模块中主要封装了容器的基本操作。该模块需要与资源监控器保持联通。如图步骤6,所述镜像库模块目的是加快新节点加入的速度,方便系统算法的改变和扩展。为此,本发明中提供了本地私有镜像仓库,提供对镜像的存储、查询、访问等基本操作。该模块使用Docker推荐的私有库安装方式构建,同时优化了Docker私有库的查询过程。基于此镜像仓库,实现并完成基本配置的各种任务调度算法被打包成镜像,在系统扩容或算法改进时可以以秒级的速度完成容器的启动。
如图步骤7,业务服务器由多个安装Tomcat和Java运行环境的容器组成,每个容器暴露80端口,保证与任务调度器连通。在每个业务服务器的工程目录下存放相同的html文件,共客户端请求测试。
所述基于Docker集群的弹性任务调度系统主要工作方法如下:
请求处理:客户端端发出HTTP请求,基于Nginx的负载均衡器首先接收到该请求;负载均衡器采用轮询的方式将请求转发给任务调度器;任务调度器根据定制算法将请求转发给后端业务服务器;业务服务器通过任务调度器及负载均衡器将结果返回给客户端;
系统监控:在系统运行过程中,资源监控器根据预先设置的时间间隔向任务调度器发送资源信息请求包;接收到资源信息请求包后,每个任务调度器将当前资源使用情况发送给资源监控器;资源监控器分析得到的资源使用情况,以web页面的形式呈现给用户,在达到告警阈值时,及时报警;
系统伸缩及扩容:弹性控制器定期与资源监控器交互,获取当前资源监控器掌握的实时资源使用状态;弹性控制器根据使用状态信息,调用响应脚本,启动或停止容器;其中,启动过程需要从镜像库中拉取镜像;
新算法部署:当调度系统中需要部署新的调度算法时,开发人员将算法实现打包成镜像,上传至docker私有仓库;弹性控制器根据需求拉取新的镜像并启动容器,使新算法成为调度算法;
以上所列出的一系列详细说明只是本发明的一个可行实例,它并非用以限制本发明的保护范围,凡是本发明中涉及的说明书、附图、架构及代码等内容的变更均应包含在本发明的保护范围内。
Claims (3)
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,得到每个任务调度器的使用率加权和si后,将该加权和从小到大排列,加权和排在前面,说明该任务调度器使用率较低,可以分配更多的请求,为此,按照此排序确定虚拟副本数,排在第一任务调度器设置10个副本,往后依次减少;
b)将服务器映射到hash空间内:副本数确定后,用“任务调度器IP+副本标号”组成字符串,作为一个虚拟副本的唯一标识,接下来,利用Murmurhash算法计算该字符串的哈希值,最后利用取模运算将副本映射到0到232-1的环状哈希空间内;
c)将服务器请求映射到哈希空间内:当请求到达时,利用发起客户端请求的IP作为请求标识,同样利用Murmurhash算法计算哈希值并映射到与任务调度器副本相同的哈希空间内;
d)将请求分发到虚拟副本:由于哈希空间是环状的,请求映射到哈希空间后,从该请求出发,顺时针寻找,将请求映射到第一个虚拟副本上;
e)将虚拟副本映射到物理服务器:根据虚拟副本的标识可以确定该副本所述的任务调度器IP,真正请求将被映射到具有该IP的任务调度器中。
3.一种基于Docker集群的弹性任务调度方法,其特征在于,具体步骤包括:
A、用户请求通过域名访问业务服务器时,请求会首先到达负载均衡器;
B、负载均衡器使用轮询策略,以最小计算开销尽可能均匀的将请求转发给任务调度器;
C、任务调度器使用预制的调度算法,真正将请求发送到相应的业务服务器,该算法要求能够充分利用所有业务服务器,降低每台服务器的负载,加快响应速度;
D、在任务调度器工作期间,资源监控器周期性地向任务调度器发送资源使用状态请求信息,将返回的结果呈现给管理员,并在达到阈值时发出告警;
E、弹性控制器接收从资源监控器推送的使用状态信息,根据当前状态调用相应脚本,启动或停止容器;
F、Docker私有镜像库中存放所有模块的镜像,方便在某个模块出故障时快速恢复系统运行状态;
在算法更新时,运行新调度算法的任务调度器将制成镜像上传至Docker私有镜像库,方便选择与应用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810173004.8A CN108388472A (zh) | 2018-03-01 | 2018-03-01 | 一种基于Docker集群的弹性任务调度系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810173004.8A CN108388472A (zh) | 2018-03-01 | 2018-03-01 | 一种基于Docker集群的弹性任务调度系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108388472A true CN108388472A (zh) | 2018-08-10 |
Family
ID=63068661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810173004.8A Pending CN108388472A (zh) | 2018-03-01 | 2018-03-01 | 一种基于Docker集群的弹性任务调度系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108388472A (zh) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271301A (zh) * | 2018-09-04 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种学习任务的监控方法和设备 |
CN109614219A (zh) * | 2018-10-19 | 2019-04-12 | 东莞理工学院 | 一种遥感图像处理Docker集群的condor任务映射方法 |
CN109743405A (zh) * | 2019-02-20 | 2019-05-10 | 高新兴科技集团股份有限公司 | 负载均衡文件上传方法、系统、计算机存储介质及设备 |
CN109800475A (zh) * | 2018-12-27 | 2019-05-24 | 北京百度网讯科技有限公司 | 自动驾驶数据处理方法、装置、设备和计算机存储介质 |
CN109800937A (zh) * | 2018-08-28 | 2019-05-24 | 博众精工科技股份有限公司 | 机器人集群调度系统 |
CN109814879A (zh) * | 2019-01-16 | 2019-05-28 | 福建省天奕网络科技有限公司 | 自动化ci/cd项目部署方法、存储介质 |
CN110278279A (zh) * | 2019-06-27 | 2019-09-24 | 苏宁消费金融有限公司 | 一种动态资源调度机制的大数据离线调度开发平台及方法 |
CN110333939A (zh) * | 2019-06-17 | 2019-10-15 | 腾讯科技(成都)有限公司 | 任务混合调度方法、装置、调度服务器及资源服务器 |
CN110347899A (zh) * | 2019-07-04 | 2019-10-18 | 北京熵简科技有限公司 | 基于事件驱动模型的分布式互联网数据采集系统与方法 |
CN110457130A (zh) * | 2019-07-24 | 2019-11-15 | 广东工业大学 | 一种分布式资源弹性调度模型、方法、电子设备及存储介质 |
CN110535948A (zh) * | 2019-08-30 | 2019-12-03 | 北京东软望海科技有限公司 | 数据的获取方法、装置、电子设备及计算机可读存储介质 |
CN110837418A (zh) * | 2019-11-06 | 2020-02-25 | 浪潮云信息技术有限公司 | 一种基于容器的高并发web系统及实现方法 |
CN110841282A (zh) * | 2019-10-30 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置、存储介质及电子装置 |
CN111198753A (zh) * | 2018-11-16 | 2020-05-26 | 北京京东尚科信息技术有限公司 | 任务调度方法和装置 |
CN111343219A (zh) * | 2018-12-18 | 2020-06-26 | 同方威视技术股份有限公司 | 计算服务云平台 |
CN111359205A (zh) * | 2020-02-25 | 2020-07-03 | 平安科技(深圳)有限公司 | 云端游戏的操作方法、装置、计算机设备及存储介质 |
CN111625420A (zh) * | 2020-05-21 | 2020-09-04 | 浪潮电子信息产业股份有限公司 | 一种分布式训练任务处理方法、装置、设备及存储介质 |
CN111666128A (zh) * | 2020-05-25 | 2020-09-15 | 北京思特奇信息技术股份有限公司 | 一种容器集群组建系统及方法 |
CN112286675A (zh) * | 2019-12-29 | 2021-01-29 | 中建材信息技术股份有限公司 | 一种Docker虚拟服务网络负载均衡方法 |
CN112312345A (zh) * | 2020-10-30 | 2021-02-02 | 上海市信产通信服务有限公司 | 基于容器云平台和大数据提升轨道交通运营能力的方法 |
CN112306670A (zh) * | 2019-10-22 | 2021-02-02 | 中建材信息技术股份有限公司 | 一种Docker虚拟化场景下的服务器集群优化方法 |
CN112433860A (zh) * | 2020-10-23 | 2021-03-02 | 苏州浪潮智能科技有限公司 | 一种事件管理的方法、系统、设备及介质 |
CN113114662A (zh) * | 2021-04-08 | 2021-07-13 | 北京顶象技术有限公司 | 一种单tcp连接处理并发请求的方法及装置 |
CN113157390A (zh) * | 2021-04-09 | 2021-07-23 | 烽火通信科技股份有限公司 | 一种电力终端中针对电力应用的容器资源管理方法和装置 |
CN113641480A (zh) * | 2021-08-27 | 2021-11-12 | 四川中电启明星信息技术有限公司 | 一种基于Kubernetes集群组的任务调度系统及方法 |
CN113672391A (zh) * | 2021-08-23 | 2021-11-19 | 烽火通信科技股份有限公司 | 一种基于Kubernetes的并行计算任务调度方法与系统 |
CN114443069A (zh) * | 2021-12-30 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种动态扩展的集群构建操作系统镜像的方法、系统 |
CN115052033A (zh) * | 2022-06-01 | 2022-09-13 | 上海交通大学 | 一种智能工厂基于资源共享的微服务有效容器化部署方法 |
CN115454624A (zh) * | 2022-08-30 | 2022-12-09 | 南京信易达计算技术有限公司 | 全栈式高性能计算集群管理与数据分析系统及方法 |
CN117370135A (zh) * | 2023-10-18 | 2024-01-09 | 方心科技股份有限公司 | 基于电力应用弹性测试的超算平台性能评测方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857560A (zh) * | 2012-08-15 | 2013-01-02 | 华数传媒网络有限公司 | 一种面向多业务应用的云存储数据分布方法 |
CN103353852A (zh) * | 2013-06-07 | 2013-10-16 | 曲阜师范大学 | 一种虚拟化WebService的IaaS的构建方法 |
CN106250226A (zh) * | 2016-08-02 | 2016-12-21 | 福建华渔未来教育科技有限公司 | 基于一致性哈希算法的任务调度机制及系统 |
-
2018
- 2018-03-01 CN CN201810173004.8A patent/CN108388472A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857560A (zh) * | 2012-08-15 | 2013-01-02 | 华数传媒网络有限公司 | 一种面向多业务应用的云存储数据分布方法 |
CN103353852A (zh) * | 2013-06-07 | 2013-10-16 | 曲阜师范大学 | 一种虚拟化WebService的IaaS的构建方法 |
CN106250226A (zh) * | 2016-08-02 | 2016-12-21 | 福建华渔未来教育科技有限公司 | 基于一致性哈希算法的任务调度机制及系统 |
Cited By (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800937A (zh) * | 2018-08-28 | 2019-05-24 | 博众精工科技股份有限公司 | 机器人集群调度系统 |
CN109800937B (zh) * | 2018-08-28 | 2020-12-01 | 博众精工科技股份有限公司 | 机器人集群调度系统 |
CN109271301A (zh) * | 2018-09-04 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种学习任务的监控方法和设备 |
CN109614219A (zh) * | 2018-10-19 | 2019-04-12 | 东莞理工学院 | 一种遥感图像处理Docker集群的condor任务映射方法 |
CN109614219B (zh) * | 2018-10-19 | 2021-02-09 | 东莞理工学院 | 一种遥感图像处理Docker集群的condor任务映射方法 |
CN111198753A (zh) * | 2018-11-16 | 2020-05-26 | 北京京东尚科信息技术有限公司 | 任务调度方法和装置 |
CN111343219B (zh) * | 2018-12-18 | 2022-08-02 | 同方威视技术股份有限公司 | 计算服务云平台 |
CN111343219A (zh) * | 2018-12-18 | 2020-06-26 | 同方威视技术股份有限公司 | 计算服务云平台 |
CN109800475A (zh) * | 2018-12-27 | 2019-05-24 | 北京百度网讯科技有限公司 | 自动驾驶数据处理方法、装置、设备和计算机存储介质 |
CN109814879B (zh) * | 2019-01-16 | 2022-09-06 | 福建省天奕网络科技有限公司 | 自动化ci/cd项目部署方法、存储介质 |
CN109814879A (zh) * | 2019-01-16 | 2019-05-28 | 福建省天奕网络科技有限公司 | 自动化ci/cd项目部署方法、存储介质 |
CN109743405A (zh) * | 2019-02-20 | 2019-05-10 | 高新兴科技集团股份有限公司 | 负载均衡文件上传方法、系统、计算机存储介质及设备 |
CN109743405B (zh) * | 2019-02-20 | 2022-01-25 | 高新兴科技集团股份有限公司 | 负载均衡文件上传方法、系统、计算机存储介质及设备 |
CN110333939A (zh) * | 2019-06-17 | 2019-10-15 | 腾讯科技(成都)有限公司 | 任务混合调度方法、装置、调度服务器及资源服务器 |
CN110333939B (zh) * | 2019-06-17 | 2023-11-14 | 腾讯科技(成都)有限公司 | 任务混合调度方法、装置、调度服务器及资源服务器 |
CN110278279A (zh) * | 2019-06-27 | 2019-09-24 | 苏宁消费金融有限公司 | 一种动态资源调度机制的大数据离线调度开发平台及方法 |
CN110347899A (zh) * | 2019-07-04 | 2019-10-18 | 北京熵简科技有限公司 | 基于事件驱动模型的分布式互联网数据采集系统与方法 |
CN110347899B (zh) * | 2019-07-04 | 2021-06-22 | 北京熵简科技有限公司 | 基于事件驱动模型的分布式互联网数据采集系统与方法 |
CN110457130A (zh) * | 2019-07-24 | 2019-11-15 | 广东工业大学 | 一种分布式资源弹性调度模型、方法、电子设备及存储介质 |
CN110535948A (zh) * | 2019-08-30 | 2019-12-03 | 北京东软望海科技有限公司 | 数据的获取方法、装置、电子设备及计算机可读存储介质 |
CN112306670B (zh) * | 2019-10-22 | 2023-12-19 | 中建材信息技术股份有限公司 | 一种Docker虚拟化场景下的服务器集群优化方法 |
CN112306670A (zh) * | 2019-10-22 | 2021-02-02 | 中建材信息技术股份有限公司 | 一种Docker虚拟化场景下的服务器集群优化方法 |
CN110841282A (zh) * | 2019-10-30 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置、存储介质及电子装置 |
CN110837418A (zh) * | 2019-11-06 | 2020-02-25 | 浪潮云信息技术有限公司 | 一种基于容器的高并发web系统及实现方法 |
CN112286675A (zh) * | 2019-12-29 | 2021-01-29 | 中建材信息技术股份有限公司 | 一种Docker虚拟服务网络负载均衡方法 |
CN111359205A (zh) * | 2020-02-25 | 2020-07-03 | 平安科技(深圳)有限公司 | 云端游戏的操作方法、装置、计算机设备及存储介质 |
CN111625420A (zh) * | 2020-05-21 | 2020-09-04 | 浪潮电子信息产业股份有限公司 | 一种分布式训练任务处理方法、装置、设备及存储介质 |
CN111666128B (zh) * | 2020-05-25 | 2023-07-04 | 北京思特奇信息技术股份有限公司 | 一种容器集群组建系统及方法 |
CN111666128A (zh) * | 2020-05-25 | 2020-09-15 | 北京思特奇信息技术股份有限公司 | 一种容器集群组建系统及方法 |
CN112433860A (zh) * | 2020-10-23 | 2021-03-02 | 苏州浪潮智能科技有限公司 | 一种事件管理的方法、系统、设备及介质 |
CN112433860B (zh) * | 2020-10-23 | 2022-07-08 | 苏州浪潮智能科技有限公司 | 一种事件管理的方法、系统、设备及介质 |
CN112312345A (zh) * | 2020-10-30 | 2021-02-02 | 上海市信产通信服务有限公司 | 基于容器云平台和大数据提升轨道交通运营能力的方法 |
CN113114662B (zh) * | 2021-04-08 | 2023-07-04 | 北京顶象技术有限公司 | 一种单tcp连接处理并发请求的方法及装置 |
CN113114662A (zh) * | 2021-04-08 | 2021-07-13 | 北京顶象技术有限公司 | 一种单tcp连接处理并发请求的方法及装置 |
CN113157390A (zh) * | 2021-04-09 | 2021-07-23 | 烽火通信科技股份有限公司 | 一种电力终端中针对电力应用的容器资源管理方法和装置 |
CN113672391A (zh) * | 2021-08-23 | 2021-11-19 | 烽火通信科技股份有限公司 | 一种基于Kubernetes的并行计算任务调度方法与系统 |
CN113672391B (zh) * | 2021-08-23 | 2023-11-28 | 烽火通信科技股份有限公司 | 一种基于Kubernetes的并行计算任务调度方法与系统 |
CN113641480B (zh) * | 2021-08-27 | 2023-12-15 | 四川中电启明星信息技术有限公司 | 一种基于Kubernetes集群组的任务调度系统及方法 |
CN113641480A (zh) * | 2021-08-27 | 2021-11-12 | 四川中电启明星信息技术有限公司 | 一种基于Kubernetes集群组的任务调度系统及方法 |
CN114443069B (zh) * | 2021-12-30 | 2023-09-08 | 苏州浪潮智能科技有限公司 | 一种动态扩展的集群构建操作系统镜像的方法、系统 |
CN114443069A (zh) * | 2021-12-30 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种动态扩展的集群构建操作系统镜像的方法、系统 |
CN115052033B (zh) * | 2022-06-01 | 2023-04-28 | 上海交通大学 | 一种智能工厂基于资源共享的微服务有效容器化部署方法 |
CN115052033A (zh) * | 2022-06-01 | 2022-09-13 | 上海交通大学 | 一种智能工厂基于资源共享的微服务有效容器化部署方法 |
CN115454624A (zh) * | 2022-08-30 | 2022-12-09 | 南京信易达计算技术有限公司 | 全栈式高性能计算集群管理与数据分析系统及方法 |
CN115454624B (zh) * | 2022-08-30 | 2024-05-31 | 南京信易达计算技术有限公司 | 全栈式高性能计算集群管理与数据分析系统及方法 |
CN117370135A (zh) * | 2023-10-18 | 2024-01-09 | 方心科技股份有限公司 | 基于电力应用弹性测试的超算平台性能评测方法及系统 |
CN117370135B (zh) * | 2023-10-18 | 2024-04-02 | 方心科技股份有限公司 | 基于电力应用弹性测试的超算平台性能评测方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108388472A (zh) | 一种基于Docker集群的弹性任务调度系统及方法 | |
CN112560244B (zh) | 一种基于Docker的虚拟仿真实验系统及方法 | |
CN100418057C (zh) | 用于应用程序分布式管理的启用网格的虚拟机的方法和系统 | |
CN102200921B (zh) | 智能引导设备选择和恢复 | |
CN112667362B (zh) | Kubernetes上部署Kubernetes虚拟机集群的方法与系统 | |
US10970649B2 (en) | Automated reinforcement-learning-based application manager that uses local agents | |
CN110417613A (zh) | 基于Jmeter的分布式性能测试方法、装置、设备及存储介质 | |
CN114666333B (zh) | 一种基于多租户理论面向云计算资源调度问题的控制方法 | |
CN104077212A (zh) | 压力测试系统及方法 | |
CN110661842A (zh) | 一种资源的调度管理方法、电子设备和存储介质 | |
CN107479947A (zh) | 一种虚拟机能耗优化方法和系统 | |
Rajalakshmi et al. | An improved dynamic data replica selection and placement in cloud | |
Zhou et al. | Towards service composition aware virtual machine migration approach in the cloud | |
Du et al. | Dynamic scheduling with process migration | |
CN105677492B (zh) | 一种面向终端的可靠应用执行方法 | |
CN111061617A (zh) | 一种基于云计算的天基网络组网仿真测试系统 | |
Cao | Load balancing design of web cluster based on Nginx under novel virtualization platform | |
US11184244B2 (en) | Method and system that determines application topology using network metrics | |
US20210067599A1 (en) | Cloud resource marketplace | |
Peng et al. | Research on cloud computing resources provisioning based on reinforcement learning | |
CN103067507A (zh) | 互联网云计算资源虚拟化封装系统及方法 | |
CN102542103A (zh) | 一种基于web支持多任务的仿真综合集成系统 | |
Caron et al. | Implementation and evaluation of a P2P service discovery system: Application in a dynamic large scale computing infrastructure | |
Rasool et al. | Fair-share replication in data grid | |
US20220232069A1 (en) | Actor-and-data-grid-based distributed applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180810 |
|
WD01 | Invention patent application deemed withdrawn after publication |