一种分布式容器镜像构建调度系统及方法与流程

专利2022-06-30  48


本发明属于云计算技术领域,具体涉及一种分布式容器镜像构建调度系统及方法。



背景技术:

由于云计算的发展,将微服务部署到容器中可极大的提升资源利用率。然而随着云计算业务的多样化、复杂化,单单让软件工程师手动编写容器镜像文件调用ci/cd工具构建镜像的处理流程过于繁琐,单一节点实现容器镜像的批量构建存在性能瓶颈且不易维护,已经无法满足当前要求,尤其当大部分应用的容器镜像文件都已经被规范化的时候,就要考虑使用分布式的容器镜像构建系统来优化现有的容器镜像构建方法,以达到提升镜像构建速度、资源高效利用和简化流程的作用。

云计算业务中往往有种类繁多的业务,不同的用户需要根据自己的程序依赖构建相应的容器镜像,镜像构建也需要跟进迭代,因此构建镜像任务将随着时间推移不断出现,将这些镜像构建任务送入分布式就像构建系统消化也是一个亟待解决的问题,特别是任何将这些任务合理的分配在响应的构建节点上运行从而保证构建镜像效率有待优化。



技术实现要素:

针对目前云计算中容器镜像构建效率低下、流程繁琐和可靠性有待提高的问题,本发明提供了一种分布式容器镜像构建调度系统及方法。

为实现上述技术目的,本发明实施例一方面提供一种分布式容器镜像构建调度系统,包括管理节点和构建节点;

所述管理节点用于管理分布式容器镜像的构建任务的生成和调度;所述管理节点包括控制台和调度器;

所述控制台用于获取任务参数,创建任务并送入调度器,以及将镜像构建状态反馈内容反馈给用户;

所述调度器用于接收从控制台发送的任务生成任务消息;以及将任务消息发送至相应的构建节点上运行,等待并接收相应构建节点上的任务执行结果;

所述构建节点用于执行管理节点下发的任务,每个构建节点包括镜像构建器;

所述镜像构建器用于接收从调度器发送的任务消息并执行,以及将执行结果返回至调度器。

进一步的,所述调度器为web服务器;所述镜像构建器为grpc服务器。

进一步的,所述调度系统包括不少于3个的管理节点以及多个构建节点。

进一步的,同一时刻只有一个管理节点处于工作状态,通过心跳检测技术和vip技术进行管理节点无缝切换。

本发明实施例另一方面还提供一种分布式容器镜像构建调度方法,包括:

权利要求1至4任意一项所述的管理节点和构建节点初始化,包括:将管理节点调度器置为web服务器阻塞监听状态,以及将构建节点镜像构建器置为grpc服务器阻塞监听状态;

权利要求1至4任意一项所述的控制台创建镜像构建任务,并通过调度器进行检测生成任务消息;

确定任务消息能够发送的构建节点;

从所确定的构建节点中筛选最佳工作节点;

调度器将任务消息发送至最佳工作节点,并生成任务对象;

最佳工作节点执行任务,并将构建状态反馈内容发送至管理节点;

管理节点将构建状态反馈内容告知用户;

管理节点和构建节点重新进入初始化状态。

进一步的,所述将管理节点调度器置为web服务器阻塞监听状态,包括:

管理节点上启动调度器,调度器检查调度器配置文件是否存在,若存在,则读取配置文件中所有构建节点的ip地址和grpc服务端口号并将这些数据保存至缓存中;所述调度器配置文件内容为构建节点的ip地址和grpc服务端口号列表;

调度器设置缓存中的并行线程数记为workers;同时,设置任务列表为空;

调度器检查当前管理节点上用于web和grpc通信加密的tls公钥和私钥是否存在,若存在,调度器调用该tls公钥和私有开启自身内部带tls认证的web服务器阻塞监听,并开启控制台等待用户创建任务;

若调度器检查调度器配置文件不存在或用于web和grpc通信加密的tls公钥和私钥不存在,则将失败原因记录并生成消息记录到本地,将故障信息发送给运维工程师,调度器程序退出;

