计算化学公社

标题: 本地HPC高性能集群的建立 [打印本页]

作者
Author:
youyno    时间: 2016-11-27 22:02
标题: 本地HPC高性能集群的建立
本帖最后由 youyno 于 2016-11-27 22:02 编辑

网上有许多关于建立集群的相关网文,但是感觉都是在虚拟机上实现的,实际操作过程中其实会遇到很多问题,所以在这里写一个我最近建立HPC集群的经验。
       这个集群是基于24台全新的DELL OptiPlex7040商务台式机,CPU是I7 6700 3.4GHz 四核八线程,每台机器两条8G DDR4 2133MHz内存,其中3台配置四条用于高水平大体系的计算,这样的配置四核跑高斯简直就是飞起来了,比超算强太多。除此之外,我们更看重的是DELL的三年质保,也就是三年之内随便你折腾,三年之后再把淘汰下来的机子直接办公使用也是很不错的选择。说了他的优点,这个集群的缺点在于很难跨节点并行,虽然我们所用的网线、交换机、网卡都是千兆,但是毕竟不是专业的,要不然要超算有何用。
所需器材:机柜2个(PDU已配好)、24口千兆交换机、网线24根(长度视机器与交换机的距离而定)、24台DELL OptiPlex7040商务台式机、千兆网卡1张、Centos7.0系统盘一张
过程:
1、主节点的安装:24台机器要一台台去装系统实在是太费时,通过了解知道有一个基于centos的Rockcluster系统是专门用集群的建立的,于是我先在虚拟机上尝试成功,发现确实装好一台机器之后就可以以这台机器为主节点直接控制分节点系统的安装。带着这样的思路我以主节点的配置在一台机器(这台机器插入了两张网卡,一张系统自带一张自行购买的)上安装好Rockcluster,然后将主节点和另一台新机器同时插入到一台千兆交换机中,企图用DHCP技术让其控制新机器的安装,结果经过百般调试,发现无法完成。从后来的安装中我发现,Rockcluster安装时必须要有两张网卡,而Rockcluster只能识别我新买的那张网卡而无法识别本机自带的网卡,导致系统无法把消息传递出去。另一方面,在我配置好网卡之后还是没有办法自动完成DHCP安装系统,至于原因,到现在还是没有想明白。但是主节点我还是安装好了,两张网卡,一张用于使用者在实验室登陆,一张用于集群内部通讯。虽然安装的是Rockcluster但是我们实际上在后面的配置中是没有用到任何他作为集群系统的功能。
安装完主节点后设置主机名为Frontend,并在/etc/hosts中将主节点的两张网卡的IP分别写入,如下:
10.1.1.101      Frontend  #主节点连接到交换机的网卡IP
192.168.88.12  Frontend #学校内网IP用于从外部访问,直接与学校局域网相连
同时最好此时将分节点需要设置的IP也放进来如下
10.1.1.102     node002
.......
10.1.1.124     node024

2、分节点的系统安装:给23台机子用光盘装centos7.0,我花了一天的时间装好,centos的安装很简单,需要注意:
a、选择安装类型时选择Compute node,并把右边所有的安装包选项都选中;
b、安装过程中可以把网卡和主机名在网络设置处配置好,分节点设置IP分别为10.1.1.102~124,主机名分别为node002~nodes024(由于这款机子并不能兼容centos,所以在安装时看不见可用于配置的网卡,我只能待系统安装好之后,在网上下载驱动配置网卡);
c、所有系统都安装好之后,将其通过网线与交换机相连,这时应该可以相互之间ping通的。
d、主节点和分节点都要关闭防火墙

3、SSH无密码访问:其实这个功能对于集群构建可有可无,但是为了之后配置方便需要在root用户下形成ssh无密码访问,具体做法:
a、切换到主节点的root用户根目录,执行命令ssh-keygen -t rsa 一直回车,在.ssh下生成id_rsa id_rsa.pub
b、执行cat id_rsa.pub >> authorized_keys
c、用scp将authorized_keys传递到分节点node002的/root/.ssh/目录下,命令为scp authorized_keys root@node002:/root/.ssh/authorized_keys;
d、通过ssh root@node002命令切换到node002节点上并执行a、b步骤所提到的命令,并将其传至下一节点,以此类推一直到node024;
e、这是node024节点中的authorized_keys应该包含了所有节点的公钥,只需将其分别传递到各个节点的/root/.ssh/目录下即可完成ssh的无密码访问。

4、NFS文件共享
相关的博文很多没有必要重复可参考http://www.linuxidc.com/Linux/2015-05/117378.htm
或自行baidu
需要注意的是:
a、需要把挂出和挂载信息分别写入主节点的/etc/exports和分节点的/etc/fstab,用于开机启动;
b、共享出去的目录名称和路径必须与分节点接收的目录名称和路径完全一致,如果没有,就需要自行创建挂载点(如果不一致,稍后进行NIS时会无法定位到每个用户的根目录);
c、在以后的使用过程中出现开关机的时候,必须先打开主节点,不然分节点无法接收到相关的挂载信息,要想恢复就需要到没有挂载上的分节点上执行mount -a;

