各个高性能计算中心之间缺少统一的作业管理策略和作业迁移机制。当遇到计算中心例行维护或者用户采用检查点技术进行异地作业灾备容错时,需要将作业迁移到其他计算中心执行。针对该问题,设计实现了多中心作业迁移调度系统JMS。该系统采用了微服务架构的设计模式,支持多计算中心间的作业迁移,为用户提供了多中心作业管理和终端访问的web portal。实际测试表明,JMS具有操作简单,可扩展性强等特点。 There is a lack of unified job management strategy and job migration mechanism between high performance computing centers. When there is a routine maintenance in a computing center or the user adopts the checkpoint technology to make fault tolerance, jobs need migrating to other computing centers for execution. Aiming at the problem, this paper proposed a JMS system which adopts the design mode of microservice architecture, supports job migration in multiple computing centers and provides the function of multi-center job management and terminal access for users by web portal. Theoretical analysis and test show that JMS is user-friendly and has good scalability.
冯鸣夏,伍卫国
西安交通大学电子与信息工程学院,陕西 西安
收稿日期:2018年3月9日;录用日期:2018年3月23日;发布日期:2018年3月30日
各个高性能计算中心之间缺少统一的作业管理策略和作业迁移机制。当遇到计算中心例行维护或者用户采用检查点技术进行异地作业灾备容错时,需要将作业迁移到其他计算中心执行。针对该问题,设计实现了多中心作业迁移调度系统JMS。该系统采用了微服务架构的设计模式,支持多计算中心间的作业迁移,为用户提供了多中心作业管理和终端访问的web portal。实际测试表明,JMS具有操作简单,可扩展性强等特点。
关键词 :高性能计算,作业迁移,容错,微服务架构
Copyright © 2018 by authors and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
高性能计算是战略性、前沿性的高新技术,是世界各国争夺的战略制高点,是国家创新体系的重要组成部分。目前我国已经拥有了由19个高性能计算中心组成的中国国家网格 [
不同的高性能计算中心采用独立的集群调度系统,用户通过账号和密码远程连接到登录节点提交作业。集群调度系统采用不同的作业调度策略对用户提交的作业进行调度。实际情况中,用户可能拥有多个计算中心的使用权限,但由于计算中心之间没有互联互通的机制,当用户在不同计算中心中有运行作业时,需要在不同的终端来回切换,查看作业非常不方便。对某一计算中心上长时间运行的作业,用户可能需要对作业做检查点并迁移到其他计算中心上做灾备。当计算中心时常会遇到例行维护等工作时,用户可能需要将作业迁移到其他计算中心完成计算。
本文的剩余部分首先介绍相关工作,包括作业迁移调度的相关工作;第3部分讨论JMS的系统架构;第4部分讨论JMS的设计与实现;第5部分介绍JMS的应用实例;最后是总结和下一步工作展望。
由于作业迁移容错具有重要的研究价值,一部分工作集中在为作业调度系统添加作业容错机制,提供检查点机制。文献 [
多计算中心作业迁移调度系统JMS由两部分构成:JMS_provider和JMS_agent。JMS_provider单独部署在一个web服务器集群,向用户提供作业迁移调度系统的web portal。JMS_agent部署在各个计算中心外部访问的登录集群,对外提供webservice服务和文件传输服务。JMS的系统网络拓扑结构如图1所示。
JMS_provider为用户提供web访问portal,用户可以通过登录JMS_provider查看不同计算中心上运行的作业状态,通过JMS_provider提供的远程终功能,用户可以方便切换到任意计算中心进行远程操作。用户可以根据计算中心的负载情况,将作业从一个中心迁移到其他中心实现远程灾备。JMS_rovider的体系结构如图2所示。
JMS_provider包含5个功能模块:Job Manager、Terminal Controller、Transfer Service、Migration Schedule、Web Portal。
Cluster Manager:Cluster Manager收集用户在不同计算中作业的运行状态,并返回给用户。
图1. JMS系统网络拓扑结构
图2. JMS_Provider结体系构
Terminal Controller:Terminal Controller 集成了多个计算中的远程终端接口,用户可以方便的切换到不同的计算中心执行远程操作。
Transfer Service:Transfer Service 提供作业脚本提交功能,用户可以上传提交到任意一个计算中心。
Resources Monitor:监控各个计算中心的负载情况,为用户提交作业和作业迁移做决策支持。
Portal:JMS_provider对外提供的Web接口。用户可以通过登录Portal接受JMS_provider其他组件提供的服务。
JMS_agent作为后台程序部署在各个计算中心外部访问的登录集群上,JMS_agent收集本计算中心的负载情况为迁移调度提供决策支持,同时JMS_agent对外提供了Restful API服务 [
JMS_agent包含5个功能模块:Restful API Service、Load Monitor、Communication Controller、Job Manager、Migration Service。
Restful API Service:Restful API Service提供一组web服务的API,包括作业管理的API (作业的查询,提交,检查点,暂停,删除)、计算中心资源查询的API (计算中心的负载信息)、命令控制的API (数据传输,作业迁移)。
Load Monitor:Load Monitor收集计算中心节点的负载信息,包括各个节点的CPU负载,内存的利用率,温度等指标信息。
Communication Controller:各个计算中心通过Communication Controller进行命令控制和数据传输。
Job Manager:Job Manager和计算中心的作业调度系统交互,向作业调度熊提交作业、查询作业运行状态。
Migration Service:Migration Service根据用户选择的需要迁移的作业和迁移的目标计算中心,实现
图3. JMS_agent结体系构
作业的迁移调度。
JMS_provider和JMS_agent以及JMS_agent之间的通信数据主要分为控制信息和作业数据信息。
1) 命令控制协议
JMS_provider的Cluster Manager模块和Resources Monitor模块通过JMS_agent提供的Restful API对计算中心进行访问。JMS_agent将服务作为一种资源对外提供访问接口。
如查询作业的运行状态:
http://IP:/JMS_agent/jobstatus/jobID
如对作业做检查命令操作:
http://IP:/JMS_agent/checkpointment/jobID
2) 数据传输协议
当涉及作业提交或者作业迁移时,JMS_provider的Transfer Service模块和JMS_agent的Communication Controller模块通过SCP协议传输大规模的作业文件。这两个模块通过对scp命令进行脚本包装,对外提供数据传输服务。
JMS系统主要的设计思想是通过整合多个计算中心的资源,方便用户实现在一个平台完成对多个计算中心作业的管理。在JMS平台上,用户可以同时管理多个计算中心上的作业,实现作业的动态迁移;可以切换不同的计算中心访问接口,远程控制命令行终端;可以选择任意一个计算中心提交作业,异地并发执行作业。JMS采用spring boot和docker搭建微服务架构 [
用户在portal选择的需要的迁移作业和目标计算中心。JMS_provider的Cluster_manage模块将迁移的作业ID通过JMS_agent提供的restful API返回到JMS_agent的Migration Service模块。Migraton Service模块选择合适的作业迁移策略 [
图4. 作业迁移流程
对于某一个预迁移的作业,Migration Service模块首先判断它的运行状态,根据不同的作业的运行状态分别采用不同的迁移策略。1) 如果作业处在调度队列之中,还没有开始运行,则源计算中心JMS_agent的Migration Service模块将作业从源计算中心任务队列中删除,接着通过JMS_agent的Communication Controller模块将作业传输到目标计算中心,再由目标计算中心的JMS_agent的Migration Service模块提交作业到作业调度系统。2) 如果作业已经开始运行,并且作业所对应的应用类型不支持暂停恢复机制,则源计算中心JMS_agent的Migration Service模块将作业终止,接着通过JMS_agent的Communication Controller模块将作业传输到目标计算中心,再由目标计算中心的JMS_agent的Migration Service模块提交作业到作业调度系统。3) 如果作业已经开始运行,并且作业所对应的应用类型支持暂停恢复机制,则源计算中心JMS_agent的Migration Service模块将作业暂停,保存当前任务状态信息,将作业数据和检查点数据封装打包,通过JMS_agent的Communication Controller模块将作业传输到目标计算中心,再由目的计算中心JMS_agent的Migration Service模块对迁移迁移作业进行恢复执行。
用户登录web portal之后,通过菜单导航到多中心作业管理界面,用户可以查看多个中心上作业的运行情况,并且对作业进行管理,用户可以选择作业进行检查点操作并进行作业迁移,如图5所示。
当用户需要进行手动作业迁移时,选择合适的迁移作业数据和目标计算中心后提交作业,如图6所示。
图5. 多中心作业管理界面
图6. 作业迁移界面
用户在portal选择的需要远程控制的目标计算中心。JMS_provider的Terminal Controller模块根据用户选择的目标计算中心的ID,通过JMS_agent提供的restful API认证连接到了JMS_agent的Communication Controller模块。JMS_provider的Terminal Controller模块和JMS_agent的Communication Controller模块建立了可靠、安全的专用通信通道和相应的通信协议。两个模块之间的通信基于TCP/IP协议,为了减少TCP连接带来的开销,在每次会话之后将中断连接。远程控制的通信时序图如图7所示。
在图7中,JMS_provider的Terminal Controller模块和一个计算中心JMS_agent的Communication Controller模块建立了通信连接时,首先Terminal Controller模块向Communication Controller模块发起连接请求,Communication Controller模块产生应答并建立连接;然后Terminal Controller模块向Communication Controller模块发送命令信息,Communication Controller模块接收命令信息后调用本地的shell命令产生命令执行结果,最后Communication Controller模块向Terminal Controller模块返回命令执行的结果,断开连接。
TCP是面向字节流的协议,即没有消息边界,应用层协议需要定义格式来决定消息边界,通常的做法有两种:一是使用固定分隔符的方式,消息以固定的字符序列作为结尾,消息内部的不同字段以固定的分隔符分割;二是使用基于消息头消息体的方式,消息头的长度和格式固定,且在消息头中给出消息体的长度。本课题的多中心间的通信协议采用第一种方式,所有协议消息以#<消息类型>开头,以|end作为结尾,其他字段以#分隔。消息类型如表1所示。
图7. 远程控制的通信时序图
消息类型 | 功能 |
---|---|
#Request|end | 发起连接 |
#Response|end | 建立连接 |
#Command#content#|end | 命令信息 |
#Result#content#|end | 命令返回结果 |
#Close|end | 断开连接 |
#Datasent#content#|end | 数据发送 |
表1. 消息类型表格
通信协议中分为两类消息:
1) 控制消息:主要包括发起连接请求命令、建立连接命令、任务类型、任务运行状态以及任务进度。
2) 数据消息:主要包括迁移作业的数据长度、数据内容以及运行脚本。
通过web portal用户可以跳转到多中心终端控制页面。通过该页面,可以切换到任意一个计算中心进行远程控制,如图8所示。
用户向JMS提交任务请求时,首先根据应用类型选择作业基本属性模板,并在web portal的脚本提交界面输入作业的基本属性信息,如图9所示。一个作业基本的属性包括作业名称、队列名称、计算资源、预估运行时间和输入文件。这些信息被转化成JSDL作业描述信息并以JSON格式进行保存。
{Jobname:jobname, Queuename:queuename, Resource:resource,Walltime:walltime, Inputfile:inputfile}
除了作业基本属性信息,JMS通过扩展的作业描述语言E-JSDL来表示一个作业的属性信息,针对长时应用,作业描述信息还包括用户设定的作业迁移周期和计算灾备中心。
JMS_provider的Transfer Service模块通过JMS_agent提供的restful API将作业描述信息返回到JMS_agent的Job Manager模块。Job Manager模块将用户作业提交到计算中心的作业调度系统,根据作也的描述信息,定期将作业结果迁移到灾备中心。
JMS系统已经在国家计算网格(西安中心)和西安交通大学网络计算中心分别进行了部署和测试。JMS_provider部署在Web服务器集群上,JMS_agent分别部署在两个计算中心。LAMMPS由美国Sandia国家实验室开发,主要用于分子动力学相关的一些计算和模拟工作,LAMMPS应用支持检查点机制,可以在指定迭代步数之后进行检查点操作。下文以一个材料化学LAMMPS应用金属铜的剪切变形算力说明如何在JMS系统中进行作业迁移。
1) 通过JMS_provider提供的脚本提交界面,用户输入金属铜的剪切变形算力的作业属性,并提交。JMS_provider根据作业描述信息,将作业提交到国家计算网格(西安中心)。
2) 通过多中心作业管理界面,用户点击金属铜的剪切变形算力作业的迁移按钮进入作业迁移界面。用户选择作业的检查点文件restart. 50,000和迁移目标中心—西安交通大学网络计算中心。源中心的JMS_agent将检查点文件和作业迁移到目标中心。
在目标中心,JMS_agent根据检查点文件信息重新提交作业,恢复金属铜的剪切变形算力作业,金属铜的剪切变形算力从第50,000次迭代恢复计算。金属铜的剪切应力与计算步数的关系如图10所示。
黑色曲线为国家计算网格(西安中心)上一次性计算完成的剪切应力与计算步数的关系曲线。红色曲线
图8. 远程控制界面
图9. 脚本提交界面
为在西安交通大学网络计算中心上从50,000步恢复执行之后的结果。可以看到,两条曲线的变化趋势完全一致,也在同一应力值处剪切屈服。
需要指出的是,金属铜的剪切变形算力的作业迁移之后的曲线与原始曲线并非完全重合,这主要是由于分子动力学计算中,原子运动的随机性以及多CPU (Cores)并行计算时分配计算原子的不一致造成。
在现有计算中心调度系统的基础上,JMS系统为多计算中心的作业迁移调度提供了解决方案。在JMS系统中,用户可以同时管理多个计算中心的作业任务,通过终端控制器操作不同的计算中心。用户提交作业时,可以针对长时计算的应用做定时迁移灾备以减少由于某一个计算中心出现故障带来不必要的计算损失从而提高现有计算中心的可靠性。对于正在运行的作业,用户可以根据需要将作业迁移到其他计
图10. 金属铜的剪切应力与计算步数的关系曲线
算中心完成计算从而实现多计算中心协同工作。提高计算中心访问的安全性,提出更加安全的认证方式是下一步的研究方向。
国家重点研发计划(2016YFB0201402);海外及港澳学者合作研究基金(61628210);国家自然科学基金资助项目(91630206)。
冯鸣夏,伍卫国. 多计算中心作业迁移系统JMS的设计与实现 Design and Implementation of Job Migration System (JMS) in Multiple Computing Centers[J]. 计算机科学与应用, 2018, 08(03): 378-388. https://doi.org/10.12677/CSA.2018.83042