自定义LSF服务管理

2024-04-05 01:04
文章标签 服务 自定义 管理 lsf

本文主要是介绍自定义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 示例
[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 示例
#!/bin/bashfunction checkLSFService() {.  /lsf/conf/profile.lsflogfile="/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 >> $logfileecho "LSF services is missing." >> $logfileps -lf -u root |egrep "$LSF_SERVERDIR/sbatchd|$LSF_SERVERDIR/lim|$LSF_SERVERDIR/res"|grep -v grep  >> $logfileecho "Start LSF services." >> $logfile/lsf/10.1/linux3.10-glibc2.17-x86_64/etc/lsf_daemons startecho "LSF Service started" >> $logfileps -lf -u root |egrep "$LSF_SERVERDIR/sbatchd|$LSF_SERVERDIR/lim|$LSF_SERVERDIR/res"|grep -v grep  >> $logfile}
}function start() {(while truedocheckLSFServicesleep 60done) &
}function stop() {.  /lsf/conf/profile.lsf/lsf/10.1/linux3.10-glibc2.17-x86_64/etc/lsf_daemons stoppkill lsfwatchdog.sh
}case $1 in
"start")start;;
"stop")stop;;
esac

结论

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

这篇关于自定义LSF服务管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/877271

相关文章

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的