Linux的OpenLava配置
OpenLava
OpenLava是基於LSF早期的開源版本發展而來,其免費、開源、兼容IBM LSF的工作負載調度器。當你需要執行某項業務時候(比如跑渲染之類的),當有伺服器處於空閑狀態時候,可以直接ssh到另一個伺服器 ,在當前伺服器中的shell再執行。
角色和名稱 | 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,我分享到百度網盤:url。
先解壓,解壓後就是源碼了,安裝分三步:配置(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資訊。
#----------------------------------------------------------------------- # 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.<cluster-name>. # 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'
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也需要配置正確!
拷貝已經Server編譯好軟體包的全部,包括配置文件。當然使用NFS也可以。
scp -P 22 /data/openlava root@192.168.2.87:/data/openlava
在slave這裡啟動openlava。
# 在slave運行 /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查找一下。
[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 [email protected]:/usr/lib64/
libtcl8.5.so 100% 1213KB 22.7MB/s 00:00
再兩邊restart一下就可以了。
# server和client /data/openlava/etc/openlava restart # 如果有配置文件修改 badmin reconfig lsadmin reconfig