多集群操作方法与流程

文档序号:20917152发布日期:2020-05-29 13:40阅读:633来源:国知局
多集群操作方法与流程

本发明涉及计算机集群技术领域,具体的来说,涉及一种多集群操作方法。



背景技术:

slurm是一种开源的,容错较好的,具有高可伸缩性的集群作业调度系统,关键功能有:分配计算资源,以便执行工作任务;提供框架,用于在分配的节点集上启动、执行、监视作业;仲裁资源争夺问题。集群由一个slurmctld守护进程管理的所有节点组成。

slurm提供了将命令目标指向其他集群的能力,而不是调用命令的本地集群,或者除了本地集群之外。启用此行为后,用户可以将作业提交到一个或多个集群,并从这些远程集群接收状态。部分客户端命令现在提供“-m,--clusters=”选项,该选项提供与逗号分隔的集群列表进行通信的能力。

目前,用户进行slurm多集群操作必须用“-m,--clusters=”选项显式指定集群列表,管理员不得不将集群信息暴漏给用户,不能满足管理员的控制集群信息的需求。slurm暂未提供向用户屏蔽集群信息的功能。



技术实现要素:

针对相关技术中的上述问题,本发明提出一种多集群操作方法,能够不需要显式指定集群名称。

本发明的技术方案是这样实现的:

根据本发明的一个方面,提供了一种多集群操作方法,包括:

为用户添加一个属性;

管理员通过设置属性的值来确定用户操作单集群、或操作当前登陆集群、或操作多集群。

根据本发明的实施例,为用户添加一个属性包括:在数据库中为用户表增加一个字段,字段为用户可操作的集群名列表。

根据本发明的实施例,管理员设置属性的值包括:对于只对第一集群有权限的用户,当管理员设置字段的值为第一集群名时,如果用户登录在有权限的第一集群,则用户操作第一集群,如果用户登录在没有权限的第二集群,则用户操作第一集群。

根据本发明的实施例,管理员设置属性的值包括:对于对第一集群和第二集群均有权限的用户,当管理员设置字段的值为第一集群名时,如果用户登录在有权限的第一集群,则用户操作第一集群,如果用户登录在有权限的第二集群,则用户操作第一集群。

根据本发明的实施例,管理员设置属性的值包括:对于对第一集群和第二集群均有权限的用户,当管理员设置字段的值为当前集群名时,如果用户登录在有权限的第一集群,则用户只操作第一集群,如果用户登录在有权限的第二集群,则用户只操作第二集群。

根据本发明的实施例,管理员设置属性的值包括:对于对第一集群和第二集群均有权限的用户,当管理员设置字段的值为第一集群名和第二集群名、或者为所有集群名时,如果用户登录在有权限的第一集群,则用户操作第一集群和第二集群,如果用户登录在有权限的第二集群,则用户操作第一集群和第二集群。

根据本发明的实施例,用户操作单集群、或操作当前登陆集群、或操作多集群包括:用于提交作业至单集群、或当前登陆集群、或多集群。

根据本发明的实施例,当执行提交作业时,当需要执行多集群操作时,依次查询数据库中的用户和集群信息并返回集群列表,以从所有可用集群中选择集群以提交作业。

本发明的上述技术方案实现了一种slurm动态可配置的多集群操作方法。给用户添加一个属性,管理员通过设置该属性的值来决定用户提交作业到单集群、当前登陆集群、多集群等功能。因此,用户不需要关心集群信息,从而避免了现有技术中将集群信息暴漏给用户的问题。默认情况下用户可以提交作业到所有集群。另外,通过增强集群管理员的控制功能,满足了集群管理员保护集群信息的需求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例的多集群操作方法的流程图;

图2是根据本发明实施例的批量提交作业命令的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。

图1是根据本发明实施例的多集群操作方法的流程图。如图1所示,本发明实施例的多集群操作方法可以包括以下步骤:

s11,为用户添加一个属性;

s12,管理员通过设置属性的值来确定用户操作单集群、或操作当前登陆集群、或操作多集群。

本发明的上述技术方案,通过添加属性,管理员通过设置用户属性来决定用户操作单集群、当前登陆集群、多集群等功能。所以,与现有技术相比,用户不需要显式指定集群名称。

具体的,可以在数据库中给用户表增加一个fedandmulticluster字段,该字段意义为用户可以操作的集群名字列表,具体的设置情况包括:

(1)只对一个集群a(第一集群)有权限的用户,管理员设置fedandmulticluster=a。

用户登陆在有权限的集群a,可以操作集群a;

用户登陆在没有权限的集群b(第二集群),可以操作集群a;

(2)对两个集群a,b有权限的用户,管理员设置fedandmulticluster=a。

用户登陆在有权限的集群a,可以操作集群a;

用户登陆在有权限的集群b,可以操作集群a;

(3)对两个集群a,b有权限的用户,管理员设置fedandmulticluster=current。

用户登陆在有权限的集群a,可以只操作集群a;

用户登陆在有权限的集群b,可以只操作集群b;

(4)对两个集群a,b有权限的用户,管理员设置fedandmulticluster=a,b或fedandmulticluster=all。

用户登陆在有权限的集群a,可以操作集群a,b;

用户登陆在有权限的集群b,可以操作集群a,b。

在一个实施例中,slurm多集群操作命令众多,此处以批量提交作业命令sbatch为例说明动态配置实现原理,sbatch代码处理流程图如图2所示,其中包括:

1)sbatch命令开始执行,首先解析配置文件slurm.conf,保存一些关键参数;

2)解析并保存从作业脚本、环境变量和命令行等来源传来的参数,此处处理“-m,--clusters=”选项的情况;

3)根据以上两步获得的参数填充作业结构体,该结构体包含一个作业执行的所有必要信息;

4)根据opt.clusters判断是否执行多集群操作。如果存在多集群,则执行slurmdb_get_first_avail_cluster,该函数跟数据库守护进程slurmdbdb交互,依次执行job_will_run、slurm_job_will_run2和job_will_run_cluster,功能为从所有可用集群中选择一个合适的集群以提交作业。该函数内部调用slurmdb_get_info_cluster,依次查询mysql数据库中用户和集群信息,返回合适的集群列表信息;

5)如果不存在在多集群,则执行slurm_submit_batch_job;

6)步骤4)、5)都会调用slurm_send_resv_controller_msg,该函数将打包作业信息,并发送给用户配置的集群的管理节点守护进程slurmctld,等待调度执行。

应当理解,其他涉及多集群操作的命令可以进行与图2类似的处理。

综上所述,本发明的技术方案实现了一种slurm动态可配置的多集群操作方法。给用户添加一个属性,管理员通过设置该属性的值来决定用户提交作业到单集群、当前登陆集群、多集群等功能。因此,用户不需要关心集群信息,从而避免了现有技术中将集群信息暴漏给用户的问题。默认情况下用户可以提交作业到所有集群。另外,通过增强集群管理员的控制功能,满足了集群管理员保护集群信息的需求。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1