• Linux的OpenLava配置


    OpenLava

    OpenLava是基于LSF早期的开源版本发展而来,其免费开源兼容IBM LSF的工作负载调度器。当你需要执行某项业务时候(比如跑渲染之类的),当有服务器处于空闲状态时候,可以直接ssh到另一个服务器 ,在当前服务器中的shell再执行。当然其实使用openlava完全可以简化这个过程。

    • 本次主要配置几个关注点:
      • Server安装编译openlava
      • Server要配置NIS Server(主要是为了让openlava账户同步,如果不想配置NIS,可以useradd,但是请确保GID和UID和Server一致)
      • Server要配置NFS Server(主要是为了让Slave挂载Server上的已经编译好的openlava的二进制文件配置文件,但是也可以全部的Slave都安装编译openlava或者源代码拷贝,注意配置文件也要相匹配即可)
      • Slave也需要安装openlava,可以直接编译或者直接NFS使用NIS Server的文件,但是其实为了稳定性,建议还是在slave单独再安装一次)
      • Slave需要配置NIF Client,以确保openlava账号同步。

    角色和名称 IP,mask24 备注
    Server_149 192.168.2.149  
    Slave_87 192.168.2.87  
    Slave_78 192.168.2.78  
    Slave_57 192.168.2.57  

    Server主节点

    安装

    IBM的LSF做得很好,但是LSF是付费的,openlava是模仿来做的,功能基本上大差不差。后来openlava被IBM收购了,所以openlava的教程可能就偏少了。

    # 安装一下编译所需要的环境
    yum -y install tcl-devel ncurses-devel

    需要下载openlava的源代码,openlava-4.0.tar.gz,我分享到网盘:https://files.cnblogs.com/files/blogs/764974/openlava-4.0.tar.gz?t=1662120274

    先解压,解压后就是源码了,安装分三步:配置(configure)、编译(make)、安装(make install),如果前一步失败,后一步也不能正常进行。

    # 解压到当前文件夹,会生成个同名openlava文件夹
    tar -zxvf openlava-4.0.tar.gz
    
    # 进入源码文件夹中
    cd openlava-4.0
    复制代码
    # 配置configgure,加上prefix参数,配置安装路径,方便以后维护
    # 请注意报错信息,如果缺少某些依赖需要安装才可以进行下一步
    ./configure --prefix=/data/openlava
    
    # 如果发现报错
    # 比如
    checking for Tcl_CreateInterp in -ltcl... no
    checking for Tcl_CreateInterp in -ltcl8.6... no
    checking for Tcl_CreateInterp in -ltcl86... no
    checking for Tcl_CreateInterp in -ltcl8.5... no
    checking for Tcl_CreateInterp in -ltcl85... no
    checking for Tcl_CreateInterp in -ltcl8.4... no
    checking for Tcl_CreateInterp in -ltcl84... no
    checking for Tcl_CreateInterp in -ltcl8.3... no
    checking for Tcl_CreateInterp in -ltcl83... no
    checking for Tcl_CreateInterp in -ltcl8.2... no
    checking for Tcl_CreateInterp in -ltcl82... no
    checking for Tcl_CreateInterp in -ltcl8.1... no
    checking for Tcl_CreateInterp in -ltcl81... no
    checking for Tcl_CreateInterp in -ltcl8.0... no
    checking for Tcl_CreateInterp in -ltcl80... no
    configure: error: cannot build openlava without tcl8.*
    比如请下载完整你的包
    复制代码
    复制代码
    # 编译,make,这里的-j参数定义了使用线程数,这里是2线程
    # 可以用下面的命令查看线程数
    # grep 'processor' /proc/cpuinfo | sort -u | wc -l
    make -j 2
    
    # 安装
    make install
    复制代码

    安装好后,可以查看之前在configure定义的prefix路径,即/data/openlava,里面会有make的二进制文件。

    复制代码
    [root@server_149 openlava-4.0]# ll /data/openlava/
    total 8
    drwxr-xr-x. 2 root root 4096 2022-09-01 19:13 bin
    drwxr-xr-x. 2 root root   22 2022-09-01 19:13 etc
    drwxr-xr-x. 2 root root   52 2022-09-01 19:13 include
    drwxr-xr-x. 2 root root 4096 2022-09-01 19:13 lib
    drwxr-xr-x. 2 root root    6 2022-09-01 19:13 log
    drwxr-xr-x. 2 root root  125 2022-09-01 19:13 sbin
    drwxr-xr-x. 3 root root   17 2022-09-01 19:13 share
    drwxr-xr-x. 3 root root   20 2022-09-01 19:13 work
    复制代码

    以及源码中的config/配置文件。

    这里我的安装路径是/data/openlava/,源代码解压的路径是~/openlava-4.0/

    需要将这些文件进行cp或者ln -s软连接也可以,我推荐ln。

    复制代码
    #可以cp
    cp -rf ~/openlava-4.0/config/* /data/openlava/etc/
    cp -rf /data/openlava/etc/openlava /etc/init.d/
    cp -rf /data/openlava/etc/openlava.sh /etc/profile.d/
    cp -rf /data/openlava/etc/openlava.csh /etc/profile.d/
    
    # 也可以ln -s
    cp -rf ~/openlava-4.0/config/* /data/openlava/etc/
    ln -s /data/openlava/etc/openlava /etc/init.d/
    ln -s /data/openlava/etc/openlava.sh /etc/profile.d/
    ln -s /data/openlava/etc/openlava.csh /etc/profile.d/
    复制代码

    配置用户和主机

    创建用户和用户组

    存在/data/openlava/etc/lsf.cluster.<用户名>文件,以openlava用户为例,即对应的配置文件为/data/openlava/etc/lsf.cluster.openlava

    请注意要先配置好了NIS Server ,在Server上配置,在Slave上配置NIS Client,以方便同步用户在其他Slave。关于NIS请见我之前的文章。也可以一个一个ssh进去,本地创建,但是注意id要一致。

    复制代码
    # 创建用户和组,名称,openlava
    [root@server_149 ~]# groupadd --system openlava
    [root@server_149 ~]# useradd --system -g openlava -d /usr/lib/openlava -s /sbin/nologin openlava
    # 设置目录权限
    [root@server_149 ~]# chown -R openlava:openlava /data/openlava/
    [root@server_149 ~]#
    复制代码

    编辑配置文件/data/openlava/etc/lsf.cluster.openlava,依据规划:

    角色和名称 IP,mask24
    Server_149 192.168.2.149
    Slave_87 192.168.2.87
    Slave_78 192.168.2.78
    Slave_57 192.168.2.57

     在Begin Host和End Host之间写入Slave信息。这里hostname其实对应域名解析后的IP。

    复制代码
    #-----------------------------------------------------------------------
    # T H I S   I S   A    O N E   P E R   C L U S T E R    F I L E
    #
    # This is a sample cluster definition file.  There is a cluster
    # definition file for each cluster.  This file's name should be
    # lsf.cluster..
    # See lsf.cluster(5) and the "LSF Administrator's Guide".
    #
    
    Begin   ClusterAdmins
    Administrators = openlava
    End    ClusterAdmins
    
    Begin   Host
    HOSTNAME          model          type  server  r1m  RESOURCES
    # yourhost                  IntelI5      linux   1      3.5    (cs)
    # 只修改这里就可以了,用vim,yy复制注释,p粘贴,修改一下yourhost就可以了
    server_149                  IntelI5      linux   1      3.5    (cs)
    slave_97                  IntelI5      linux   1      3.5    (cs)
    slave_78                  IntelI5      linux   1      3.5    (cs)
    slave_57                  IntelI5      linux   1      3.5    (cs)
    End     Host
    
    Begin ResourceMap
    RESOURCENAME  LOCATION
    # tmp2          [default]
    # nio           [all]
    # console       [default]
    End ResourceMap 
    复制代码

     ssh免密登录

    免密登录之前有文章写过了,感兴趣的可用于去我主页看一下详细的介绍,这里直接快速进行。

    复制代码
    # 生成秘钥
    ssh-keygen -t ed25519
    # 三次回车
    
    # 将server的公钥copy给全部的slave,依次yes,输入密码
    ssh-copy-id root@192.168.2.87 -p 22 ssh-copy-id root@192.168.2.78 -p 22 ssh-copy-id roo配置t@192.168.2.57 -p 22
    复制代码

    hosts

    依据之前的IP和host设定,设置一下Hostname,和Hosts文件。

     hostnamectl set-hostname server_149
    # hosts文件应该会写吧
    # ip(空格)域名
    # 127.0.0.1 server
    # 用echo追加吧
    echo -e '192.168.2.149 server_149\n192.168.2.87 slave_87\n192.168.2.78 slave\n192.168.2.57 slave_57'>>/etc/hosts

    server写好的host可以直接scp给slave。

    #当然,你确保hosts中没有其他内容,不然就覆盖了,谨慎使用!安全起见,还是用>>追加吧,
    scp
    -P 22 /etc/hosts root@192.168.2.87:/etc/hosts 

    Slave从节点

    Slave作为从节点也需要安装openlava,其中lsf.cluster.openlava要保持一致,注意/etc/hosts也需要配置正确!

    • 一般情况有三种方法:
      • Slave也和Server一样配置安装openlava(经历make等过程);
      • 也可以直拷贝Slave编译好的二进制文件,如果有lib文件缺失copy一下;
      • 或者使用NFS来同名挂载,如果有lib文件缺失copy一下。(按理来说这个最推荐的,但是因为之前有介绍过nfs了,这次就使用copy大法)

    本次以第二种情况为例子:

    拷贝已经Server编译好软件包的全部,包括配置文件。

    scp -P 22 /data/openlava root@192.168.2.87:/data/openlava

    在slave这里启动openlava。

    # 在slave安装路径运行,因为没有连接到/etc/init.d/,所以还是就只好在绝对路径中执行了
    /data/openlava/etc/openlava start # 在server中重载 badmin reconfig lsadmin reconfig
    复制代码
    [root@slave_87 log]# /data/openlava/bin/bhosts
    HOST_NAME          STATUS       JL/U    MAX  NJOBS    RUN  SSUSP  USUSP    RSV
    server_149         ok              -      2      0      0      0      0      0
    slave_57           ok              -      1      0      0      0      0      0
    slave_78           ok              -      1      0      0      0      0      0
    slave_87           ok              -      1      0      0      0      0      0
    复制代码

    如果报错请查看是不是少了什么文件,从server在copy过来。

    复制代码
    [root@slave_87 ~]# /data/openlava/etc/openlava start
    Starting daemons...
    /data/openlava/sbin/lim: error while loading shared libraries: libtcl8.5.so: cannot open shared object file: No such file or directory
    lim started
    /data/openlava/sbin/res: error while loading shared libraries: libtcl8.5.so: cannot open shared object file: No such file or directory
    res started
    /data/openlava/sbin/sbatchd: error while loading shared libraries: libtcl8.5.so: cannot open shared object file: No such file or directory
    sbatchd started
    复制代码

     因为我们缺少必要的libtcl8.5.so

    用Find在Server查找一下,再cpoy到Slave。

    复制代码
    [root@server_149 ~]# find / -name libtcl8.5.so
    find: ‘/run/user/0/gvfs’: Transport endpoint is not connected
    find: ‘/run/user/1000/gvfs’: Permission denied
    /usr/lib64/libtcl8.5.so
    [root@server_149 ~]# scp -P 22 /usr/lib64/libtcl8.5.so root@192.168.2.87:/usr/lib64/
    libtcl8.5.so 100% 1213KB 22.7MB/s 00:00
    复制代码

    再两边restart一下就可以了。

    # Server和Slave
    /data/openlava/etc/openlava restart
    # 如果有配置文件修改,请更新一下配置
    badmin reconfig
    lsadmin reconfig

     ---

    更新日志

    • 2022年09月02日 18:20
      • 完成了初稿:Sever上openlava的安装配置、Slave上copy同样配置的方法
    • 2022年09月03日
      • 补充从Server copy Slave可能遇到缺少库的问题,并且提出了解决方法
      2022年10月20日 09:53:06
      • 更新了图,优化了部分格式
  • 相关阅读:
    控制原理 | PID控制的三个参数如何影响控制效果?(附参数整定方法)
    CodeQL使用流程
    数据结构之图(最短路径问题)
    UM2080F32——32位SoC芯片
    Element UI + VUE + datetimerange + el-date-picker + computed 实现开始结束时间联动
    JDK21更新内容:临时变量
    js中的原型链
    base_lcoal_planner的LocalPlannerUtil类中getLocalPlan函数详解
    未来展望:Starday供应链火力全开,为跨境电商再添动力!
    【王者工具-Valgrind】Valgrind_Memcheck工具使用总结(01)
  • 原文地址:https://www.cnblogs.com/alittlemc/p/16646098.html