Openpbs centos7集群安装配置心得

写在前面

本文参考,感谢原创:
https://blog.csdn.net/weixin_45606067/article/details/109962484
https://blog.csdn.net/secyb/article/details/78697976
https://blog.csdn.net/smart9527_zc/article/details/85174102
https://blog.csdn.net/weixin_45842014/article/details/108779004
https://blog.csdn.net/zqwzlanbao/article/details/83987570
http://thisis.yorven.site/blog/index.php/2020/12/06/openpbs-install-instructions/
版权声明:以上文章为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

此外还有openpbs的官方手册,地址: https://www.altair.com/pbs-works-documentation/

涉及到的安装包:
MPICH:
https://www.mpich.org/static/downloads/3.3/mpich-3.3.tar.gz

Openpbs:https://github.com/openpbs/openpbs/releases/download/v19.1.3/pbspro_19.1.3.centos_7.zip

准备工作

1.安装虚拟机

这里我使用的Linux版本是centos7,其他linux操作系统比如Ubuntu、Fredora等和centos类似,但是有一些命令和文件的位置不同,比如说安装命令。下载系统镜像iso文件可以到清华镜像网站https://mirrors.tuna.tsinghua.edu.cn/

我使用的虚拟机平台是VMware Workstation Pro ,也可以使用免费的VMware Player进行安装,具体安装步骤可参考

VM中安装Centos7详细步骤(图文)

建议将虚拟机和虚拟硬盘放在同一个自己能找到的文件夹下,例如D:/centos7/,以便后续复制虚拟机。

在配置虚拟机网络时可直接查看虚拟机设置里的DHCP选项,直接勾选即可。如果DHCP是打开的, 那虚拟机应该是已经连上网的,可以在终端ping一下百度能不能连接上,或者直接打开Firefox试试。

ping www.baidu.com

打开网络设置
查看DHCP选项

2.创建虚拟机集群

下面表格是我在创建集群时的配置

主机IP备注
master192.68.45.131主节点
host1192.68.45.132子节点
host2192.68.45.133子节点

搭建pbs集群时我选择了一个主节点和两个子节点,可以在vm上创建多个虚拟机来模拟集群,这里我用的是复制虚拟机。

复制虚拟机的具体步骤可以参考

复制虚拟机相关文章

(也可以在VM里直接克隆虚拟机,克隆后需要更改的配置和上面这个文章相同。)

需要注意的是,本文上面提到将虚拟机和虚拟硬盘放在同一文件夹下,可以直接复制该文件夹再按照上面的文章进行虚拟机复制。

按照上述文章,发现不能同时打开被复制和复制后的虚拟机,原因是两台虚拟机占用了同一个虚拟硬盘。可以通过更改虚拟机的虚拟硬盘来解决这个问题。

  • 关闭虚拟机master和host1
  • 打开host1的虚拟机设置
    在这里插入图片描述
  • 移除现有的虚拟硬盘

在这里插入图片描述

  • 添加新硬盘在这里插入图片描述
    选择SCSI(S)
    在这里插入图片描述
    选择使用现有虚拟磁盘
    在这里插入图片描述
    选择后缀名没有s00x的这个vmdk文件,完成。
    在这里插入图片描述

SSH免密登陆

网络环境配置

两个子节点的配置操作是一样的,下面的操作就以master和host1为例。由于后面有些操作不能使用root用户,建议全程用普通用户登陆,在图形界面下打开两个终端,一个su root登陆比较方便。

分别配置两台机器的hosts文件。之前虚拟机网络设置采用的是DHCP,用ifconfig命令能够查到的机器IP地址但不是固定的。通过修改ifcfg-ens33文件可以“固定”IP。(之前我一直弄不好虚拟机固定IP,导致虚拟机连不上网,索性就忽略了,直接改系统的配置文件,没想到这样既能保持联网,还能保证后面的安装进行)

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
#在文件尾添加
IPADDR=192.68.45.131
DNS1=114.114.114.114
#同样在host1上配置,IP地址改为192.68.45.132
#重启网络
sudo systemctl restart network
#查看是否更改成功
ifconfig

