利用Ubuntu组建机群

来源:互联网 发布:arcgis js 点击事件 编辑:程序博客网 时间:2024/06/09 22:39
 

利用Ubuntu组建机群

参考资料:

http://mikilab.doshisha.ac.jp/dia/research/report/2005/0510/001/report20050510001.html

http://micro.ustc.edu.cn/Linux/text/hp.htm

http://www.ibm.com/developerworks/cn/linux/cluster/lw-clustering.html

现在cluster越来越受到HPC领域的广泛欢迎,本文介绍了利用Ubuntu组建有盘机群的步骤。

操作系统:Ubuntu/GNU Linux 7.10

 

1.    设备需求

组建机群需要的硬件包括:

PC硬件配置:

CPU

Intel Core 2 Duo E6550()

主板

Intel DG33BU

内存

金士顿 1GB×2 DDR2 667

硬盘

希捷160G 7200.10 16M SATA-II

光驱

明基 DW2000

网卡

千兆网卡TP-Link TG-3269C

机箱电源

华硕TA-863 +350W电源


  1).4台以上配置的PC机。
  2).5根足够连接集群系统中每个节点的,使用5类非屏蔽双绞线制作的RJ45缆线
  3).11000M快速以太网(如:TP-Link TL-SG2224WEB )交换机
  4).1Ubuntu7.10安装盘

其中一台作为服务器(此计算机有两个网卡,一个用来连接外部网络,另外一个用来连接内部网络),其余的机器作为计算节点用,具体硬件连接见下图。

  

Fig 1.1: 硬件连接图

下面详细介绍组建cluster的软件部分。

2.    master slave上安装Ubuntu 操作系统

为了简化系统我们将所有的硬盘划为两个分区,一个作为交换分区/swap,大小为两倍的内存大小;剩下空间另一个为根分区/。具体的安装步骤可以参考下面的链接。

http://mikilab.doshisha.ac.jp/~t-kohata/memowiki/pukiwiki.php?sarge

3.    配置环境和网络

安装完操作系统之后根据实际情况配置下面的文件。

l         #vi /etc/apt/sources.list

deb http://debian.cn99.com/ubuntu gutsy main multiverse restricted universe

deb-src http://debian.cn99.com/ubuntu gutsy main multiverse restricted universe

deb http://debian.cn99.com/ubuntu  gutsy-security main multiverse restricted universe   

l         #aptitude update

l         #aptitude upgrade 

l         IP地址分配表

 

Master

Slaves

Name

hana

node1

node2

node3

IP address

Outside: 172.20.11.226
Inside: 192.168.1.1

192.168.1.2

192.168.1.3

192.168.1.4

l         # vi /etc/network/options

ip_forward=yes          //make sure it is ‘yes’

spoofprotect=yes       

yncookies=no

4.    安装基本软件包

安装必要的软件包。

l         #aptitude install libncurses5-dev binutils bin86 gcc g++ make modutils g77 perl bzip2 rcconf

5.    RSH

master上面工作,通常使用 BASH 这个shell 来传达给kernel 工作的讯息,以使主机master正确的工作;而如果在不同的主机之间,那就可以使用 R Shell 来进行指令的下达喔,如此一来,我们就可以直接在 A 机器,向 B 机器下达工作的指令,而不需要登入 B 机器。另外由于这个 RSH 是一个有安全隐患的服务,我们可以直接登入 RSH 主机,并且在上面进行指令的下达,为了避免还要输入密码的问题,因此通常 RSH 已经将信任主机设定好了,不过,由于 RSH 会激活一些 port 来监听 Clients 的需求,而偏偏这些 port daemon 都还挺危险的,因此,Cluster 最好是设定在内部网域当中,并使用私有 IP ,比较能够避免危险。此外,那个 Master 也要设定好一定程度的严密防火墙。

5.1           Master 机器

l         #aptitude install rsh-client

首先下载安装rsh-client,接下来编辑以下文件。

l         #vi /etc/hosts        在该文件中输入各个主机内部主机名称以及查询系统。

#IP address         domain name           hostname

192.168.1.1         (hana.cluster)           hana

192.168.1.2         (node1.cluster)          node1

192.168.1.3         (node2.cluster)          node2

192.168.1.4         (node3.cluster)          node3

l         #vi /etc/network/interfaces

配置网络,最为服务器的主机有两个卡,一一进行配置。

auto eth0

iface eth0 inet static

   address  172.20.11.226

   netmask 255.255.255.0

   network  172.20.11.0

   broadcast 172.20.11.255

   gateway 172.20.11.6

