收藏 分享(赏)

搭建HPC超详细教程.doc

上传人:精品资料 文档编号:9951393 上传时间:2019-09-22 格式:DOC 页数:62 大小:401KB
下载 相关 举报
搭建HPC超详细教程.doc_第1页
第1页 / 共62页
搭建HPC超详细教程.doc_第2页
第2页 / 共62页
搭建HPC超详细教程.doc_第3页
第3页 / 共62页
搭建HPC超详细教程.doc_第4页
第4页 / 共62页
搭建HPC超详细教程.doc_第5页
第5页 / 共62页
点击查看更多>>
资源描述

1、集群架设钟毅 厦门大学物理学系复杂系统研究室2012 年 8 月前言集群就是一堆计算机通过某种方式联系在一起的统一的整体.它有一个主节点,负责管理账户,回答用户的请求,以及命令其它计算机即子节点(计算节点) 完成某项任务 . 为了能够给子节点下命令,我们必须搭建 SSH 服务,并且要达到无密码互访( 因为子节点要反馈计算结果或者其它信息给主节点) ;为了管理用户账号的方便,我们要建立 NIS 服务,而要建立 NIS 服务,又必须先搭建 NFS 服务. NFS 服务的一项重要的功能是,把主节点的某个或者某些目录共享给子节点,这样,只要在主节点的共享区域安装了某个软件,那么该软件就可以被所有子节点

2、利用.我们复杂系统小组的成员都喜欢编写 Fortran 程序,所以我们有必要安装 Fortran 编译器-ifort 软件,这是 intel 公司提供的免费 Fortran 编译器.又考虑到我们经常要进行大规模模拟计算,这就必须安装MPICH2 这个并行计算软件. 此外,我们还必须安装 Torque 这个作业管理器,对用户提交的作业进行管理.有必要说明的是,这里展示的是每种软件的安装步骤,以及遇到问题时的处理方法;这里面没有对各种软件的功能进行详细的解说哟,也没有对 linux 的命令进行解说,要知道它们的功能,请参看最后面列出的参考文献吧. 还有一点必须说明,之所以整理这个安装笔记,是为了让

3、师弟师妹们在自己架设集群的时候有一份比较完整的参考资料. 好了,废话少说,开始动手吧,O(_)O 哈哈 一安装与连接 internet两台电脑 Hostname 分别为 centos1,centos21. 安装 CentOS6.3 , 分区的时候选择如下方式centos1 的分区:/ : 90GB/var : 10GB/tmp : 10GBSwap : 3GB/disk1 : 20GBcentos2 的分区:/ : 20GB/var : 10GB/tmp : 10GBSwap : 3GB/disk2 : 90GB选择安装 basic server 的安装包。2. 连接 internet以 ro

4、ot 用户登录,然后分别做如下的事情a. 设 IProotcentos1 # vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=“eth0“BOOTPROTO=“static“BROADCAST=“59.77.36.255“HWADDR=“00:26:2D:D0:69:18“IPADDR=“59.77.36.207“NETMASK=“255.0.0.0“GATEWAY=“59.77.36.1“NM_CONTROLLED=“yes“ONBOOT=“yes“TYPE=“Ethernet“UUID=“001bde85-8379-4fcc-9b4e-

5、8f98260f5893“以上涂了颜色的为新加的b. 启动网卡rootcentos1 # ifup eth0rootcentos1 # /etc/init.d/network restartc. 看是否正常启动了rootcentos1 # ifconfig eth0eth0 Link encap:Ethernet HWaddr 00:26:2D:D0:69:18inet addr:59.77.36.207 Bcast:59.77.36.255 Mask:255.0.0.0inet6 addr: 2001:da8:e800:100:226:2dff:fed0:6918/64 Scope:Glob

6、alinet6 addr: fe80:226:2dff:fed0:6918/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:747 errors:0 dropped:0 overruns:0 frame:0TX packets:34 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:81563 (79.6 KiB) TX bytes:4544 (4.4 KiB)Interrupt:18出现 IP 了