5、NIS的配置
a、现在NIS的配置已经十分简单,root下直接执行setup命令进入到Authentication configuration中用空格键选中Use NIS然后用Tab键切换到Next,设置域名和主机名,所有的机器中这两项应该设置为相同,主机名必须为管理节点的主机名,我这里是Frontend,而域名则随便设置;
b、root到分节点执行命令时会发现NIS服务的安装包没有安装完整,这时你需要将你下载的Centos-7.0的iso镜像文件解压,在Packages中找到ypbind-1.37.1-7.el7.x86_64.rpm和yp-tools-2.14-3.el7.x86_64.rpm两个安装包将其用SSH传递到主节点中某个挂载出去的目录下,然后以root用户分别在各个分节点上执行 rpm -ivh yp*;
c、安装完成后用setup将NIS服务配置好,为了测试NIS是否配置好可以执行yptest测试一下;
d、将所有节点的NIS服务配置好之后可以开始在主节点上创建用户,创建的用户的根目录必须设置到挂载出去的目录,将用户和密码都设置好之后需要同步一下在主节点上以root用户分别执行:
/usr/lib64/yp/ypinit -m     
/etc/init.d/ypserv restart
/etc/init.d/yppasswdd restart
这是你可以切换到你刚刚创建的普通用户下并可以在该用户下用ssh node002登陆到任何一个节点上,至此NIS服务配置完成。

6、Torque的安装与配置
a、torque的安装很简单就是下载-解压-configure-make-make install具体配置过程可参考
http://wenku.baidu.com/link?url=Gwb5v1LL59vfWmozkvmGsDvuJ0KXKXJpIpBulzSZ1xmqL1t1uyPe9IXdB8AG278ROqR71-h518ebVDdVYds1cLhOFjUqi6NRx9ZT_tSRyje
b、nodes文件中需要指定每一个节点可用的核数,由于这批机器是四核八线程的,所以你如果没有关闭超线程的话可以将每个节点和核数设为8,如果你不想使用超线程而且有懒得一台台机器去关闭超线程,直接在这里设置每个节点的核数为4就好,如下
node002 np=4
......
node024 np=4
这里没有把主节点写入是为了让它更好的分配任务处理数据,而不用于计算
b、将主节点的服务都Torque都安装好之后就可以开始创建队列,注意由于机器都是四核的你必须设置限制每个任务的最大可用核数(resources_max.ncpus)为4,如果你要用到超线程就把b中np=8并把resources_max.ncpus设置为8
c、至此整个集群的配置就已经完成,你可以用qsub 脚本提交任务了,提交任务时也需要将在脚本和输入文件中限制核数为4节点数为1。

最后重申一下,本文的目的不在于手把手教你如何创建HPC集群,有很多网文已经讲了不想赘述,而是理清整个思路,以及实际安装过程中可能遇到的各种各样的问题。


作者
Author:
chengdi123000    时间: 2018-5-20 21:28
cluster还好,Lustre安装是个大坑,openhpc不错,以后arm hpc也可以用,ansible不错。
作者
Author:
kyuu    时间: 2018-5-20 23:45
本帖最后由 kyuu 于 2018-5-21 00:03 编辑

这位同学,你一定是对集群,高性能和HPC有什么误解
作者
Author:
yjcmwgk    时间: 2018-5-21 08:26
kyuu 发表于 2018-5-20 23:45
这位同学,你一定是对集群,高性能和HPC有什么误解

2007年我刚做本科毕设。那时候我看我师兄就跟楼主这样玩儿的。
刀片?机架?不存在的!穷穷穷。
当然我师兄跟楼主有一个不同。师兄是万年攒机党。这个“坏”习惯深深影响了我……


作者
Author:
niobium    时间: 2018-5-21 08:46
选development work station,就可以直接安装NIS服务了

作者
Author:
kyuu    时间: 2018-5-21 13:15
yjcmwgk 发表于 2018-5-21 08:26
2007年我刚做本科毕设。那时候我看我师兄就跟楼主这样玩儿的。
刀片?机架?不存在的!穷穷穷。
当然我 ...

密度泛函·卒
作者
Author:
yjcmwgk    时间: 2018-5-21 14:32
kyuu 发表于 2018-5-21 13:15
密度泛函·卒

你没卒是因为你一直富
作者
Author:
kyuu    时间: 2018-5-21 14:36
yjcmwgk 发表于 2018-5-21 14:32
你没卒是因为你一直富

还好吧,不能富可敌国,至少从来没为钱愁过
作者
Author:
dyp    时间: 2019-8-19 11:21
请问楼主  24个结点间的通信问题怎么解决的  这样的集群结点间通信效率低  有实用价值不
作者
Author:
k64_cc    时间: 2019-8-19 13:58
dyp 发表于 2019-8-19 11:21
请问楼主  24个结点间的通信问题怎么解决的  这样的集群结点间通信效率低  有实用价值不

正常使用时尽量避免跨节点通信……
作者
Author:
dyp    时间: 2019-8-19 14:09
k64_cc 发表于 2019-8-19 13:58
正常使用时尽量避免跨节点通信……

那怎么实现多结点并行呢  如mpi
作者
Author:
k64_cc    时间: 2019-8-19 14:19
dyp 发表于 2019-8-19 14:09
那怎么实现多结点并行呢  如mpi

装MPI,就实现了。但是对于穷人来说跨节点并行往往得不偿失,所以不推荐。
作者
Author:
dyp    时间: 2019-8-19 14:32
k64_cc 发表于 2019-8-19 14:19
装MPI,就实现了。但是对于穷人来说跨节点并行往往得不偿失,所以不推荐。

那不还涉及结点间通信吗
作者
Author:
k64_cc    时间: 2019-8-19 15:04
dyp 发表于 2019-8-19 14:32
那不还涉及结点间通信吗

你问节点间通信效率低有没有实用价值,我说正常使用时应该尽量避免节点间通信。然后你问如何使用MPI,我说你装一个MPI就能直接用了。

“要不要用”和“怎么用”是两个不相关的问题。
作者
Author:
abin    时间: 2019-8-19 20:37
dyp 发表于 2019-8-19 11:21
请问楼主  24个结点间的通信问题怎么解决的  这样的集群结点间通信效率低  有实用价值不

本来我写了一些回复, 然后被提示”存在不良信息无法发表“。 那就算了。

建议看关于贝奥武夫集群相关内容。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3