所述将构建节点镜像构建器置为grpc服务器阻塞监听状态包括:

构建节点上启动镜像构建器,镜像构建器尝试对接当前构建节点上的容器引擎,若对接成功,则镜像构建器将构建节点缓存中的构建节点状态变量设置为真,构建节点健康变量设置为健康,镜像构建数变量设置为零;

镜像构建器检测当前构建节点上用于grpc通信加密的tls公钥和私钥是否存在,若存在,镜像构建器调用该tls公钥和私钥开启自身内部带tls认证的grpc服务器阻塞监听,等待调度器获取自身节点的信息或下发任务;

若对接容器引擎失败或用于grpc通信加密的tls公钥和私钥不存在,则将失败原因记录并生成消息记录到本地,将故障信息发送给运维工程师,镜像构建器程序退出。

进一步的,所述控制台创建镜像构建任务,并通过调度器进行检测生成任务消息,包括:

管理节点上通过控制台创建任务,创建前设置构建的镜像名称、使用gpu值、使用的开发框架名称、开发框架版本、第三方依赖、异构资源值和测试模式值写入并创建任务;

控制台将所述任务序列化为结构对象送入调度器;

调度器检测结构对象是否合法性,包括:

检测镜像名称是否为空,若为空,则生成"构建镜像名为空“的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若镜像名称非空,则调度器继续检测结构对象中异构资源值是否为真,若异构资源值设置为其他值或空则生成“构建异构资源值非法”的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若异构资源值设置为真,则继续检测结构对象中开发框架是否为空,若为空则生成“构建镜像开发框架为空”的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若开发框架非空则继续检测结构对象中测试模式值是否为真,若测试模式值设置为其他值或空则生成“测试模式值非法”的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若测试模式值设置为真,则任务检测通过,调度器将任务内容生成任务消息。

进一步的,所述确定任务消息能够发送的构建节点,包括:

管理节点上的调度器在缓存中创建活跃构建节点表,该表记录内容为构建节点ip和grpc服务端口及通信状态;

调度器缓存中的所有构建节点通过构建节点ip和grpc服务端口与这些构建节点的grpc服务测试通信,并将每个成功通信的构建节点保存至缓存中的活跃构建节点表;

判断活跃构建节点表中的活跃构建节点数是否大于workers,若大于workers不作任何操作,若小于workers则调度器将workers设置为活跃构建节点数,开启多线程,并行获取活跃构建节点表中构建节点资源信息和构建节点状态信息;所述构建节点资源信息包括构建节点cpu数量、构建节点cpu主频、构建节点内存总量、构建节点内存空闲量、系统负载;所述构建节点状态信息包括构建节点状态变量、构建节点健康变量和镜像构建数变量;

调度器依次判断活跃构建节点表中构建节点的状态变量是否为真,若为真不做任何操作,若为假则将该构建节点从活跃构建节点表中删除;

所有构建节点判断完毕后,调度器依次判断活跃构建节点表中构建节点的健康变量是否为健康,若被设置为健康不做任何操作,若没有被设置为健康,则将该构建节点从活跃构建节点表中删除;

所有构建节点判断完毕后,活跃构建节点表中保留的构建节点即为任务消息能够发送的构建节点。

进一步的,所述从所确定的构建节点中筛选最佳工作节点,包括:

计算活跃构建节点表中所有构建节点的性能得分和任务得分:

其中,performscore为性能得分,taskscore为任务得分,cpuweight为cpu权重,loadweight为负载权重,memoryweight为内存权重,taskweight为任务权重,cpucores表示构建节点cpu数量,cpufrequency表示构建节点cpu主频,totalmemory表示构建节点内存总量,freememory表示构建节点内存空闲量,buildnumber表示镜像构建数变量,systemload表示系统负载,maxcpucores表示活跃构建节点表中所有构建节点里cpu数量最多的构建节点对应的cpu数量,maxcpufrequency表示活跃构建节点表中所有构建节点里cpu主频最高的构建节点对应的cpu主频,maxfreememory表示活跃构建节点表中所有构建节点里内存空闲量最大的构建节点对应的内存空闲量,maxbuildnumber表示活跃构建节点表中所有构建节点里镜像构建数最多的对应的镜像构建数,