在重启网络后查看IP地址有时可能会发现inet与文件中添加的IPADDR不同,但是没有影响我后面的安装,可以先不管。

分别在master和host1中编辑hosts文件。

sudo vim /etc/hosts
#在文件中写入所有节点的IP和机器名,例如
192.68.45.131 master
192.68.45.132 host1
更改机器名可以用
hostnamectl set-hostname <机器名称>(命令中不包括尖括号)
#设置好hosts和host那么之后最好重启

此时两台机器应该能ping通(master ping host1)

ssh免密登陆

(1)在每个节点安装ssh服务

sudo yum install openssh
sudo systemctl start sshd
#启动ssh

(2)各节点(主节点和子节点)生成私钥和公钥

ssh-keygen -t rsa  
#生成的的钥匙文件在~/.ssh/下
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
#认证,执行该步后可以本机免密登陆,使用ssh master测试

(3)把各子节点的id_rsa.pub传到主节点

scp id_rsa.pub <用户名>@master:~/.ssh/id_rsa.pub.host1

(4)在主节点操作认证

cat ~/.ssh/id_rsa.pub.host1 >> ~/.ssh/authorized_keys 
cd ~/.ssh/

(5)将主节点的认证文件传回子节点

scp authorized_keys <用户名>@host1:~/.ssh/authorized_key
sudo systemctl restart sshd

注意,ssh免密登陆是用户对用户式的,所以在操作中要保证主节点终端和子节点的终端是对应的。

建立NFS共享目录

关闭各节点防火墙和Selinux

关闭防火墙
启动:       systemctl start firewalld
关闭:       systemctl stop firewalld
开机禁用:    systemctl disable firewalld
开机启用:    systemctl enable firewalld
关闭Selinux
临时关闭
开启:    setenforce 1
关闭:    setenforce 0

服务端(master)

yum install nfs-utils rpcbind
#安装软件
mkdir -p /home/mpi_share
#创建共享目录
chmod 777 /home/mpi_share -R
#授予权限
vim /etc/exports
#修改配置
写入:
/home/mpi_share 192.68.45.132(rw,sync,no_root_squash) <其他子节点地址>(rw,sync,no_root_squash)
#192.68.45.132是子节点的地址,也可以是主机名,权限选项中的rw表示允许读写;ro为只读;sync表示同步写入,no_root_squash表示当客户机以root身份访问时赋予本地root权限。
systemctl start rpcbind
systemctl start nfs
#启动nfs,或者设置为开机启动
systemctl enable rpcbind
systemctl enable nfs
showmount -e
#查看NFS服务器端的共享目录

客户端(host1)

yum install nfs-utils rpcbind

mkdir -p /home/mpi_share
#将各个节点的共享目录位置和名字设置成一样的

systemctl start rpcbind

systemctl start nfs
#同样可以设置开机启动
showmount -e 192.68.45.131
#显示服务端的共享目录
mount -t nfs 192.68.45.131:/home/mpi_share /home/mpi_share
#前者是服务端的共享目录,后者是客户端的目录
#将共享目录挂载到本地文件夹

测试:
cd /home/mpi_share
touch test.txt
#创建txt文件

在服务端上:
cd /home/mpi_share
ls
#查看是否生成txt文件

mount命令是暂时的,机器重启后失效,永久挂载可以用下面的方法:

vim /etc/fstab
添加
192.68.45.131:/home/mpi_share /home/mpi_share nfs rw 0 0

这样设置的是在开机自动挂载,每次使用的时候需要先将服务端开启,否则客户端挂载不上共享目录,有1分35秒的尝试时间,可以在开机页面摁下Ctrl+Alt+2转到命令行下查看,能开机但是共享目录不可用。

安装配置mpich

安装编译器

yum install gcc g++
#mpich默认的编译器是gcc,g++和gfortran,但是yum命令找不到gfortran的安装包
#可以自行查找安装gfortran编译器的方法

解压编译

这里我将安装包放在了~/download/下