7、就是正常启动了。d. 设置 DNS 的 IProotcentos1 # vi /etc/resolv.confnameserver 168.95.1.1nameserver 139.175.10.20e. 检查是否能够解析域名了rootcentos1 # nslookup Server: 168.95.1.1Address: 168.95.1.1#53Non-authoritative answer: canonical name = .Name: Address: 220.181.111.147出现 IP 了就是设置成功了。f. 调整时间,设置成现在的时间rootcentos1 # date

8、 -s 07/26/2012Thu Jul 26 00:00:00 CST 2012rootcentos1 # date -s 17:10:15Thu Jul 26 17:10:15 CST 2012rootcentos1 # clock wg. 对于 centos2 重复以上步骤就可以了。现在就可以坐在某一台 WIN7 电脑前,用 putty 同时登录两台电脑了。centos1 的 IP :59.77.36.207centos2 的 IP :59.77.36.208二两台电脑间(即节点间)创建 SSH 信任连接1. 在 centos1 与 centos2 中分别建立可以信任的主机的 Host

9、name 与它的 IP 的对应a. rootcentos1 # vi /etc/hosts127.0.0.1 localhost59.77.36.207 centos159.77.36.208 centos2rootcentos1 # hostnamecentos1rootcentos1 # hostname -i59.77.36.207b. rootcentos2 # vi /etc/hosts127.0.0.1 localhost59.77.36.208 centos259.77.36.207 centos1rootcentos2 # hostnamecentos2rootcentos2

10、# hostname -i59.77.36.2082. 我们的目标是 a) 在节点 centos1 和 centos2 中有相同的用户,以及相同的用户账号密码b)可以在任意一节点上直接用当前的账号登陆到其它节点上去,而不用密码(A)如果两台主机之间没有建立 NFS 与 NIS 服务,则执行下面的步骤:1)用 root 账户把 centos1(主结点) 上的 /etc/passwd, /etc/shadow/, /etc/group/, /etc/gshadow/ 复制到其它节点上去。 (rootcentos1 #scp /etc/passwd root59.77.36.208:/etc/pas

11、swd ).2) 执行以下命令在 centos1 中以 cv 登陆,a.cvcentos1 $ ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/home/cv/.ssh/id_rsa):Created directory /home/cv/.ssh.Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved

12、 in /home/cv/.ssh/id_rsa.Your public key has been saved in /home/cv/.ssh/id_rsa.pub.上面涂了颜色的后面直接用回车就可以。b.cvcentos1 $ ls -aldrwx-. 2 cv cv 4096 Jul 27 16:30 .sshc.cvcentos1 .ssh$ ls al-rw-. 1 cv cv 1675 Jul 27 16:30 id_rsa-rw-r-r-. 1 cv cv 392 Jul 27 16:30 id_rsa.pub在 centos2 中以 cv 登陆,重复以上步骤,最后cvcento

13、s2 .ssh$ ls -al-rw-. 1 cv cv 1679 Jul 27 16:30 id_rsa-rw-r-r-. 1 cv cv 392 Jul 27 16:30 id_rsa.pub就是说在 centos1 与 centos2 中的 /home/cv/.ssh/目录下,都产生了私匙 id_rsa 与公匙 id_rsa.pub。我们应该把这两个公匙的内容集中起来,放入同一个文件 authorized_keys 中,然后把这个文件再分别放入 centos1 与centos2 中的 /home/cv/.ssh/目录下,并且改变权限:chmod 600 authorized_keys 然

14、后就可以了。用到的命令为(要按顺序进行操作)cvcentos2 .ssh$ cp id_rsa.pub authorized_keyscvcentos1 .ssh$ scp id_rsa.pub cvcentos2:/home/cv/cvcentos2 $ cat id_rsa.pub ./.ssh/authorized_keyscvcentos2 .ssh$ scp authorized_keys cvcentos1:/home/cv/.ssh/然后,在 centos2 上cvcentos2 .ssh$ ssh centos1Last login: Fri Jul 27 16:48:12 2