auto eth1

iface eth1 inet static

   address  192.168.1.1

   netmask 255.255.255.0

   network  192.168.1.0

broadcast 192.168.1.255

pre-up iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –d 0.0.0.0/0 –o eth1 –j MASQUERADE

l         #ifdown –a

l         #ifup –a

l         #/etc/init.d/networking restart

5.2           Slave 机器

下载安装rsh-client rsh-server

l         #aptitude install rsh-client rsh-server

由于我们只允许局域网内部进行访问,所以在这里添加允许访问的机器的IP地址。

设置允许root进行rshrlogin

l         # vi /etc/pam.d/rlogin

    authrequiredpam_securetty.so这一行开头添加#,从而注释该行。

l         #vi /etc/hosts.equiv

192.168.1.1

192.168.1.2

192.168.1.3

192.168.1.4

以上主机允许匿名访问,接下来配置下面的文件(红色部分表示要修改或添加的内容)

l         #vi /ect/pam.d/rsh

auth     required   pam_nologin.so

auth     required   pam_env.so

auth     required   pam_rhosts_auth.so /

                                hosts_equiv_rootok promiscuous

account      required   pam_unix_acct.so

session       required   pam_unix_session.so

l         #vi /etc/pam.d/rlogin

#%PAM-1.0

auth            required   pam_nologin.so

#auth          required   pam_securetty.so

auth            sufficient pam_rhosts_auth.so /

                                hosts_equiv_rootok promiscuous

auth            required   pam_unix.so nullok

account             required   pam_unix.so

password   required   pam_unix.so nullok use_authtok obscure /

                                    min=4 max=8

session              required   pam_unix.so

l         #vi /etc/network/interfaces

auto eth0

iface eth0 inet static

    address 192.168.1.2 (or 3, 4) 

    netmask 255.255.255.0

    network  192.168.1.0

    broadcast 192.168.1.255

    gateway 192.168.1.1

配置完了之后重新启动网络。

l         #/etc/init.d/networking restart

6.    MPI

MPImessage passing interface)主要用来处理处理并行计算时节点之间的信息交换。MPI本身不是一个软件,只是一个通信标准,具体实现可以选用MPICH

http://www-uinx.mcs.anl.gov/mpi/mpich/

6.1           Master 机器

安装MPICH软件包。

l         #aptitude install mpich mpi-bin libmpich1.0-dev

下来配置下面的文件,在该文件中添加上允许信息交换的节点。

l         #vi /etc/mpich/machines.LINUX

#localhost

#IP address

192.168.1.2

192.168.1.3

192.168.1.4

192.168.1.1(MasterIP要放在最后)

6.2           Slave 机器

安装MPICH软件包。

l         #aptitude install mpich mpi-bin libmpich1.0-dev

接下来配置下面的文件,在该文件中添加上允许信息交换的节点。

l         #vi /etc/mpich/machines.LINUX

#localhost

#IP address

192.168.1.1

192.168.1.2

192.168.1.3

192.168.1.4

7.    NFS

7.1           Master机器

l         #aptitude install nfs-kernel-server

l         #groupadd  nogroup

l         #useradd  nobody

l         #chown  nobody.nogroup  –R  /home 

l         #vi /etc/exports

# Shared direction   Node name (Model)  

/home          192.168.1.0/255.255.255.0(rw,no_root_squash,async,subtree_check)

l         #/etc/init.d/nfs-kernel-server restart

7.2           Slave机器

l         #aptitude install nfs-common

l         #vi /etc/fstab

       在该文件中加入主机启动时可以mount的目录。这里mount的是远程master主机。mount point Source dev的目录要一致,否者运算时会出现路径找不到.

#Source dev   mount point   FS type    option          n  n

hana:/home    /home       nfs      defaults,rw,nolock   0   1

l         #/etc/init.d/nfs-common restart

l         #mount –a

l         #/etc/init.d/networking restart

8.    NIS

NIS(network information service) 使masterslave具有相同的账号群组关系。这样不同的机器具可以以相同的用户id以及群组id登录访问公共的信息

8.1           Master机器

架构NIS server请先确定是否有安装了相关的套件,缺一不可,如下列:ypservyppasswdd。如果没有安装进行安装。本文中已经安装过了,接下来直接安装NIS,在安装的过程中可能会需要输入NIS的域名,任意输入。主意这个NIS domain不是DNS domain

l         #aptitude install nis

接下来设定NIS server