cd ~/download
tar -zxvf mpich-3.3.tar.gz
#解压压缩包
cd ./mpi-3.3
#进入解压后的目录,有一个README文件有详细的安装步骤
./configure --disable-fortran
#这里的后缀会取消掉Fortran的配置,在README中有介绍
make
make install
#配置编译的时间比较长
#可以自行设置安装路径

在每个节点下都安装mpich,可以将tar压缩包放在之前设置好的共享目录下。

配置环境

  • 新建配置文件
    在/home/mpi_share下新建一个文件:servers,它注明每台机器有几个核。
cd /home/mpi_share

sudo vim mpi_config_file
写入:
master:4
host1:4
host2:4
  • 测试案例程序
    在之前解压的mpich-3.3目录下的examples目录下有可执行文件cpi,我们运行它即可。

将可执行文件复制到共享目录/home/mpi_share/中,切换到共享目录下

cd /home/mpi_share

mpiexec -n 8 -f ./servers ./cpi
#-n 表示人物需要的核数,-f表示参考的配置文件,最后是可执行文件

成功结果如下:
[cjx@master mpi_share]$ mpiexec -n 8 -f servers ./cpi
Process 4 of 8 is on host1
Process 5 of 8 is on host1
Process 6 of 8 is on host1
Process 7 of 8 is on host1
Process 0 of 8 is on master
Process 3 of 8 is on master
Process 1 of 8 is on master
Process 2 of 8 is on master
pi is approximately 3.1415926544231247, Error is 0.0000000008333316
wall clock time = 0.001251

Openpbs安装

配置环境

这里我将压缩文件pbspro_19.1.3.centos_7.zip放在~/download/下

unzip pbspro_19.1.3.centos_7.zip

解压后的目录下有四个rpm安装包,根据名字即可推断其用途,这里我们只需要两个包
pbspro-server-19.1.3-0.x86_64.rpm是服务器节点(主节点)所需要安装的包
pbspro-execution-19.1.3-0.x86_64.rpm是计算节点(子节点)所需要安装的包

安装前需要配置一些环境,下面是官方手册给出的环境变量图,不过我设置半天也没整明白,下面给出我试成功的办法。

在这里插入图片描述
在主节点上不需要设置这些环境变量

在子节点上需要在安装前先设置环境变量

export PBS_SERVER=master
export PBS_EXEC=/opt/pbs
export PBS_HOME=/var/spool/pbs

安装

- 主节点

进入解压后的目录

yum install pbspro-server-19.1.3-0.x86_64.rpm

安装后生成一个配置文件/etc/pbs.conf
用vim打开后在里面找到PBS_START_MOM,它表示当前机器是否承担计算任务,1表示承担,0表示不承担。
下面开启pbs并查看状态

systemctl start pbs

/etc/init.d/pbs status
#查看运行状态
会有以下类似输出:
pbs_server is pid 6661
pbs_mom is pid 6270
pbs_sched is pid 6282
pbs_comm is 6242
如果有错误的话可以su root后再试试

在server上使用root 用户还需要输入以下命令

qmgr -c"set server flatuid=true"
qmgr -c "set server schduling=true"
qmgr -c "set server job_history_enable=1"

至此,server的配置安装完成。

- 子节点

进入解压后的目录

export PBS_SERVER=master
export PBS_EXEC=/opt/pbs
export PBS_HOME=/var/spool/pbs

yum install pbspro-execution-19.1.3-0.x86_64.rpm

systemctl start pbs

/etc/init.d/pbs status
显示以下类似内容
pbs_mom is pid 6270

- 添加节点
此时主节点server还不能调用子节点进行运算,需要在主节点中添加计算节点

su root
#用root用户操作
qmgr -c "create node host1"
#host1就是想要添加的计算节点
pbsnodes -a     或者   pbsnodes -aSj
#输出所有节点的信息
#节点state显示free,说明节点可用

- 测试
在一般用户下,在master上提交任务

echo "sleep 600" | qsub
#提交一个最简单的任务
qstat -a
#查看运行的任务状态
qstat -H
#查看历史任务

实际使用中,经常以脚本方式提交命令,
在脚本中用mpiexec或者mpirun运行mpich.

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值