调度器将性能得分和任务得分之和作为该构建节点的最终总分记录至缓存中;

调度器选择总分最高的构建节点设置为最佳工作节点。

进一步的,所述调度器将任务消息发送至最佳工作节点,并生成任务对象,包括:

调度器获取最佳工作节点的ip地址和grpc服务端口;

调度器将任务消息根据最佳工作节点的ip地址和grpc服务端口,采用管理节点的tls公钥和私钥以grpc方式加密发送至最佳工作节点;同时,调度器异步生成任务对象,所述任务对象的内容包括任务消息、调度节点和构建状态,其中,调度节点为最佳工作节点,设置构建状态为假;

调度器进入阻塞状态,等待最佳工作节点发送构建状态反馈内容。

进一步的,所述最佳工作节点执行任务,并将构建状态反馈内容发送至管理节点,包括:

最佳工作节点的镜像构建器判断构建节点缓存中该最佳工作节点的构建节点状态变量是否设置为真且构建节点健康变量是否设置为健康;若构建节点状态变量为假或构建节点健康变量为非健康,则将二变量内容作为构建状态反馈内容,并打上错误标签,然后将所述构建节点缓存中的镜像构建数变量减1,再将构建状态反馈内容发送至管理节点;

否则镜像构建器将所述构建节点缓存中的镜像构建数变量加1,再提取任务消息中的镜像名称、使用gpu值、使用的开发框架名称、开发框架版本、第三方依赖、异构资源值和测试模式值,调用容器引擎根据这些参数构建相关镜像;镜像构建完毕后,将容器引擎的构建完毕的结果作为构建状态反馈内容,打上完成标签,然后将所述构建节点缓存中的镜像构建数变量减1,再将构建状态反馈内容发送至管理节点;

在镜像构建过程中,若容器引擎构建该镜像出现错误并终止镜像构建,则将容器引擎的报错信息作为构建状态反馈内容,并打上错误标签,然后将所述构建节点缓存中的镜像构建数变量减1,再将构建状态反馈内容发送至管理节点。

进一步的,所述管理节点将构建状态反馈内容告知用户,包括:

管理节点上的调度器收到构建状态反馈内容后,首先检查构建状态反馈中是否包含错误标签,若不包含错误标签,则将任务对象中的构建状态设置为真,表示构建完成;

否则调度器检查构建状态反馈中错误信息是否为构建节点健康变量出现问题,若是,则将该任务重新调度;若否,则将构建状态反馈内容送至控制台告知用户错误消息和内容。

本发明所达到的有益效果为:

本发明提供一种分布式容器镜像构建系统,使用分布式系统提升容器镜像的构建速度,缓解了单一节点实现容器镜像的批量构建存在性能瓶颈且不易维护的问题,通过调度器实现对构建任务的合理分配,构建节点任务负载均衡,让构建节点资源高效利用,保证了系统的稳定性,提高了容器镜像构建的效率。

附图说明

图1是本发明实施例分布式容器镜像构建系统架构图;

图2是本发明实施例分布式容器镜像构建系统中管理节点工作流程图;

图3是本发明实施例分布式容器镜像构建系统中最佳工作节点工作流程图。

具体实施方式

下面对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

本发明一方面提供一种分布式容器镜像构建调度系统,参见图1,包括构建节点和管理节点,其中管理节点用于管理分布式容器镜像的构建任务的生成和调度,所述管理节点包括:控制台和调度器。

所述控制台,用于获取用户所需要的参数,包括开发依赖库、开发框架、版本、异构资源值、测试模式值,并将这些参数生成任务送入调度器,并将镜像构建状态反馈内容反馈给用户。

所述调度器,为web服务器,负责接收从控制台传来的任务,并将这些任务过滤,根据发送至相应的构建节点上运行,等待并接收相应构建节点上的任务执行结果。

所述构建节点,用于执行管理节点下发的任务,每个构建节点包括镜像构建器。