15、012 from centos2cvcentos1 $在 centos1 上cvcentos1 .ssh$ ssh centos2Last login: Fri Jul 27 16:29:53 2012 from 59.77.36.239cvcentos2 $可见,已经不用密码就相互登录了。(B) 如果两台主机之间已经建立 NFS 与 NIS 服务,则执行下面的步骤:1)用 root 用户登录主节点,然后执行以下命令root # useradd -g complex -m chong01(注:新增用户 chong01,强制建立/home/chong01 目录)root # passwd cho

16、ng01New UNIX password:Retype new UNIX password:passwd: password updated successfullyroot # /usr/lib/yp/ypinit m (注:这里是更新主节点上的 NIS 数据库,让子节点也认识新用户)At this point, we have to construct a list of the hosts which will run NISservers. BlueMoon3 is in the list of NIS server hosts. Please continue to addthe

17、names for the other hosts, one per line. When you are done with thelist, type a .next host to add: BlueMoon3next host to add: (注:这边直接按 ctrl+d 组合键)The current list of NIS servers looks like this:BlueMoon3Is this correct? y/n: y yWe need a few minutes to build the databases.Building /var/yp/complexlab

18、/ypservers.2)用新建立的账号 chong01 登录主节点,执行以下命令chong01 $ ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/home/chong01/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:open /home/chong01/.ssh/id_rsa failed: Permission denied.(

19、注:权限不够)Saving the key failed: /home/chong01/.ssh/id_rsa.chong01 $ ls -aldrw- 2 chong01 complex 4096 2012-07-27 16:58 .ssh/-rw-r-r- 1 chong01 complex 181 2012-07-27 16:58 .vimrcchong01 $ chmod +x .ssh (注:修改权限)chong01 $ ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to sav

20、e the key (/home/chong01/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/chong01/.ssh/id_rsa.Your public key has been saved in /home/chong01/.ssh/id_rsa.pub.The key fingerprint is:ee:ce:2e:27:07:ec:4d:28:09:32:9c:4e:5f:b

21、f:a6:2e chong01BlueMoon3chong01 $ cd .sshchong01 .ssh$ ls -al-rw- 1 chong01 complex 1675 2012-07-27 17:01 id_rsa-rw-r-r- 1 chong01 complex 399 2012-07-27 17:01 id_rsa.pubchong01 .ssh$ cp id_rsa.pub authorized_keys (注:这一步非常重要)chong01 .ssh$ ssh anna01The authenticity of host anna01 (192.168.215.1) can

22、t be established.RSA key fingerprint is 06:21:14:d4:02:f2:3f:d3:40:67:13:d6:32:c2:7c:2e.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added anna01,192.168.215.1 (RSA) to the list of known hosts.Last login: Fri Jul 27 11:04:31 2012 from bluemoon3chong01anna01 $可见,已经可以

23、无密码登录子节点 anna01 了。说明:1)主节点上架设了 NFS 与 NIS 服务,子节点把主节点的 /home 挂载到自己的/home 目录上;所以当主节点上新增用户时,要重新建立数据库;同时,由于 SSH 以无密码方式登录别的节点时,是比较两个节点的$HOME/.ssh/目录下面文件 authorized_keys 里面的内容,所以这个文件一定要建立;又由于主节点与子节点共用/home,因此只要建立这个文件且把公匙放进去就能无密码访问了。特别注意,NIS 的作业在于,主节点与所有子节点上的账号密码都是一样的。2) 权限问题最重要。比如用 chongyi 登录:chongyicentos

24、1 $ ls al drwx-. 2 chongyi chongyi 4096 Jul 27 15:41 .sshdrwx-. 2 root root 4096 Jul 28 10:07 test (即/home/chongyi/ 下有属于 root 的目录 test)chongyicentos1 $ cd test-bash: cd: test: Permission denied (即 chongyi 无权限进入 test 目录)chongyicentos1 $ chmod 777 testchmod: changing permissions of test: Operation not

