自定义LSF服务管理

自定义LSF服务管理

背景

传统的LSF服务管理是通过命令行操作的,而且需要如下多个命令:

  • 启动LSF服务

lsadmin limstartup

lsadmin resstartup

badmin hstartup

  • 停止LSF服务

badmin hshutdown

lsadmin resshutdown

lsadmin limshutdown

可见管理很不方便。后续又引入了单条命令来管理LSF服务:

  • 启动LSF服务

lsf_daemons start

  • 停止LSF服务

lsf_daemons stop

相对来讲简化了操作,但并不符合操作系统的服务管理规范。因此又引入了 lsfd.service 服务,可以通过 systemctl 服务管理工具来管理LSF服务。

问题

LSF服务由三个服务进程组成,分别是LIM、RES、SBD;在实践中发现lsfd.service并不能有效地管理这三个服务,如果其中的一个服务掉线后并不能自动拉起。 为了解决这个问题,在最新的LSF 10.1.14 pack中在保留原有lsfd.service的基础上又引入三个服务,分别管理LIM、RES和SBD服务进程,这样LSF的服务项达到了四个之多。感觉增加了管理的复杂度。

解决方案

我们可以通过自定义LSF服务的方法简化管理。方法是在服务进程中定时查看LIM、RES和SBD服务进程,如果发现有进程掉线就及时拉起服务。 以下是示例:

  1. lsfd.service 示例
bash 复制代码
[Unit]
Description=IBM Spectrum LSF
After=remote-fs.target network.target nfs.service autofs.service gpfs.service nscd.service

[Service]
Type=simple
ExecStartPre=/bin/bash -c '(timer=12; while (( $timer )); do if [ ! -d "/lsf/10.1/linux3.10-glibc2.17-x86_64/etc" ]; then sleep 5; else exit 0; fi; timer=$[$timer-1]; done; echo "/lsf/10.1/linux3.10-glibc2.17-x86_64/etc not found." 1>&2; exit 1;)'
ExecStart=/lsf/10.1/linux3.10-glibc2.17-x86_64/etc/lsfwatchdog.sh start
ExecStop=/lsf/10.1/linux3.10-glibc2.17-x86_64/etc/lsfwatchdog.sh stop
KillMode=none
LimitMEMLOCK=infinity
Delegate=yes

[Install]
WantedBy=multi-user.target
  1. lsfwatchdog.sh 示例
bash 复制代码
#!/bin/bash

function checkLSFService() {
    .  /lsf/conf/profile.lsf
    logfile="/lsf/log/watchdog.`hostname`.log"
    services_num=$( ps -lf -u root |egrep "$LSF_SERVERDIR/sbatchd|$LSF_SERVERDIR/lim|$LSF_SERVERDIR/res"|grep -v grep |wc -l )
    [ $services_num -lt 3 ] && {
        date >> $logfile
        echo "LSF services is missing." >> $logfile
        ps -lf -u root |egrep "$LSF_SERVERDIR/sbatchd|$LSF_SERVERDIR/lim|$LSF_SERVERDIR/res"|grep -v grep  >> $logfile
        echo "Start LSF services." >> $logfile
        /lsf/10.1/linux3.10-glibc2.17-x86_64/etc/lsf_daemons start
        echo "LSF Service started" >> $logfile
        ps -lf -u root |egrep "$LSF_SERVERDIR/sbatchd|$LSF_SERVERDIR/lim|$LSF_SERVERDIR/res"|grep -v grep  >> $logfile
    }
}

function start() {
   (
    while true
    do
        checkLSFService
        sleep 60
    done
   ) &
}

function stop() {
    .  /lsf/conf/profile.lsf
   /lsf/10.1/linux3.10-glibc2.17-x86_64/etc/lsf_daemons stop
   pkill lsfwatchdog.sh
}

case $1 in
"start")
    start
    ;;
"stop")
    stop
    ;;
esac

结论

在 LSF 10.1.12 集群中经测试,目前运行良好,掉线的服务可以被及时拉起。 同时,在系统运维操作需要停止服务时也能迅速停止服务。

相关推荐
readhere5 小时前
从ZYNQ7000开发板,学会启动嵌入式Linux系统——入门学习:EBAZ4205篇目录
linux·启动·嵌入式linux·zynq7000·ebaz4205
打工仔折腾 AI6 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
‎ദ്ദിᵔ.˛.ᵔ₎6 小时前
关于Linux 线程局部存储的认识
linux·运维
小小de风呀8 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
晚风吹北巷10 小时前
Linux复习篇(自用)
linux·运维·服务器·1024程序员节
by2099911 小时前
Linux 压缩传输、进程查看与权限管理
linux·经验分享·1024程序员节
无足鸟ICT11 小时前
【RHCA+】reboot命令(重启)
linux·运维·服务器·1024程序员节
DYWorker00112 小时前
第1课:基于正点原子RK3568开发板读懂Linux内核
linux·运维·网络
Android系统攻城狮13 小时前
Linux FFmpeg深度解析之avformat_open_input调用流程与实战(一)
linux·运维·ffmpeg·车载音视频·ffmpeg音视频·音视频进阶手册