所述镜像构建器,为grpc服务器,用于接收从调度器传来的任务,并执行这些任务,执行完毕将结果返回至调度器。

在实际实施生产环境中,设定不少于3个的管理节点以及多个构建节点,节点数量根据需要扩缩。

在同一时刻只有一个管理节点在工作,其他管理节点处于空闲状态,可通过现有云计算技术中的心跳检测技术和虚拟vip技术(virtualip)实现管理节点无缝切换,从而保证系统高可用,避免单点故障。

本发明另一方面提供一种分布式容器镜像构建调度方法包括:

(1)系统初始化

构建节点:

构建节点上启动镜像构建器,镜像构建器首先尝试对接当前构建节点上的容器引擎,若对接成功,接着镜像构建器将构建节点缓存中的构建节点状态变量设置为真,构建节点健康变量设置为健康,镜像构建数变量设置为零。

然后镜像构建器检测当前构建节点上用于grpc通信加密的tls公钥和私钥是否存在,若存在,镜像构建器调用该公钥和私钥开启自身内部带tls认证的grpc服务器阻塞监听,等待调度器获取自身节点的信息或下发任务。

若对接容器引擎失败或用于grpc通信加密的tls公钥和私钥不存在,则将失败原因记录并生成消息记录到本地,将故障信息以邮件形式发送给运维工程师,镜像构建器程序退出。

管理节点:

管理节点上启动调度器,调度器首先检查调度器配置文件是否存在,配置文件内容为构建节点的ip地址和grpc服务端口号列表,若存在,则读取配置文件中所有构建节点的ip地址和grpc服务端口号并将这些数据保存至缓存中;接着调度器设置缓存中的并行线程数,记为workers,并设置初值为5(生产环境根据需要自行扩缩);同时,设置任务列表为空。

然后调度器检查当前管理节点上用于web和grpc通信加密的tls公钥和私钥是否存在,若存在,调度器调用该公钥和私有开启自身内部带tls认证的web服务器阻塞监听,并开启控制台等待用户创建任务。

若调度器检查调度器配置文件不存在或用于web和grpc通信加密的tls公钥和私钥不存在,则将失败原因记录并生成消息记录到本地,将故障信息以邮件形式发送给运维工程师,调度器程序退出。

(2)镜像构建任务生成与检测

参见图2,用户在管理节点上通过控制台创建任务,创建前设置构建的镜像名称、使用gpu值、使用的开发框架名称、开发框架版本、第三方依赖、异构资源值、测试模式值写入并创建任务。

控制台将该任务序列化为结构对象送入调度器,调度器将检测结构对象是否合法性。具体为:

首先检测镜像名称是否为空,若为空,则生成"构建镜像名为空“的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若镜像名称非空,则调度器继续检测结构对象中异构资源值是否为真,若异构资源值设置为其他值或空则生成“构建异构资源值非法”的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若异构资源值设置为真,则继续检测结构对象中开发框架是否为空,若为空则生成“构建镜像开发框架为空”的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若开发框架非空则继续检测结构对象中测试模式值是否为真,若测试模式值设置为其他值或空则生成“测试模式值非法”的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若测试模式值设置为真,则任务检测通过,调度器将任务内容生成任务消息,调度器执行步骤(3)。

(3)构建节点过滤

参见图2,管理节点上的调度器首先在缓存中创建活跃构建节点表,该表记录内容为构建节点ip和grpc服务端口及其通信状态,接着异步尝试与步骤(1)中所述调度器缓存中的所有构建节点通过ip和grpc服务端口与这些构建节点的grpc服务测试通信,并将每个可以成功通信的构建节点保存至缓存中的活跃构建节点表。

然后判断活跃构建节点表缓存中的活跃构建节点数是否大于步骤(1)中所述的workers,若大于workers不作任何操作,若小于workers则调度器将workers设置为活跃构建节点数,接着开启多线程,并行获取活跃构建节点表中构建节点资源信息和步骤(1)所述缓存中的构建节点状态信息,其中,构建节点资源信息包括构建节点cpu数量、构建节点cpu主频、构建节点内存总量、构建节点内存空闲量、系统负载;构建节点状态信息包括构建节点状态变量、构建节点健康变量和镜像构建数变量;其中,并行获取活跃构建节点信息所使用的并行线程数量为缓存并行线程数workers(即使用workers数量的线程去消费这所有可以通信的构建节点并获取构建节点资源信息和构建节点状态信息),并将这些信息存入缓存;

