前言:在LSF系统管理中,正反向IP地址解析是LSF集群各节点通信的重要组成部分,缺少正反向解析的LSF集群将无法提交JOB,亦无法执行JOB。
在LSF软件默认缺省的情况下,LSF解析通常遵守以下顺序
1、 默认系统hosts文件,即 /etc/hosts
2、 LSF自带的解析文件,在LSF_CONFIGDIR目录中
3、 默认系统DNS,即 /etc/resolv.conf中配置的DNS服务器
其中,1与2的格式相同,如下:
IPaddress hostname alias_hostname
在大规模、超大规模的LSF集群中,通常使用DNS作为正反向解析的依据。但是由于DNS的不确定性,尤其是在动态提交节点的情况下,每个提交节点都需要在DNS上注册正反向解析记录,因此可能存在DNS更新不及时或者注册不成功的情况。
在这种情况下,可通过LSF自带的解析文件形式补充DNS记录,实现动态提交节点的正反向解析补充。
一、在LSF_CONFIGDIR目录中创建一个HOSTS文件,并赋予777的权限
#cd /xxx/lsf/conf/ #touch lsf_hosts #chmod 777 lsf_hosts
二、在一个公共目录创建一个自动更新的脚本update_lsf_hosts.csh
#!/bin/csh -f
set TARGET_IP = `/sbin/ip a s |grep 10.1 |awk -F " " '{print $2}'|awk -F "/" '{print $1}'`
#此处用来获取IP地址
set TARGET_HOST = `hostname`
#此处用来获取主机名
set HOSTS_FILE = "/xx/lsf/conf/lsf_hosts"
#此处定义lsf_hosts文件位置
set DNS_NAME = `echo $TARGET_IP $TARGET_HOST`
此处组合IP地址和主机名为hosts格式
#echo $DNS_NAME
if ( !( $TARGET_HOST =~ "*fasteda*" ) ) then
#此处需要用户自行判断主机名的信息
exit 0
endif
#判断主机名在lsf_hosts文件中是否存在,进行下面的操作
if ( `grep -c "$DNS_NAME" "$HOSTS_FILE"` > 0 ) then
echo "${TARGET_IP} ${TARGET_HOST}"
# echo "EXIST $TARGET_IP $TARGET_HOST"
exit 0
endif
#echo "NOT found host ,start work..."
#由于sed命令需要文件所在目录的写权限,因此采用下面的方法进行删除与替换
set TEMP_FILE = `mktemp`
cat $HOSTS_FILE |grep -v -E "$TARGET_IP|$TARGET_HOST" > $TEMP_FILE
echo $DNS_NAME >> $TEMP_FILE
cat $TEMP_FILE > $HOSTS_FILE
echo "You First use this system"
echo "Please wait 30s .............."
三、将此脚本赋予权限,并设置到用户的默认csh文件中进行source操作
#chmod 755 update_lsf_hosts.csh #echo “source /xxx/update_lsf_hosts.csh” > /home/xxx/.cshrc
注意:这里是一个实例,如果是统一的cshrc文件,那最好了,直接写在这个文件中
用户在下次启动动态节点的时候,将自动将IP与hostname关系写入到/xx/lsf/conf/lsf_hosts文件中,并且lsf会优先DNS读取这个文件。
实例效果如下:
#cat /xx/lsf/conf/lsf_hosts 10.1.1.58 sub01.fasteda.cn 10.1.1.56 sub02.fasteda.cn 10.1.1.78 sub03.fasteda.cn 10.1.1.54 sub04.fasteda.cn 10.1.1.79 sub05.fasteda.cn
同时,本内容适用于缺少DNS服务器,但是需要使用动态节点的情况。当然,具备管理员权限的节点,可以使用EGO的方式,原理差不多。


网友留言: