Openpbs centos7集群安装配置心得

  • 写在前面
  • 准备工作
    • 1.安装虚拟机
    • 2.创建虚拟机集群
  • SSH免密登陆
    • 网络环境配置
    • ssh免密登陆
  • 建立NFS共享目录
    • 关闭各节点防火墙和Selinux
    • 服务端(master)
    • 客户端(host1)
  • 安装配置mpich
    • 安装编译器
    • 解压编译
    • 配置环境
  • Openpbs安装
    • 配置环境
    • 安装

写在前面

本文参考,感谢原创:
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


2.创建虚拟机集群

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

主机 IP 备注
master 192.68.45.131 主节点
host1 192.68.45.132 子节点
host2 192.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 rpcbindmkdir -p /home/mpi_share
#将各个节点的共享目录位置和名字设置成一样的systemctl start rpcbindsystemctl 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_sharesudo vim mpi_config_file
写入:
master:4
host1:4
host2:4
  • 测试案例程序
    在之前解压的mpich-3.3目录下的examples目录下有可执行文件cpi,我们运行它即可。

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

cd /home/mpi_sharempiexec -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/pbsyum install pbspro-execution-19.1.3-0.x86_64.rpmsystemctl 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.

Openpbs centos7集群安装配置心得相关推荐

  1. 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例

    centos7.1下 ZooKeeper 集群安装配置+Python实战范例 下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeepe ...

  2. Ceph分布式集群安装配置

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站:https://www.captainai.net/dongkelun 前言 记录Ceph分布式集群安 ...

  3. redis cluster 集群 安装 配置 详解

    redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...

  4. 一步步教你Hadoop多节点集群安装配置

    一步步教你Hadoop多节点集群安装配置 1.集群部署介绍 1.1 Hadoop简介  Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统HDFS(Hado ...

  5. websphere一直安装部署_WebSphere集群安装配置及部署应用说明

    <WebSphere集群安装配置及部署应用说明>由会员分享,可在线阅读,更多相关<WebSphere集群安装配置及部署应用说明(27页珍藏版)>请在人人文库网上搜索. 1.We ...

  6. RabbitMQ集群安装配置+HAproxy+Keepalived高可用

    RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...

  7. Greenplum集群安装配置及最佳实践

    Greenplum集群安装配置及最佳实践 目录 Greenplum集群安装配置及最佳实践 1 目录 1 1 总体介绍 2 1.1 硬件平衡 2 1.2 高可用 2 1.3 部署方案 2 1.3.1 G ...

  8. ZooKeeper-3.3.4集群安装配置

    "ZooKeeper-3.3.4集群安装配置": 关键词:zookeeper-3.3.4 集群 安装 配置 zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务, ...

  9. ElasticSearch-2.0.0集群安装配置与API使用实践

    ElasticSearch是基于全文搜索引擎库Lucene构建的分布式搜索引擎,我们可以直接使用ElasticSearch实现分布式搜索系统的搭建与使用,都知道,Lucene只是一个搜索框架,它提供了 ...

最新文章

  1. Unity提高工作效率的终极指南
  2. linux apt-get dpkg,linux的sudo apt-get install 和dpkg -i package.deb命令
  3. halcon学习笔记——(4)HDevelop language(结构语句)
  4. vb如何定义微软服务器stul,VBScrip微软官方教程.doc
  5. 2019年JavaScript状态调查中的新增功能
  6. 使用go制作微服务数据计算
  7. Swift中类的使用
  8. 14寸笔记本电脑推荐_2020笔记本电脑推荐(小米篇)
  9. 福利 | 2018 年,程序员全新的技术之路
  10. Golang channel 快速入门
  11. 妙用javascript
  12. 计算机u盘序列号,注册表查询usb设备序列号,u盘电序列号注册表
  13. 锐捷长ping_锐捷网络 RG-NBR3000(带机量1000台)
  14. 验证码功能-简单实现
  15. PHP家庭账单系统,家庭财务管理系统1.0【PHP版】
  16. 【Eternallyc】函数PlaySound和sndPlaySound
  17. 如何获取Level2行情接口连接?
  18. [975]python requests实现HTTPS客户端的证书导入
  19. Xcode里的-ObjC,-all_laod和-force_load的作用
  20. 切图教程,app切图命名总结

热门文章

  1. 新型电力系统加快建设,亟需推动传统电网技术与数智化技术融合
  2. 看《墨攻》理解软件世界的IoC概念
  3. 台式计算机没有usb3.0,台式机usb3.0接口怎么样
  4. 政府机构运用现代网络通信与计算机技术,一个零点餐厅的菜单一年至少应该调整 次...
  5. 数字电视 CA 是什么?
  6. 网络基础11 单点登录
  7. VC工程配置OpenCV库
  8. 教大家如何搭建一个系统可视化清除垃圾工具,(代码很简化,小白也能看得懂)大牛勿喷
  9. Vue中Share.js分享组件
  10. 7-3 判断双对称方阵 (10 分)