当最后一个构建节点信息被存入缓存中时,调度器依次判断活跃构建节点表中的构建节点状态信息中的构建节点状态变量是否为假,若为真不做任何操作,若为假则将该构建节点从活跃构建节点表中删除;所有构建节点判断完毕后调度器接着依次判断活跃构建节点表中构建节点健康变量是否为健康,若被设置为健康不做任何操作,若没有被设置为健康,则将该构建节点从活跃构建节点表中删除,所有构建节点判断完毕后,调度器执行步骤(4)。

(4)节点评分

参见图2,调度器首先获取活跃构建节点表中所有构建节点里cpu数量最多的构建节点对应的cpu数量、活跃构建节点表中所有构建节点里cpu主频最高的构建节点对应的cpu主频、活跃构建节点表中所有构建节点里内存空闲量最大的构建节点对应的内存空闲量、活跃构建节点表中所有构建节点里镜像构建数最多的对应的镜像构建数,分别记为maxcpucores、maxcpufrequency、maxfreememory、maxbuildnumber;

将步骤(3)中获取到活跃构建节点表中构建节点的构建节点cpu数量、构建节点cpu主频、构建节点内存总量、构建节点内存空闲量、镜像构建数变量、系统负载分别记为cpucores、cpufrequency、totalmemory、freememory、buildnumber、systemload,根据这些信息异步计算活跃构建节点表中所有构建节点的性能得分和任务得分,分别记为performscore、taskscore。

其中,性能得分和任务得分算法由如下公式得出:

其中,cpuweight为cpu权重,默认值为2;loadweight为负载权重,默认值为2;memoryweight为内存权重;默认值为3;taskweight为任务权重;默认值为3。

计算完性能得分和任务得分后,调度器将二者之和作为最终总分记录至缓存中。

当活跃构建节点表中最后一个构建节点的总分计算完毕后,调度器从活跃构建节点表中选择总分最高的构建节点设置为最佳工作节点,调度器执行步骤(5)。

(5)镜像构建任务分发

参见图2,调度器首先根据步骤(4)设置的最佳工作节点从步骤(1)生成的缓存中获取最佳工作节点的ip地址和grpc服务端口;

接着调度器将步骤(2)中调度器生成的任务消息根据最佳工作节点的ip地址和grpc服务端口,使用步骤(1)中管理节点的tls公钥和私钥以grpc方式加密发送至最佳工作节点,与此同时,调度器异步生成任务对象,任务对象的内容包括任务消息、调度节点和构建状态,调度器设置任务消息为步骤(2)中调度器生成的任务消息,设置调度节点为步骤(4)的最佳工作节点,设置构建状态为假。接着调度器进入阻塞状态,等待最佳工作节点发送构建状态反馈内容。

最佳工作节点收到任务消息后,最佳工作节点上的镜像构建器执行步骤(6)。

(6)镜像构建任务执行

参见图3,镜像构建器接收到管理节点发来的任务消息后,镜像构建器首先判断构建节点缓存中该最佳工作节点的构建节点状态变量是否设置为真且构建节点健康变量是否设置为健康;若构建节点状态变量为假或构建节点健康变量为非健康,则将二变量内容作为构建状态反馈内容,并打上错误标签,然后镜像构建器执行步骤(7)。

否则镜像构建器将所述构建节点缓存中的镜像构建数变量加1,接着镜像构建器提取任务消息中的镜像名称、使用gpu值、使用的开发框架名称、开发框架版本、第三方依赖、异构资源值和测试模式值,调用容器引擎根据这些参数构建相关镜像。

当镜像构建完毕,则将容器引擎的构建完毕的结果作为构建状态反馈内容,打上完成标签,然后镜像构建器执行步骤(7)。

