LSF实践专题(25):使用egroup实现动态用户组和节点组

目录

具体的设置示例

管理多个群组

同时管理节点群组和用户群组

提示


LSF集群中可以对用户和计算节点进行分组设置,划分多层级的用户群组(user group)和节点群组(host group),让管理员可以更加方便地对一组用户或者节点进行统一的管理设置。

但是有一些场景中,需要经常对群组设置进行修改,例如:

当前集群的用户中,有一部分是固定部门成员,这些用户的权限基本不会经常改变,但是有另一部分用户是根据需求,不断在各部门或项目之间变换,经常会被调配到不同的部门和项目中,也需要管理员经常对他们的权限或者隶属的用户组进行对应的调整。

如果管理员使用普通的方法修改这部分用户所属的群组,每修改一次,就需要重启一次管理节点上的mbatchd服务进程,而这个mbatchd重启之后需要依次重新与各节点上的sbatchd服务进程进行验证通信,再重新把这些节点一个个地加入到集群中并变为可用的状态。

如果集群比较忙,并且计算节点比较多,每一次重启服务进程都要对作业的调度产生明显的影响。有没有更好的办法呢?

LSF中有一个动态群组的设置,对于用户群组和节点群组都可以应用,管理员只需要按照平时的设置方法定义一个群组的名称,以及各种属性。

只有当定义群组成员时会有所不同:动态群组的群组成员会被指定到一个文本文件中,这个文件会列出所有群组成员,当管理员需要修改群组成员时,只需要修改这个文件中对应的部分就可以了,LSF的服务进程会周期性的从这个文件中获取内容,来完成对群组用户的修改。

除了可以省去重启mbatchd服务进程,减少对作业调度的影响以外,有些集群有非常大量的用户,如果使用配置文件的形式进行修改和增减,管理员的工作量很大而且很容易出现错误,这种情况下也可以通过这种动态群组的方法,来使用一些脚本输出指定群组的成员列表,减少管理员的工作量,防止出现手误的情况。

具体的设置示例

这是我们常规看到的用户群组,以及对应的配置:

图片

图片

要想使用动态群组定义,首先要设置EGROUP_UPDATE_INTERVAL参数来定义更新频率,否则动态群组定义的内容无法动态更新到LSF集群中,只能通过管理员用badmin reconfig来触发,这个操作不会重启mbatchd服务进程本身,只是重新读取配置文件并且刷新正在运行的mbatchd服务进程中对应的内存数据,效率比重启mbatchd进程要高,但还是没有自动更新方便。

1、设置egroup更新频率

默认情况下EGROUP_UPDATE_INTERVAL的值为-1,LSF不会根据egroup的内容自动更新相应群组配置。

图片

在lsb.params中设置合适的频率,这里单位默认是小时,如果想设置以分钟为单位的频率,要在数字后加上m。

这个参数是指LSF间隔多久去检查一次egroup,设置的过于频繁会浪费管理节点的资源,因为即使没有修改文件,LSF也会根据这个频率去不停地检查egroup的输出。这里为了测试方便,我们定义为5分钟,在实际应用中,可以根据“需要修改配置的频率”等需要设定成十分钟、半小时、一小时等间隔。

图片

2、定义lsb.users文件

打开lsb.users文件,将群组ug1的GROUP_MEMBER定义为(!):

图片

3、在$LSF_SERVERDIR下建立egroup文件

在$LSF_SERVERDIR下建立一个可执行文件egroup,填写内容使其最终的输出内容为想要指定的群组成员列表。示例中我们用echo来实现,在现实配置时,我们可以通过cat文本文件,使用脚本输出用户名等方式。

图片

4、为egroup文件设定可执行权限

图片

5、重启管理节点上的mbatchd服务进程

检查bugroup输出,确认已经启用动态egroup中的设置。我们看到,群组ug1的用户显示为egroup文件的输出内容——tadmin1 tadmin2。

图片

同时检查刚才设置的EGROUP_UPDATE_INTERVAL参数的值,确认生效。

图片

6、修改egroup输出

接下来我们修改egroup的输出内容。

图片

在23:30,修改了egroup文件;然后在23:32,最新的群组成员已经更新到了LSF中。

图片

管理多个群组

如果需要同时动态管理多个群组的成员,怎么办呢? 

如果有多个群组的成员设置成了(!),LSF在检查egroup时会提供相应的群组名称作为参数,我们就可以根据参数名称来编写对应的egroup脚本内容。

例如,lsb.users设置如下:

图片

我们将egroup的内容改为下面这样:

图片

重启mbatchd为ug1和ug2启用动态群组:

图片

修改egroup,改变ug1和ug2的成员:

图片

等待bugroup得到最新的成员列表。

图片

同时管理节点群组和用户群组

动态群组egroup也可以用于定义节点群组成员,同样是在lsb.hosts中定义相关群组,并且将群组成员定义为(!),来启用动态成员管理。

图片

LSF在调用egroup时,第二个参数是群组名称,第一个参数则是用于区分要更新的是节点群组(host group)还是用户群组(user group),因此,参照下面例子修改egroup脚本:

图片

重启mbatchd进程使动态群组设置生效:

图片

修改节点群组和一个用户群组的成员:

图片

等待新的动态成员生效:

图片

提示

如果在lsb.users或lsb.hosts里设置了(!),但是还没有在egroup中为该群组设置相应的输出,就通过badmin mbdrestart或badmin reconfig命令尝试使配置生效,LSF就会认为该群组的成员为空,并且不会在配置中加载这个群组,如果碰巧同时为这个群组设置了其他调度策略相关的配置,比如设置了limit,或者在某个队列中使用了这个群组作为成员,LSF就会提示这个群组不存在,并且忽略所有相关的调度设置。

动态群组管理是一个比较实用的配置管理方法,可以根据需要灵活的对用户和计算节点的分组进行管理,提高集群管理效率。

欢迎关注下方微信公众号【HPC常青园】,共同交流HPC集群管理经验和最佳实践。如果您有关于HPC集群的具体需求,欢迎邮件沟通交流:hpc@ivyent.cn。

HPC常青园

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ivyent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值