LZF
Articles9
Tags0
Categories0
2021快乐!集群搭建!

2021快乐!集群搭建!

2020对我来说是很特殊的一年,2021来了,总结一下两个电脑基于OpenMPI搭建的集群,希望2021也可以跑到飞起!

1.准备工作:
(1)两台同样版本ubuntu的虚拟机,将电脑主机连接在同一局域网下,windows命令输入win+R 输入cmd,打开终端,输入ipconfig,查看IPv4 地址,保证两个主机的IP地址前三位是相同的,例如:192.168.0.2和192.168.0.101。各个主机上的虚拟机网络模式设置为桥接模式,使用物理机局域网地址方便互相ping通。(若用Ubuntu系统搭建可以忽略前面部分)。Ubuntu终端输入ifconfig,出现如下界面:


两个节点测试是否能够ping通:(ping 的是inet的地址)


(2)修改两个节点的名称(例如node1,node2)
输入指令:vim /etc/hosts 添加如下两行


2.建立SSH无密码连接(两两之间连接)
(1)两台机子上均输入命令: sudo apt-get install ssh 进行安装ssh.
(2)尝试两个计算机的有密码登录,
node1键入: ssh node2
node2 键入: ssh node1


可见输入密码后均可互相ssh。

(3)免密登录步骤 :
第一步:在node1中通过ssh-keygen生成公钥私钥对。
键入: ssh-keygen (键入完一路按enter)


第二步:通过ssh-copy-id复制node1的公钥到node2


第三步:通过ssh-copy-id复制node2的公钥到node1(在node2上重复上两步)
尝试无密码ssh node1 成功:


(4)建立共享挂载文件夹:
node1和node2上均需要键入安装NFS:
sudo apt-get install nfs-kernel-server nfs-common
下载过后两个节点均建立共同挂载文件夹(mpicluster):
mkdir mcluster (此处切记不要sudo建立)
在node1节点上编辑/etc/exports文件(共享文件夹访问权限设置)
键入: sudo vi /etc/exports
在文件最下下添加如下一行:

/home/dyfluid/mcluster *(rw,sync,no_root_squash,no_subtree_check)


之后重新启动服务,键入:

sudo /etc/init.d/nfs-kernel-server restart

之后查看共享文件夹是否是mcluster,键入:

showmount -e

(5)将node2挂载在mpicluster文件夹下,node2下键入:
sudo mount -t nfs node1:/home/dyfluid/mcluster cluster
(node2节点每次重启后需运行此挂载命令)
(6)检查,在node1下mcluster文件夹中建立文件,在node2的mcluster中也能看见即为挂载成功!

3.建立openmpi并行计算环境
(1)虚拟机中of已经安装好openmpi,键入命令查看mpirun 是在哪里运行的:

which mpirun  

保证两个节点的mpirun运行环境皆是这个。
(3)在文件夹中下载of8和其ThirdParty,在两个节点上均进行编译,
在两台节点的~/.Bashrc中添加如下两行,将运行环境保证在挂载文件夹里:

source ~/mcluster/OpenFOAM-8/etc/bashrc
alias of8="source ~/mcluster/OpenFOAM-8/etc/bashrc"

注意:这个地方有大坑,一定一定要将
source ~/mcluster/OpenFOAM-8/etc/bashrc这一行添加到这个位置,不然没办法并行,这地方真的卡了我好久。。。


最后我们在挂载文件夹mcluster中需要运行的文件夹(这里面我用dambreak)之中放置配置文件,文件可以任意起名,例如:machines和hostfile,进而去设置调用每一个节点的核数,配置格式如下:


分块之后输入并行指令:
mpirun -hostfile machines -n 4 interFoam -parallel
或者:
mpirun -hostfile hostfile -n 4 interFoam -parallel
可见运行十分顺畅!

Author:LZF
Link:http://example.com/2020/12/31/2021%E5%BF%AB%E4%B9%90%EF%BC%81%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BA%EF%BC%81/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可