在镜像构建过程中,若容器引擎构建该镜像出现错误并终止镜像构建,则将容器引擎的报错信息作为构建状态反馈内容,并打上错误标签,然后镜像构建器执行步骤(7);

(7)构建状态反馈

参见图3,镜像构建器首先将所述构建节点缓存中的镜像构建数变量减1,然后镜像构建器将构建状态反馈内容发送至管理节点。

管理节点上的调度器收到构建状态反馈内容后,首先检查构建状态反馈中是否包含错误标签,若不包含错误标签,则将步骤(5)中任务对象中的构建状态设置为真,以表示构建完成;否则调度器检查构建状态反馈中错误信息是否为构建节点健康变量出现问题,若是,则将该任务跳转至步骤(3)重新调度;若否,则将构建状态反馈内容送至控制台告知用户错误消息和内容。

最后,构建节点上的镜像构建器继续跳转至步骤(1)所述的阻塞监听状态,等待新的任务下发,管理节点上的调度器继续跳转至步骤(1)所述的阻塞监听状态,等待新任务的生成。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。


技术特征:

1.一种分布式容器镜像构建调度系统,其特征在于,包括管理节点和构建节点;

所述管理节点用于管理分布式容器镜像的构建任务的生成和调度;所述管理节点包括控制台和调度器;

所述控制台用于获取任务参数,创建任务并送入调度器,以及将镜像构建状态反馈内容反馈给用户;

所述调度器用于接收从控制台发送的任务生成任务消息;以及将任务消息发送至相应的构建节点上运行,等待并接收相应构建节点上的任务执行结果;

所述构建节点用于执行管理节点下发的任务,每个构建节点包括镜像构建器;

所述镜像构建器用于接收从调度器发送的任务消息并执行,以及将执行结果返回至调度器。

2.根据权利要求1所述的一种分布式容器镜像构建调度系统,其特征在于,所述调度器为web服务器;所述镜像构建器为grpc服务器。

3.根据权利要求1所述的一种分布式容器镜像构建调度系统,其特征在于,所述调度系统包括不少于3个的管理节点以及多个构建节点。

4.根据权利要求3所述的一种分布式容器镜像构建调度系统,其特征在于,同一时刻只有一个管理节点处于工作状态,通过心跳检测技术和vip技术进行管理节点无缝切换。

5.一种分布式容器镜像构建调度方法,其特征在于,包括:

权利要求1至4任意一项所述的管理节点和构建节点初始化,包括:将管理节点调度器置为web服务器阻塞监听状态,以及将构建节点镜像构建器置为grpc服务器阻塞监听状态;

权利要求1至4任意一项所述的控制台创建镜像构建任务,并通过调度器进行检测生成任务消息;

确定任务消息能够发送的构建节点;

从所确定的构建节点中筛选最佳工作节点;

调度器将任务消息发送至最佳工作节点,并生成任务对象;

最佳工作节点执行任务,并将构建状态反馈内容发送至管理节点;

管理节点将构建状态反馈内容告知用户;

管理节点和构建节点重新进入初始化状态。

6.根据权利要求5所述的一种分布式容器镜像构建调度方法,其特征在于,所述将管理节点调度器置为web服务器阻塞监听状态,包括:

管理节点上启动调度器,调度器检查调度器配置文件是否存在,若存在,则读取配置文件中所有构建节点的ip地址和grpc服务端口号并将这些数据保存至缓存中;所述调度器配置文件内容为构建节点的ip地址和grpc服务端口号列表;

调度器设置缓存中的并行线程数记为workers;同时,设置任务列表为空;

调度器检查当前管理节点上用于web和grpc通信加密的tls公钥和私钥是否存在,若存在,调度器调用该tls公钥和私有开启自身内部带tls认证的web服务器阻塞监听,并开启控制台等待用户创建任务;

若调度器检查调度器配置文件不存在或用于web和grpc通信加密的tls公钥和私钥不存在,则将失败原因记录并生成消息记录到本地,将故障信息发送给运维工程师,调度器程序退出;

所述将构建节点镜像构建器置为grpc服务器阻塞监听状态包括:

