LSF实践专题(5):关于egroup的使用

 我们可能常常需要调整LSF主机组的成员,这需要修改lsb.hosts配置文件并执行badmin reconfig完成。但是如果主机组成员经常发生变化,有没有更好的办法避免手动重新配置LSF?

LSF提供的egroup功能可以帮助我们实现动态调整主机组成员而不用执行badmin reconfig。具体实现方法如下:

1. 在lsb.hosts文件里配置主机组成员时,将GROUP_MEMBER设置成(!)。

2. 编写一个egroup脚本,脚本的输入选项为-m <group_name>,mbatchd会自动调用egroup脚本,通过egroup -m <group_name>运行结果来为主机组的成员赋值。

例如:

1. 在lsb.hosts配置文件里,将主机组hgroup的GROUP_MEMBER参数配置成(!)。

2. mbatchd自动调用egroup -m hgroup,并根据返回结果设置hgroup主机组成员。

接下来我们通过一个具体的示例来配置egroup。

1. 在lsb.hosts里配置egroup主机组

Begin HostGroup
GROUP_NAME GROUP_MEMBER
hgroup1 (!)
hgroup2 (!)
hgroup3 (!)
End HostGroup

注释:

我们在这里配置了hgroup1、hgroup2和hgroup3三个主机组,主机组成员配置成感叹号(!),意味着从egroup里获取成员。

2.  编写egroup脚本和相关文件

(1) egroup脚本如下:

$ cat egroup
#!/bin/sh
hg=/share/host_group  # 定义主机组成员文件路径

if [ "$1" == "-m" ]; then
   cat $hg/$2         # 简单示例,可以根据需要实现更复杂的逻辑
fi

(2) 配置存放主机组成员名称的文件,内容如下:

$ cat /share/host_group/hgroup1
host1_1 host1_2 host1_3

$ cat /share/host_group/hgroup2
host2_1 host2_2 host2_3

$ cat /share/host_group/hgroup3
host3_1 host3_2 host3_3

(3) 测试egroup脚本:

$ egroup -m hgroup1
host1_1 host1_2 host1_3

$ egroup -m hgroup2
host2_1 host2_2 host2_3

$ egroup -m hgroup3
host3_1 host3_2 host3_3

注释:

  • egroup脚本名称只能是egroup,不能更改成其它名称或者添加扩展名。

  • 需要提前创建共享目录/share/host_group,用于存放主机组文件,如果使用别的目录,需要修改egroup脚本里的hg变量。如果不是共享目录,管理节点切换时,新的管理节点有可能访问不到这个目录。

  • 在/share/host_group目录下存放主机组成员的文件名需要和对应主机组名相同,如果不同,需要修改egroup脚本。

  • 主机组文件里存放成员主机名称,用空格分隔。

  • 在egroup脚本里需要处理脚本的两个输入选项,第一个输入选项必须是-m,第二个输入选项是一个主机组名称,egroup脚本的输出则是这个主机组包含的成员。

3.  部署egroup脚本

(1) 将egroup脚本放到$LSF_SERVERDIR目录下,并赋予执行权限。

(2) 在lsb.params文件里配置EGROUP_UPDATE_INTERVAL参数,每24小时(或指定的其它时间周期)自动执行一次egroup:

EGROUP_UPDATE_INTERVAL=24

这个周期从badmin reconfig后开始计时。

(3) 执行badmin reconfig使配置生效。

4. 主机组成员变动

根据需要修改/share/host_group目录下hgroup1、hgroup2和hgroup3文件的内容即可。LSF按照EGROUP_UPDATE_INTERVAL周期性执行egroup脚本自动更新主机组成员。

5. egroup生效后,检查主机组成员

(1) 运行bmgroup命令查看主机组成员:

$ bmgroup hgroup1
GROUP_NAME    HOSTS
hgroup1       host1_1 host1_2 host1_3

$ bmgroup hgroup2
GROUP_NAME    HOSTS
hgroup1       host2_1 host2_2 host2_3

$ bmgroup hgroup3
GROUP_NAME    HOSTS
hgroup1       host3_1 host3_2 host3_3

(2) 修改主机组成员后,在下一个EGROUP_UPDATE_INTERVAL周期,bmgroup命令显示新的主机组成员已经被自动更新:

$ cat /share/host_group/hgroup1
host1_1 host1_2 host1_3 host1_4 host1_5 host1_6

$ bmgroup hgroup1
GROUP_NAME    HOSTS
hgroup1       host1_1 host1_2 host1_3 host1_4 host1_5 host1_6

用同样的方法也可以处理用户组,在lsb.users里将用户组成员设置成(!),将egroup脚本的第一个输入选项设置为-u,第二个输入选项设置为一个用户组名称,其它步骤类似。由于篇幅有限,在这里就不作过多介绍。

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

HPC常青园

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ivyent

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

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

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

打赏作者

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

抵扣说明:

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

余额充值