最近在研究HPC,找到一篇很有价值的文章,做个备份。
部署HPC集群的实施方案
零、前言
本教程(实际上是一个集群部署的操作流程)旨在通过一个小型的HPC集群部署过程讲述基于Beowulf架构的HPC集群原理、主流工具等相关内容,并不对各个工具的特性及其使用方法进行深入的研究分析。
一、系统配置
1.1 网络拓扑
服务器 | 内网IP | 计算专网IP | 域名 | 备注 |
登陆节点 | 172.17.22.16 | loginserver-chaosuan | ||
管理节点 | 172.17.22.13 | |||
计算节点1 | 172.17.29.11 | 192.168.1.11 | compute11 | 主节点 |
计算节点2 | 172.17.29.12 | 192.168.1.12 | compute12 | |
计算节点3 | 172.17.29.13 | 192.168.1.13 | compute13 | |
计算节点4 | 172.17.29.14 | 192.168.1.14 | compute14 |
1.2 操作系统
登录节点:CentOS Linux release 7.3.1611
管理节点:CentOS Linux release 7.3.1611
计算节点:CentOS Linux release 7.9.2009,
二、计算节点、登录节点配置
2.1 域名设置
在登录节点、所有计算节点上执行以下命令,完成节点域名配置
1 2 |
vi /etc/hostname vi /etc/hosts |
2.2 免密登录
以loginserver-chaosuan为例,在登录节点、所有计算节点上执行以下命令,设置免密登录
a) 生成公钥私钥
1 |
ssh-keygen -t rsa |
b) 拷贝公钥到其他节点
1 2 3 4 |
ssh-copy-id compute11 ssh-copy-id compute12 ssh-copy-id compute13 ssh-copy-id compute14 |
2.3 关闭防火墙
在登录节点、计算节点执行以下操作,
a) 查看防火墙状态
1 |
systemctl status firewalld.service |
b) 关闭运行的防火墙
1 |
systemctl stop firewalld.service |
c) 开机关闭防火墙
1 |
systemctl disable firewalld.service |
d) 修改selinux
1 |
vi /etc/selinux/config |
将SELINUX=enforcing改为:SELINUX=disabled,并执行setenforce 0使他立即生效,当然你也可以重启机器
三、NTP服务
使用compute11作为NTP服务器,loginserver-chaosuan 、compute12、compute13、compute14等作为NTP客户端。
3.1 NTP服务器
a) 安装NTP
1 |
yum install -y ntp |
b) 修改ntp的配置文件
1 2 3 4 5 6 7 8 9 |
vi /etc/ntp.conf #ntp.conf中有默认的时间服务器,我们需要注销,然后添加上我们对应的时区时间服务器 server ntp1.aliyun.com server ntp2.aliyun.com server ntp3.aliyun.com #兜底时间服务器,当以上三个时间服务器不可用时,就是以本机时间作为集群机器的统一时间。 server 127.0.0.1 fudge 127.0.0.1 stratum 10 |
c) 主机做时间同步
1 |
ntpdate -u ntp2.aliyun.com |
d) 开机启动
1 |
systemctl enable ntpd |
e) 重启NTP
1 2 |
systemctl start ntpd systemctl status ntpd |
f) 检查NTP
1 |
ntpstat |
3.2 NTP客户端
a) 安装NTP
1 |
yum install -y ntp |
b) 修改ntp的配置文件
1 2 3 |
vi /etc/ntp.conf server 172.17.29.11 |
c) 开机启动
1 |
systemctl enable ntpd |
d) 重启NTP
1 2 |
systemctl start ntpd systemctl status ntpd |
e) 检查NTP
1 |
ntpstat |
四、建立NFS服务
虽然在HPC场景下NFS性能被人所诟病,但是其部署比较简单,还是以NFS为例来说明。对性能有一定要求的场景,可以考虑GPFS、Lustre等并行文件系统。
使用compute11作为NFS服务器,loginserver-chaosuan 、compute12、compute13、compute14等作为NFS客户端。
4.1 NFS服务器
a) 安装RPC和NFS软件包
1 |
yum -y install rpcbind nfs-utils |
b) 启动服务和设置开启启动
1 2 3 4 5 6 |
systemctl start rpcbind #先启动rpc服务 systemctl enable rpcbind #设置开机启动 systemctl start nfs-server nfs-secure-server #启动nfs服务和nfs安全传输服务 systemctl enable nfs-server nfs-secure-server firewall-cmd --permanent --add-service=nfs #配置防火墙放行nfs服务 firewall-cmd --reload |
c) 配置共享文件目录,编辑配置文件
1 2 3 4 5 |
chmod go+w /home #开通自己组group和其他人other的写权限 vi /etc/exports /home 172.17.22.16(rw,async,no_root_squash) /home 192.168.1.0/24(rw,async,no_root_squash) systemctl reload nfs #重新加载NFS服务,使配置文件生效 |
4.2 NFS客户端(计算节点)
a) 安装RPC和NFS软件包
1 |
yum -y install rpcbind nfs-utils |
b) 查看服务器抛出的共享目录信息
1 |
showmount -e 192.168.1.11 |
c) 在客户端创建目录,并挂载共享目录
vi /etc/fstab #在该文件中挂载,使系统每次启动时都能自动挂载
1 |
192.168.1.11:/home /home nfs defaults 0 0 |
1 |
mount -a #是文件/etc/fstab生效 |
d) 检查
1 |
df -Th |
4.3 NFS客户端(登录节点)
a) 安装RPC和NFS软件包
1 |
yum -y install rpcbind nfs-utils |
b) 查看服务器抛出的共享目录信息
1 |
showmount -e 172.17.29.11 |
c) 在客户端创建目录,并挂载共享目录
vim /etc/fstab #在该文件中挂载,使系统每次启动时都能自动挂载
1 |
172.17.29.11:/home /home nfs defaults 0 0 |
1 |
mount -a #是文件/etc/fstab生效 |
d) 检查
1 |
df -Th |
五、建立NIS服务
使用compute11作为NFS服务器,loginserver-chaosuan 、compute12、compute13、compute14等作为NFS客户端。
5.1 NIS服务器
a) 安装软件包
1 |
yum install yp-tools ypbind |
b) 设置开机域名
1 |
vi /etc/sysconfig/network |
1 |
NISDOMAIN=hpc |
c) 指定NIS查询的主机名称
1 |
vi /etc/yp.conf |
1 |
ypserver compute11 |
d) 启动NIS
1 2 3 |
systemctl enable ypbind.service systemctl restart ypbind.service systemctl status ypbind.service |
e) 验证
1 |
ypwhich #查看NIS服务器名称<br>ypcat passwd #查看NIS服务端设置的账号 |
f) 使用NIS数据库设置服务搜索顺序
vi /etc/nsswitch.conf,将相关行改成以下值
1 2 3 4 |
passwd:files nis shadow:files nis group:files nis hosts:files nis dns |
g) 重启NIS
1 |
systemctl restart ypbind.service |
h) 添加账户
1 2 3 4 |
useradd hycom useradd lsfadmin cd /var/yp make |
5.2 NIS客户端(计算节点)
a) 安装软件包
1 |
yum install yp-tools ypbind |
b) 设置开机域名
1 |
vi /etc/sysconfig/network |
1 |
NISDOMAIN=hpc |
c) 指定NIS查询的主机名称
1 |
vi /etc/yp.conf |
1 |
ypserver compute11 |
d) 启动NIS
1 2 3 |
systemctl enable ypbind.service systemctl restart ypbind.service systemctl status ypbind.service |
e) 验证
1 |
ypwhich<br>ypcat passwd |
f) 使用NIS数据库设置服务搜索顺序
vi /etc/nsswitch.conf,将相关行改成以下值
1 2 3 4 |
passwd:files nis shadow:files nis group:files nis hosts:files nis dns |
g) 重启NIS
1 |
systemctl restart ypbind.service |
5.3 NIS客户端(登录节点)
操作过程同上。
六、编译器配置
6.1 安装编译器
安装Intel Parallel Studio XE 2019 Cluster Edition编译器,解压之后直接运行./install.sh即可。
6.2 配置环境变量
在登录节点、所有计算节点上修改~/.bash_profile文件,
1 |
vi ~/.bash_profile |
6.3 编写节点列表文件
6.4 运行Intel MPI测试程序
1 |
mpirun -np 20 -f /home/hycom/machinefile ./hello-mpi |
七、TORQUE
在管理节点上,通常需要安装LSF、TORQUE、SLURM等作业调度系统。虽然IBM提供了开源版本的LSF,但是对集群规模有一定的限制,建议预算有限的场景采用TORQUE、SLURM等。本文使用TORQUE进行讲解。
7.1 TORQUE服务器
使用节点loginserver-chaosuan.novalocal作为Torque服务器:
a) 安装依赖包
1 |
yum -y install libxml2-devel openssl-devel gcc gcc-c++ boost-devel libtool |
b) 编译安装torque
1 2 3 4 5 6 |
tar -zxvf ./torque-4.1.2.tar.gz cd ./torque-4.1.2 ./configure --prefix=/opt/torque make make packages make install #卸载的话是make uninstall |
c) 开机启动
1 2 3 4 5 6 7 8 |
cp contrib/init.d/{pbs_{server,sched,mom},trqauthd} /etc/init.d for i in pbs_server pbs_mom trqauthd; do chkconfig --add $i; chkconfig $i on; done d) 设置环境变量 vi /etc/profile TORQUE=/opt/torque export PATH=$PATH:$TORQUE/bin:$TORQUE/sbin |
d) 设置环境变量
1 |
vi /etc/profile<br>TORQUE=/opt/torque<br>export PATH=$PATH:$TORQUE/bin:$TORQUE/sbin |
e) 将root设置为管理账户
1 |
./torque.setup root |
f) 启动服务
1 2 |
qterm -tquick for i in pbs_server pbs_sched pbs_mom trqauthd; do service $i start; done |
g) 调度节点配置计算节点的主机名和CPU核数
1 |
vi /var/spool/torque/server_priv/nodes<br>compute11 np=28<br>compute12 np=28<br>compute13 np=28<br>compute14 np=28 |
h) 重启服务
1 |
for i in pbs_server pbs_sched pbs_mom trqauthd; do service $i restart; done |
7.2 torque客户端(计算节点)
使用compute11、compute12、compute13、compute14等作为torque客户端,以compute11为例,配置方法如下:
a) 将loginserver-chaosuan.novalocal上的安装包拷贝到compute11
1 2 |
scp contrib/init.d/{pbs_mom,trqauthd} root@compute11:/etc/init.d/ scp torque-package-{mom,clients}-linux-x86_64.sh root@compute11:/root/ |
a) .安装软件包
1 2 |
./torque-package-clients-linux-x86_64.sh --install ./torque-package-mom-linux-x86_64.sh --install |
b) 配置环境
1 |
vi /var/spool/torque/mom_priv/config<br>pbsserver loginserver-chaosuan.novalocal<br>logevent 225 |
c) 启动pbs_mom
1 |
for i in pbs_mom trqauthd; do service $i start; done |
d) 配置环境变量
1 2 3 |
vi /etc/profile TORQUE=/opt/torque export PATH=$PATH:$TORQUE/bin:$TORQUE/sbin |
e) 查看节点是否正常
1 |
qnodes #或者是pbsnodes -a |
八、存储服务器
实际情况通常需要根据需要配置单独的存储服务器。由于这部分涉及到具体的存储系统,请视情况自行处理。
九、集群监控
Ganglia是一个跨平台可扩展的,高 性能计算系统下的分布式监控系统,主要是用来监控系统性能,如:cpu 、mem、硬盘利用率,I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。网上已经有不少安装教程,不再赘述。
参考资料
[1]. Linux高性能计算集群 — Beowulf集群
————————————————
版权声明:本文为CSDN博主「JiNan.YouQuan.Soft」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_26221775/article/details/111708789