25、 permitted (即 chongyi 无权修改 test 目录的权限)chongyicentos1 $ su - (用户切换成 root)Password:rootcentos1 # cd /home/chongyirootcentos1 chongyi# ls -aldrwx-. 2 chongyi chongyi 4096 Jul 27 15:41 .sshdrwx-. 2 root root 4096 Jul 28 10:07 testrootcentos1 chongyi# chown -R chongyi:chongyi test (把 test 的账号与用户组都改为 chon

26、gyi)rootcentos1 chongyi# ls -aldrwx-. 2 chongyi chongyi 4096 Jul 27 15:41 .sshdrwx-. 2 chongyi chongyi 4096 Jul 28 10:07 test (目录 test 已经属于 chongyi)rootcentos1 chongyi# su - chongyichongyicentos1 $ ls -aldrwx-. 2 chongyi chongyi 4096 Jul 27 15:41 .sshdrwx-. 2 chongyi chongyi 4096 Jul 28 10:07 testch

27、ongyicentos1 $ cd testchongyicentos1 test$ (chongyi 可以进入 test 目录 )chongyicentos1 test$ cd chongyicentos1 $ ls -aldrwx-. 2 chongyi chongyi 4096 Jul 27 15:41 .sshdrwx-. 2 chongyi chongyi 4096 Jul 28 10:07 testchongyicentos1 $ chmod u-x test (test 目录去掉 x 的权限 )chongyicentos1 $ ls -aldrwx-. 2 chongyi cho

28、ngyi 4096 Jul 27 15:41 .sshdrw-. 2 chongyi chongyi 4096 Jul 28 10:07 testchongyicentos1 $ mkdir ./test/test2mkdir: cannot create directory ./test/test2: Permission denied (无 x 权限后无法在 test 目录下新建东西)chongyicentos1 $ chmod u+x test (test 目录加上 x 的权限 )chongyicentos1 $ ls -aldrwx-. 2 chongyi chongyi 4096 J

29、ul 27 15:41 .sshdrwx-. 2 chongyi chongyi 4096 Jul 28 10:07 testchongyicentos1 $ mkdir ./test/test2 (在 test 目录下新建目录 test2)chongyicentos1 $ cd testchongyicentos1 test$ ls -aldrwxrwxr-x. 2 chongyi chongyi 4096 Jul 28 10:25 test2 (在 test 目录下成功建立了目录 test2)分析下面的权限:drwxr-xr-. 2 cv complex 4096 Jul 28 10:25

30、 test9d:代表 test9 是目录test9 属于用户 cv 的,test9 属于 complex 组的cv 对 test9 的权限为 rwxcomplex 组的成员对 test9 的权限为 r-x其它别的用户,别的组的成员对 test9 的权限为 r-3)安装套件或者执行过程中遇到问题时,首先检查文件或者目录的所有者以及所在的用户组,看它们的权限是什么;其次,要检查该文件或者目录的权限是不是套件所允许的,比如上面的 authorized_keys ,SSH 只允许它的权限是 600 时,才可以使用 SSH 无密码互访;再次,要检查该文件或者目录的所有者以及所在的用户组是不是套件所允许的

31、,比如 PBS 作业管理系统就是不允许 root 提交作业;当然,还要检查防火墙中是否开了套件需要的端口,以及套件之间相互依赖的套件是否有启动等等。4)在添加新用户时,要强制建立用户 home 目录,所以 useradd 命令要用-m 参数;另外在删除用户时,一定要连同用户的家目录一起删除,如 userdel r username ,不然的话,删除一个用户后,再添加一个新的用户时,有的系统会把这个新用户安排在被删除用户的家目录中,这样会产生一堆的权限问题。三建立 NFS 服务建立之前要明确几件事:1) NFS 服务器端与 NFS 客户端的账号关系a. 每个账号都分配有 UID 与 GID,这个

32、可以通过/etc/passwd 查看rootcentos1 # cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologinchongyi:x:500:500:/home/chongyi:/bin/bashcv:x:501:501:/home/cv:/bin/bash账号:密码(x 代表已经转移到 /etc/shadow):UID:GID:用户信息说明:家目录:默认使用的 shell文件系统的 inode 记录的是 UID 与 GID,不是账号与组名,即一个账号能不能读取文件,取决于它的 UID 与

