别再手动敲命令了!保姆级脚本一键部署IBM LSF社区版集群(附NFS配置避坑)

张开发
2026/4/20 23:36:22 15 分钟阅读
别再手动敲命令了!保姆级脚本一键部署IBM LSF社区版集群(附NFS配置避坑)
一键部署IBM LSF社区版集群从零到生产的自动化实践在HPC高性能计算和分布式任务调度领域IBM Spectrum LSFLoad Sharing Facility一直是企业级工作负载管理的黄金标准。但对于刚接触LSF的团队来说手动部署一个生产可用的集群往往意味着数小时的重复劳动和无数潜在的配置陷阱。本文将分享一套经过实战检验的自动化部署方案用脚本替代人工操作让您30分钟内完成从裸机到可调度集群的全流程搭建。1. 环境准备与自动化设计部署LSF集群的传统方式需要管理员在多台服务器上重复执行数十项操作包括系统配置、网络设置、软件安装等。这种手动操作不仅效率低下还容易因人为疏忽导致配置不一致。我们的自动化方案基于Shell脚本和Ansible组合实现具有以下核心优势全流程覆盖从系统初始化到LSF服务启动无需人工干预错误自检关键步骤自动验证失败时提供明确错误定位配置集中管理所有参数通过单一配置文件维护避免散落各处的魔法数字NFS优化预置高性能网络存储配置解决常见的权限和性能问题1.1 基础环境配置自动化创建cluster_config.ini作为整个部署的配置中心[cluster] master_ip 10.4.7.139 node_ips 10.4.7.140,10.4.7.141 cluster_name HPC_Cluster_01 lsf_admin lsfadmin shared_dir /opt/lsf [nfs] export_options rw,async,no_root_squash mount_options defaults对应的环境准备脚本01_prepare_env.sh包含以下关键功能#!/bin/bash # 加载配置 source ./cluster_config.ini # 禁用SELinux和防火墙生产环境需调整 setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config systemctl stop firewalld systemctl disable firewalld # 配置主机名解析 hostnamectl set-hostname $(hostname) for ip in $master_ip ${node_ips//,/ }; do grep -q $ip /etc/hosts || echo $ip $(hostname) /etc/hosts done # 创建LSF管理用户 if ! id $lsf_admin /dev/null; then useradd -m $lsf_admin -s /bin/bash echo $lsf_admin ALL(ALL) NOPASSWD:ALL /etc/sudoers fi注意生产环境中禁用SELinux和防火墙需谨慎评估安全需求本文配置针对测试环境优化2. 免密登录与NFS共享配置集群节点间的无缝通信是LSF正常工作的基础。传统SSH密钥分发和NFS配置过程繁琐且容易出错我们的自动化方案通过以下脚本实现一键配置2.1 安全SSH通道建立02_setup_ssh.sh脚本实现全自动密钥分发#!/bin/bash source ./cluster_config.ini # 生成密钥对如果不存在 if [ ! -f /root/.ssh/id_rsa ]; then ssh-keygen -t rsa -N -f /root/.ssh/id_rsa fi # 分发公钥到所有节点 for node_ip in $master_ip ${node_ips//,/ }; do sshpass -pyour_initial_password ssh-copy-id -o StrictHostKeyCheckingno root$node_ip # 验证连接 ssh root$node_ip echo SSH to $node_ip success || { echo SSH配置失败于 $node_ip exit 1 } done2.2 高性能NFS共享方案NFS配置不当会导致LSF作业执行效率低下。03_setup_nfs.sh脚本实现了优化后的共享存储配置#!/bin/bash source ./cluster_config.ini # Master节点配置NFS导出 if [ $(hostname) master ]; then # 创建共享目录 mkdir -p $shared_dir chown $lsf_admin:$lsf_admin $shared_dir # 配置exports文件 grep -q $shared_dir /etc/exports || { for node_ip in ${node_ips//,/ }; do echo $shared_dir $node_ip($export_options) /etc/exports done exportfs -a systemctl enable nfs-server systemctl restart nfs-server } else # 计算节点挂载NFS grep -q $shared_dir /etc/fstab || { echo master:$shared_dir $shared_dir nfs $mount_options 0 0 /etc/fstab mkdir -p $shared_dir mount -a echo NFS挂载成功 || exit 1 } fi常见NFS问题解决方案问题现象可能原因解决方案权限拒绝root_squash生效检查exports中的no_root_squash挂载超时防火墙阻止确认2049端口开放写入缓慢同步模式启用使用async选项提升性能3. LSF自动化安装与配置传统LSF安装需要手动解压多个压缩包、编辑配置文件我们的方案将这些步骤全部自动化3.1 智能安装包处理04_install_lsf.sh脚本处理复杂的安装包逻辑#!/bin/bash source ./cluster_config.ini LSF_TARlsfsce10.2.0.6-x86_64.tar.gz INSTALL_CONFIGinstall.config # 仅master节点执行安装 if [ $(hostname) master ]; then cd $shared_dir # 解压主安装包 tar -zxvf $LSF_TAR mv lsfsce*/lsf/*.tar.Z ./ # 提取安装程序 tar -xvf lsf10.1_lsfinstall_linux_x86_64.tar.Z # 生成自动安装配置 cat $INSTALL_CONFIG EOF LSF_TOP$shared_dir LSF_ADMINS$lsf_admin LSF_CLUSTER_NAME$cluster_name LSF_MASTER_LIST$(hostname) LSF_TARDIR$shared_dir LSF_ADD_SERVERS${node_ips//,/ } EOF # 执行静默安装 ./lsfinstall -f $INSTALL_CONFIG 1 # 配置SSH通信 echo LSF_RSHssh $shared_dir/conf/lsf.conf fi3.2 集群统一配置所有节点需要同步的环境配置通过05_configure_cluster.sh完成#!/bin/bash source ./cluster_config.ini # 所有节点配置环境变量 grep -q profile.lsf /etc/profile || { echo . $shared_dir/conf/profile.lsf /etc/profile source /etc/profile } # 设置开机自启 $shared_dir/10.1/install/hostsetup --top$shared_dir --booty # 启动服务 if [ $(hostname) master ]; then lsadmin limstartup lsadmin resstartup badmin hstartup fi4. 集群验证与排错指南部署完成后使用以下方法验证集群状态# 查看主机资源注册 lshosts # 提交测试作业 for i in {1..5}; do bsub -o output_$i.log sleep $((RANDOM%1010)) done # 监控作业状态 bjobs -l常见问题排查工具NFS连接问题showmount -e master权限错误检查/opt/lsf目录属主和SELinux上下文作业卡住查看/opt/lsf/log/lsb.events对于生产环境建议添加以下监控项到您的运维系统# 集群健康检查脚本 #!/bin/bash LIM_CHECK$(lsadmin limcheckup | grep is running) RES_CHECK$(lsadmin rescheckup | grep is running) [ -z $LIM_CHECK ] echo LIM服务异常 || echo LIM正常 [ -z $RES_CHECK ] echo RES服务异常 || echo RES正常5. 进阶配置与性能调优基础集群运行后这些优化配置可以提升生产环境表现资源限制调整# 修改lsf.conf增加资源限制 echo LSB_MAX_JOB_PER_USER500 /opt/lsf/conf/lsf.conf echo LSF_CPU_AFFINITYY /opt/lsf/conf/lsf.conf badmin reconfig队列优先级配置# 在lsb.queues中添加 Begin Queue QUEUE_NAME priority PRIORITY 50 End Queue实际项目中的经验教训避免在NFS共享目录存放大量小文件这会导致元数据操作瓶颈定期清理/opt/lsf/work目录下的临时文件使用badmin mbdrestart替代直接重启服务减少作业中断

更多文章