1. 修改配制文件 /etc/defaultdomain 内容如下, 设定 NIS 的域:

hana

2. 执行

#domainname hana

3. 修改配置文件 /etc/default/nis 确保有如下设置, 设定为 NIS 主服务器

NISSERVER=hana

4. 修改配置文件 /etc/ypserv.conf

ypserver hana

5. 重启服务

#/etc/init.d/nis restart

6.测试

使用 ypwhich 命令测试与服务器的连接情况

# ypwhich
                   192.168.16.2

7.安全配制

在配置文件 /etc/ypserv.securenets ,添加可以访问的客户机的ip地址范围,比如允许 192.168.1.0/255.255.255.0 网络段的所有主机访问

255.0.0.0                  127.0.0.0

255.255.255.0              192.168.1.0

8.2           Slave机器

l         #aptitude install nis

接下来是设定NIS client,而你必须先确定有安装ypbindyp-tools套件

1. 在配置文件 /etc/hosts 中添加 NIS 服务器的记录

192.168.1.1 hana

2. 修改 /etc/defaultdomain 内容如下, 设定 NIS

hana

3. 执行命令

# domainname hana

4 修改配置文件 /etc/yp.conf, 加入如下内容, 指定索要使用的 NIS 服务器

ypserver hana

5. 确保配置文件 /etc/nsswitch.conf 中,passwd, group, shadow netgroup 条目如下设置

passwd:         hana     compat

group:          hana      compat

shadow:         hana     compat

 

hosts:          hana      files dns

networks:       hana      files

 

protocols:      hana        db files

services:       hana        db files

ethers:         hana       db files

rpc:            hana      db files

 

netgroup:       hana

6. 在文件 /etc/passwd 尾部加入

+::::::              (6:)

7. 在文件 /etc/shadow 尾部加入

+::::::::            (8:)

8. 在文件 /etc/group 尾部加入:

+:::                 (3:)

l         #/etc/init.d/nis restart

9.    测试

到现在我们的cluster已经组建结束,现在来测试一下。测试步骤如下。

l         # cp /use/share/doc/libmpich1.0-dev/examples/cpi.c  /home/hana

l         # cd /home/hana

l         # mpicc cpi.c

l         # mpirun -np 1(2,3,4) a.out

如果要安装meepmpi,则运行如下命令:

l         #apt-get install mpb h5utils hdf5-tools libhdf5-mpich-dev mpb-mpi meep meep-mpi

运行meep程序时,可参照下面步骤进行:

1.         进入共享目录#cd /home/hana

2.         更改用户#su nobody

3.         4个节点进行并行运行$mpirun –np 4 /usr/bin/meep-mpi ring.ctl|tee ring.out

10.             增加计算节点的方法

当我们需要增加一个新的计算节点到该机群中去的时候,有两种方法可以实现,一种是采用全面介绍得slave机器的组建过程,另外我们也可以采用硬盘拷贝的方法来实现,因为所有的计算节点的功能是一样的。拷贝结束之后再修改一些本机固有的文件。比如/etc/network/interface,/etc/hostname等等。硬拷贝可以利用下面一条命令。

#dd if=/dev/sda of=/dev/sdb

或者使用systemimager工具进行节点安装并更新

在服务器hana上安装nfs-kernel-server, rsh-client, rsh-server, systemimager-server

在所有节点机上安装nfs-common, rsh-client, rsh-server, systemimager-clien

1.首先配置好一个节点node1,然后在node1上运行prepareclient#prepareclient –server hana

2.在服务器上运行:

#mkdir /var/lib/systemiamger/images/clusternode

#getimage -golden-client node1 -image clusternode
node1
是配置好的节点,clusternode是镜像目录名,这个目录缺省是在/var/lib/systemiamger/images下。getimage读取完节点机的信息后,会问你是否配置自动安装: y 会执行addclients来配置自动安装信息。

服务器上生成镜像后,在其余的节点机上运行
#updateclient -server hana -image clusternode
系统就会自动的clone一个节点出来。(注:在更新节点机时,最好先备用一下boot目录,更新完成后再还原boot目录,以防止更新后节点机的grub被破坏而启动不了)
node2:~# updateclient –server hana -image clusternode
Updating image...
receiving file list ... done
集群各个节点的更新与升级可以用C3 + systemimager来完成:
1.
配置好一个节点,prepareclient
2.
systemimager-server上,用getimage 来更新节点信息;
3.
cexecs -p -c "updateclient ... "在全部节点上更新。