33、GID.b. 不同的主机,即使建立了相同的账号,但是主机分配给它们的 UID 与 GID 不一定是相同的.c. 客户端进入服务器端读取文件时,客户端无论以什么账号登陆,最后都会映射成为服务器主机上面的一个账号,如,客户端以 cv 账号,UID=501 登录服务器端,如果服务器端 UID=501 对应的账号为 cv01,那么客户端的身份变为 cv01,如果 UID=501 在服务器端不存在,则此时服务器端将把客户端压缩为匿名者,分配给它的账号为 nfsnobody ,而且 UID=65534.d. 客户端进入服务器端读取文件的权限,取决于两个方面,一个方面是它被映射成为服务器端上账号所能读取的权

34、限;另外一方面取决于服务器端/etc/exports 中规定的客户端的权限;一旦任何一方面给它限制说不能进行什么样的操作,则就不能进行那方面操作.e. 为了让客户端的账号与服务器端的账号一一对应,就必须引进 NIS 服务器了.2) 设置开机自启动某项服务通常可以用 chkconfig , ntsysv 命令或者在/etc/rc.d/rc.local 中写入启动某项服务的命令即可:a. 用 chkconfig 命令启动某项服务,它是有前提的,就是该服务的运行脚本必须放在/etc/init.d/中,可以用如下命令查看 chkconfig 管理的服务中是否有你需要的,rootcentos1 # ch

35、kconfig -list |moreabrt-ccpp 0:off 1:off 2:off 3:on 4:off 5:on 6:offabrt-oops 0:off 1:off 2:off 3:on 4:off 5:on 6:off.你也可以自己写一个脚本,即某个服务,先放入/etc/init.d/中,然后用相关的命令把它转化为 chkconfig 管理开启关闭 服务的命令为rootcentos1 # chkconfig - -level 0123456 service_name on|off再用下面命令确认是否已经成功rootcentos1 # chkconfig - -list | gr

36、ep service_name其中,等级 0,1,2,3,4,5,6 是系统的运行等级,不同等级意味着系统开机初始化时开启的服务是不一样的,比如等级 3 对应的是“完整的含有网络功能的纯文本模式” ,等级 5 是“完整的含有网络功能的 X Window 模式”.可以用下面的命令查看当前你的主机运行等级rootcentos1 # runlevelN 3实例:rootcentos1 #chkconfig -level 35 ypserv on它代表无论是系统运行在等级 3 还是等级 5,在开机初始化过程中自动开启 ypserv 服务.b. 由于/etc/rc.d/rc.local 是一个脚本,它是

37、系统开机初始化完成之后,去读取其中的命令的,因此只需要把开启某项服务的命令写到里面去就可以了.例如,开机后自动关闭防火墙可以这样子:rootcentos1 # vi /etc/rc.d/rc.local#!/bin/sh# This script will be executed *after* all the other init scripts.# You can put your own initialization stuff in here if you dont# want to do the full Sys V style init stuff.touch /var/lock/

38、subsys/localservice iptables stop (新加入的内容) c. 用 chkconfig 命令启动的服务先于用 /etc/rc.d/rc.local 开启的服务 d. 有好多个服务,如果有规定开启的顺序,则,如果用 chkconfig 命令,那么必须在/etc/init.d/中找到这些服务的脚本,然后打开它,找到下面那一行chkconfig: xx xx xx ,其中 xx 是数字修改第二组数字 xx 的值,就可以规定这些服务的顺序了(修改之后必须用命令重新把这些服务加入 chkconfig 管理).如果是用/etc/rc.d/rc.local 管理,由于它是一个脚本

39、,因此放在前面的就首先开启啦 .e. 当有多个服务,要求规定开启顺序时,推荐使用/etc/rc.d/rc.local,因为用 chkconfig 要修改各个服务的脚本,这会引起混乱(万一一个服务还和别的服务有先后依赖关系,则混乱了).3) 开启|关闭防火墙的命令有:rootcentos1 # /etc/init.d/iptables status (查看状态)rootcentos1 # /etc/init.d/iptables stop (关闭)rootcentos1 # /etc/init.d/iptables start (开启)或者rootcentos1 # service iptabl