构建节点上启动镜像构建器,镜像构建器尝试对接当前构建节点上的容器引擎,若对接成功,则镜像构建器将构建节点缓存中的构建节点状态变量设置为真,构建节点健康变量设置为健康,镜像构建数变量设置为零;

镜像构建器检测当前构建节点上用于grpc通信加密的tls公钥和私钥是否存在,若存在,镜像构建器调用该tls公钥和私钥开启自身内部带tls认证的grpc服务器阻塞监听,等待调度器获取自身节点的信息或下发任务;

若对接容器引擎失败或用于grpc通信加密的tls公钥和私钥不存在,则将失败原因记录并生成消息记录到本地,将故障信息发送给运维工程师,镜像构建器程序退出。

7.根据权利要求5所述的一种分布式容器镜像构建调度方法,其特征在于,所述控制台创建镜像构建任务,并通过调度器进行检测生成任务消息,包括:

管理节点上通过控制台创建任务,创建前设置构建的镜像名称、使用gpu值、使用的开发框架名称、开发框架版本、第三方依赖、异构资源值和测试模式值写入并创建任务;

控制台将所述任务序列化为结构对象送入调度器;

调度器检测结构对象是否合法性,包括:

检测镜像名称是否为空,若为空,则生成"构建镜像名为空“的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若镜像名称非空,则调度器继续检测结构对象中异构资源值是否为真,若异构资源值设置为其他值或空则生成“构建异构资源值非法”的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若异构资源值设置为真,则继续检测结构对象中开发框架是否为空,若为空则生成“构建镜像开发框架为空”的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若开发框架非空则继续检测结构对象中测试模式值是否为真,若测试模式值设置为其他值或空则生成“测试模式值非法”的错误消息送至控制台告知用户并取消任务生成,调度器再次进入阻塞状态等待用户从控制台创建任务;

若测试模式值设置为真,则任务检测通过,调度器将任务内容生成任务消息。

8.根据权利要求5所述的一种分布式容器镜像构建调度方法,其特征在于,所述确定任务消息能够发送的构建节点,包括:

管理节点上的调度器在缓存中创建活跃构建节点表,该表记录内容为构建节点ip和grpc服务端口及通信状态;

调度器缓存中的所有构建节点通过构建节点ip和grpc服务端口与这些构建节点的grpc服务测试通信,并将每个成功通信的构建节点保存至缓存中的活跃构建节点表;

判断活跃构建节点表中的活跃构建节点数是否大于workers,若大于workers不作任何操作,若小于workers则调度器将workers设置为活跃构建节点数,开启多线程,并行获取活跃构建节点表中构建节点资源信息和构建节点状态信息;所述构建节点资源信息包括构建节点cpu数量、构建节点cpu主频、构建节点内存总量、构建节点内存空闲量、系统负载;所述构建节点状态信息包括构建节点状态变量、构建节点健康变量和镜像构建数变量;

调度器依次判断活跃构建节点表中构建节点的状态变量是否为真,若为真不做任何操作,若为假则将该构建节点从活跃构建节点表中删除;

所有构建节点判断完毕后,调度器依次判断活跃构建节点表中构建节点的健康变量是否为健康,若被设置为健康不做任何操作,若没有被设置为健康,则将该构建节点从活跃构建节点表中删除;

所有构建节点判断完毕后,活跃构建节点表中保留的构建节点即为任务消息能够发送的构建节点。

9.根据权利要求8所述的一种分布式容器镜像构建调度方法,其特征在于,所述从所确定的构建节点中筛选最佳工作节点,包括:

计算活跃构建节点表中所有构建节点的性能得分和任务得分:

其中,performscore为性能得分,taskscore为任务得分,cpuweight为cpu权重,loadweight为负载权重,memoryweight为内存权重,taskweight为任务权重,cpucores表示构建节点cpu数量,cpufrequency表示构建节点cpu主频,totalmemory表示构建节点内存总量,freememory表示构建节点内存空闲量,buildnumber表示镜像构建数变量,systemload表示系统负载,maxcpucores表示活跃构建节点表中所有构建节点里cpu数量最多的构建节点对应的cpu数量,maxcpufrequency表示活跃构建节点表中所有构建节点里cpu主频最高的构建节点对应的cpu主频,maxfreememory表示活跃构建节点表中所有构建节点里内存空闲量最大的构建节点对应的内存空闲量,maxbuildnumber表示活跃构建节点表中所有构建节点里镜像构建数最多的对应的镜像构建数,