40、es statusrootcentos1 # service iptables stoprootcentos1 # service iptables start (当设置了开机自动关闭后,可以用这命令重新开启防火墙)开机自动关闭可以:rootcentos1 # chkconfig -level 35 iptables off或者,在/etc/rc.d/rc.local 中写入/etc/init.d/iptables stop或者写入service iptables stop4) 什么是命令?其实命令只是一个可执行的脚本而已;什么是命令的参数?其实它们只是脚本的参数而已.例如,rootcento

41、s1 # which man (对应 “脚本 脚本参数$0 $1 $2 ” )/usr/bin/man (脚本输出值)命令行的 which 其实就是一个可执行脚本,而 man 是第一个参数 $0 . 之所以在任何目录下都可以用 which ,因为它把 which 这个脚本的绝对路径加入了 PATH 这个全局环境变量中; 所以,当你自己写了一个可执行脚本,为了让它在所有目录下都可以执行,只需把该脚本所在的绝对路径加入 PATH 中.5)安装 NFSa. 在 centos1 也就是主节点,上安装 NFS Serverrootcentos1 # yum install rpcbind (centos

42、6.3 版本中, portmap 变改名为 rpcbind,是 RPC 主程序)rootcentos1 # yum install nfs-utils (是 NFS 的核心,主程序) rootcentos1 # mkdir -p /cluster/server (设置/disk1 的挂载点)rootcentos1 # vi /etc/exports (设置共享内容)/home 59.77.36.208(rw,async,no_root_squash)/disk1 59.77.36.208(rw,async,no_root_squash) 59.77.36.207(rw,async,no_roo

43、t_squash)rootcentos1 # /etc/init.d/rpcbind start (启动 RPC)rootcentos1 # vi /etc/rc.d/rc.local (设置成开机自启动 )#!/bin/sh# This script will be executed *after* all the other init scripts.# You can put your own initialization stuff in here if you dont# want to do the full Sys V style init stuff.touch /var/lo

44、ck/subsys/local/etc/init.d/rpcbind startrootcentos1 # exportfs rv (挂载/etc/exports 的设置)exporting 59.77.36.208:/disk1exporting 59.77.36.207:/disk1exporting 59.77.36.208:/homerootcentos1 # /etc/init.d/nfslock start (开启 nfslock,并且设为开机自启动)Starting NFS statd: OK rootcentos1 # /etc/init.d/nfs start (启动 NFS

45、)Starting NFS services: OK Starting NFS quotas: OK Starting NFS mountd: OK Stopping RPC idmapd: OK Starting RPC idmapd: OK Starting NFS daemon: OK rootcentos1 # vi /etc/rc.d/rc.local (设置成开机自启动 ).touch /var/lock/subsys/local/etc/init.d/rpcbind start/etc/init.d/nfslock stop /etc/init.d/nfslock start/e

46、tc/init.d/nfs stop (先关掉)/etc/init.d/nfs start (再开启)注:为什么先关掉再开启,因为怕不小心用 chkconfig 设了 nfs,这样 nfs 会先于 RPC 启动,可是 RPC 必须先于NFS 启动,这样 NFS 才可以向 RPC 注册.rootcentos1 cluster# mount -t nfs -o rw,bg,soft 59.77.36.207:/disk1 /cluster/server rootcentos1 disk1# ls al (查看/disk1 的内容)drwxr-xr-x. 2 root root 4096 Jul 3

47、0 11:10 hahadrwx-. 2 root root 16384 Jul 26 06:46 lost+foundrootcentos1 disk1# cd /cluster/serverrootcentos1 server# ls al (/cluster/server 中的内容和/disk1 下的一样,挂载成功)drwxr-xr-x. 2 root root 4096 Jul 30 11:10 hahadrwx-. 2 root root 16384 Jul 26 06:46 lost+found rootcentos1 server# vi /etc/rc.d/rc.local (加入开机自动挂载中)/etc/init.d/nfs startmount

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报