调度器将性能得分和任务得分之和作为该构建节点的最终总分记录至缓存中;

调度器选择总分最高的构建节点设置为最佳工作节点。

10.根据权利要求9所述的一种分布式容器镜像构建调度方法,其特征在于,所述调度器将任务消息发送至最佳工作节点,并生成任务对象,包括:

调度器获取最佳工作节点的ip地址和grpc服务端口;

调度器将任务消息根据最佳工作节点的ip地址和grpc服务端口,采用管理节点的tls公钥和私钥以grpc方式加密发送至最佳工作节点;同时,调度器异步生成任务对象,所述任务对象的内容包括任务消息、调度节点和构建状态,其中,调度节点为最佳工作节点,设置构建状态为假;

调度器进入阻塞状态,等待最佳工作节点发送构建状态反馈内容。

11.根据权利要求10所述的一种分布式容器镜像构建调度方法,其特征在于,所述最佳工作节点执行任务,并将构建状态反馈内容发送至管理节点,包括:

最佳工作节点的镜像构建器判断构建节点缓存中该最佳工作节点的构建节点状态变量是否设置为真且构建节点健康变量是否设置为健康;若构建节点状态变量为假或构建节点健康变量为非健康,则将二变量内容作为构建状态反馈内容,并打上错误标签,然后将所述构建节点缓存中的镜像构建数变量减1,再将构建状态反馈内容发送至管理节点;

否则镜像构建器将所述构建节点缓存中的镜像构建数变量加1,再提取任务消息中的镜像名称、使用gpu值、使用的开发框架名称、开发框架版本、第三方依赖、异构资源值和测试模式值,调用容器引擎根据这些参数构建相关镜像;镜像构建完毕后,将容器引擎的构建完毕的结果作为构建状态反馈内容,打上完成标签,然后将所述构建节点缓存中的镜像构建数变量减1,再将构建状态反馈内容发送至管理节点;

在镜像构建过程中,若容器引擎构建该镜像出现错误并终止镜像构建,则将容器引擎的报错信息作为构建状态反馈内容,并打上错误标签,然后将所述构建节点缓存中的镜像构建数变量减1,再将构建状态反馈内容发送至管理节点。

12.根据权利要求11所述的一种分布式容器镜像构建调度方法,其特征在于,所述管理节点将构建状态反馈内容告知用户,包括:

管理节点上的调度器收到构建状态反馈内容后,首先检查构建状态反馈中是否包含错误标签,若不包含错误标签,则将任务对象中的构建状态设置为真,表示构建完成;

否则调度器检查构建状态反馈中错误信息是否为构建节点健康变量出现问题,若是,则将该任务重新调度;若否,则将构建状态反馈内容送至控制台告知用户错误消息和内容。

技术总结
本发明公开了一种分布式容器镜像构建调度系统及方法,系统主要包括构建节点和管理节点,其中构建节点包括镜像构建器用于执行管理节点下发下来的构建任务;管理节点包括控制台和调度器,控制台负责获取用户所需要的开发依赖库、系统配置等相关参数并将这些参数生成任务发送至调度器;调度器用于接收控制台发送的任务,检测任务合法性并将任务发送至相应的构建节点上运行。本发明具有保证分配容器镜像任务的公平性、实现资源高效利用、更加面向用户等特性,提高了分布式系统中容器镜像构建的速度、简化了镜像构建的流程,提高了分布式系统中容器镜像的构建效率和构建节点的负载均衡。

技术研发人员:张登银;李俊江;刘子捷;朱琳;程义;周莹莹;史朝夕
受保护的技术使用者:南京邮电大学
技术研发日:2020.01.14
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-59708.html

最新回复(0)