基于DRBL和CentOS6.3搭建无盘超算集群 (Diskless Cluster)

文章地址:http://my.oschina.net/emptytimespace/blog/105468

建议阅读官方安装文档:http://drbl.nchc.org.tw/one4all/desktop/#client_filesystem

        实验室现有硬件计算服务器四个节点,配置为:每节点16CPU;一台内存16G,其余三台内存24G;主节点2T*2的磁盘阵列,其余每节点一个20G硬盘,另有两个512G硬盘,其中一个旧的做系统盘,另一个新的准备作为备份;节点间使用普通的1000M网络交换机互联。

        以下是我们尝试配置集群(Cluster)的过程,目前运行良好,并使用Apache + Ganglia提供监控并以网页形式实时显示。(本文档待持续维护中)

一、首先安装centos6.3系统:

1, 光盘或网络PXE重新安装系统

        可将磁盘阵列(这里是/dev/md126)的part5中的home目录(可能是原来的home目录)挂载到新系统/home目录:

[***]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Jan 26 22:54:18 2013
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ea636e37-69c9-4603-9250-76193bca28c7 /                       ext4    defaults        1 1
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
#
#
/dev/md126p5 	 /media/raid2tp5  	ext4 	defaults 	0 0 
/dev/md126p1 	 /media/raid2tp1 	ext4 	defaults 	0 0 
/media/raid2tp5/home  	/home 		none	defaults,bind 	0 0

2, 注意DRBL安装说明中提到,建议禁用Network Manage 的图形界面配置软件

在我们的环境下的操作中确实需要禁用,否则出现兼容问题。

另外,請設定好所有網路卡的IP位址,我們後面用的是eth0對外,其餘的eth1以後的對內部使用(請務必將這些內部使用的網路卡IP都設成192.168.x.x, 172.16-31.x.x或是10.x.x.x等的private IP,例如eth1:192.168.101.254, eth2:192.168.102.254, eth3:192.168.103.254...);請注意一個原則,private IP (192.168.x.x)將會被拿來做DRBL環境的連結用。安裝時也建議關閉防火牆,等DRBL安裝完之後再來設定防火牆。另外,如果你的GNU/Linux安裝的時候自動幫你裝了NetworkManager,且被自動啟動的話,建議關閉或者移除,因為當作伺服器的機器並不適合使用NetworkManager。舉例而言,Fedora的話,可以這樣處理: sudo chkconfig --del NetworkManager; sudo chkconfig --del NetworkManagerDispatcher,然後啟動chkconfig network on。Ubuntu或者Debian之類的套件,先手動安裝圖形的網路設定程式: "sudo apt-get install gnome-network-admin",然後直接移除network manager: "sudo apt-get --purge remove network-manager",重新開機後,執行"network-admin"(或者在Gnome桌面選擇"系統"-> "管理" -> "網路")就可以設定固接網路。

3, 设置好内网和外网的网卡

1)内外网设置

编辑/etc/sysconfig/network-scripts/ifcfg-eth1

与/etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE 接口名(设备,网卡)
BOOTPROTO IP的配置方法(static:固定IP, dhcpHCP, none:手动)
HWADDR MAC地址
ONBOOT 系统启动的时候网络接口是否有效(yes/no)
TYPE 网络类型(通常是Ethemet)
NETMASK 网络掩码
IPADDR IP地址
IPV6INIT IPV6是否有效(yes/no)

GATEWAY 默认网关IP地址  ###交换机连接的子网不需配置网关?###

2)重启网络链接

# service network restart


3)检查网路

[***]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
210.45.*.*     *               255.255.255.0   U     0      0        0 eth1
10.1.1.0        *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
default         210.45.72.254   0.0.0.0         UG    0      0        0 eth1
[root@nsplab0 drbl]# 



二、DRBL安装、配置和使用:

1, 安装drbl

如果您不是系統管理者(root),執行指令"su root" (然後輸入root的密碼),如果你的套件沒有設定root密碼,可以用"sudo su " (然後該使用者的密碼)以便切換成root 
請先安裝DRBL的金鑰(ID: 1024D/D7E8DF3A, Key fingerprint = F532 A131 65AF 2168 1634 DB1B 4000 9511 D7E8 DF3A),這樣可以進一步確認您安裝的程式是本計畫所發行的程式。有兩個方式可以來安裝。     方法1: "rm -f GPG-KEY-DRBL; wget http://drbl.nchc.org.tw/GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL" 。     方法2: 由key server下載,KeyID是D7E8DF3A,可以這樣執行"gpg --keyserver subkeys.pgp.net --recv-key D7E8DF3A",然後再執行"gpg -a --export D7E8DF3A > GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL". 如果你要查詢系統是否已經有匯入數位簽章的話,可以這樣查詢: rpm -qa gpg-pubkey*。 
下載DRBL的RPM檔(檔名如drbl-1.9.6-35.i386.rpm):穩定版,測試中的版本,或是不穩定的版本。 執行"rpm -Uvh drbl-XXX.i386.rpm"或者"yum install drbl-XXX.i386.rpm" (如果你的套件有yum的話)來安裝drbl程式,drbl-XXX.i386.rpm就是您剛剛下載的檔案,如果您是下載穩定版的話,就執行"rpm -Uvh drbl-current.i386.rpm"或者"yum install drbl-current.i386.rpm"。


2,配置drbl

1) 可以查看修改/opt/drbl/conf下面的文件:client-ip-hostname.example 

写一个自己希望的分配给客户端的IP和hostname映射关系,如:

# cat client-ip-hostname
10.1.1.2 node1
10.1.1.3 node2         
10.1.1.4 node3

2) 也可以修改自定义目录/opt/drbl/conf中的其他example文件.

3) 运行配置命令

# /opt/drbl/sbin/drblpush -i

特别注意1: 在运行中会提示可以one by one启动客户端(如果要自动探测客户端网卡MAC,需要每个客户端都设置成PXE启动,且为第一顺序),收集其MAC地址。作为替代方法,也可以手动新建一个文本文件,一般在/etc/drbl/macadr-eth0.txt,在其中按行添加每个内网客户端网卡的MAC地址,之后配置会要求输入文件的位置,这样不再需要 start the PXE clients one by one 了。

特别注意2: 最好设置成每个MAC分配固定静态的IP,参考:新增clinet 電腦,我有指定MAC address,該如何操作比較正確 ?

特别注意3:最重要的要查看目录/tftpboot/nodes下是否有对应每个客户端IP的目录文件,如有,客户端一般就可以启动起来到了,前面在两种Full模式下适用,在SSI mode下不一定适用。注意,客户端需要使用PXE启动,请对应设置BIOS,且最好BIOS设置成可以通过PCI-LAN设备唤醒启动。


3, 启动或重启drbl

# drbl-all-service start

或者

# drbl-all-service restart

可能会出现“Failed to start service ypbind”的错误,可以如此正确重启:

# service ypserv restart


4, 重启服务器和节点

     一般先使计算节点关机,再关机主节点。开机时,首先主节点开机,主节点开机进入登陆界面后,最好再等1分钟(自我感觉),并且保证drbl的PXE服务启动了,如果不确定可以进入主节点使用drbl-all-service来重新开启。然后再启动计算节点,不需考虑顺序。这里开关机就是简单在各系统执行 shutdown 或 halt 命令或是直接按电源或reset键(不能软件开关机时)。各节点正常并drbl-doit命令可用时(可以无密码ssh连接各个节点),可以使用drbl-doit shutdown 或 halt 来统一关机。


5, DRBL使用和管理

1)增加新的节点机器

    方法1: 可以重新配置安装子节点

drblpush -i
最后会提示是否保留原有的设置,可以选择不保留,于是每个节点重新生成配置文档。

    方法2: 如果前面安装的节点使用SSI mode,那么不需重新drbl push

用戶端電腦數目有所增加,只要改/etc/dhcp/dhcpd.conf之後,執行 "/opt/drbl/sbin/dcs -> others -> gen_3N_conf"或是"/opt/drbl/sbin/drbl-3n-conf generate"即可以馬上增加节点的数目

    详细参考:网页:DRBL SSI mode的使用與修改 的最后几行说明。

    如何知道新节点是否可以成功PXE启动了?可以查看/tftpboot/nodes目录是否有所希望添加的机器对应的IP地址所命名的目录,如果存在节点就应该可以启动起来。

2)增加新用户或配置新节点的用户和密码

    新添加的节点可以启动后不一定具有主节点的所有用户信息。解决办法预想是,可以把主节点下的/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow拷贝到新客户端的相应目录(即从/etc拷贝到/tftpboot/nodes/新节点IP),批量拷贝可使用drbl-cp-host,更多账号管理的介绍可见鸟哥的网页:http://linux.vbird.org/linux_basic/0410accountmanager/0410accountmanager-fc4.php

    【注】这种方法有些生硬,担心有后遗症,因为时间有限,暂还没考虑好别的办法。

    增加新节点时已有的用户会自动同步到新节点,或者手动执行“make -C /var/yp”来更新“YP/NIS”。

    对于服务器和客户端增加新用户

        方法一

            增加使用drbl自带的drbl-useradd和drbl-userdel命令,此方法无法人为指定用户的id号码。

            產生一個使用者, 舉例說明, 要產生一個使用者 drbl, 群組是penguin

            drbl-useradd -s drbl penguin

            (http://drbl.nchc.org.tw/one4all/desktop/techrpt.php?c=drbl-useradd&t=%E5%A4%A7%E9%87%8F%E5%BB%BA%E7%AB%8B%E4%BD%BF%E7%94%A8%E8%80%85%E5%B8%B3%E8%99%9F)




        方法二

            使用传统方法adduser, deluser来首先在服务器中增加用户后通过执行“make -C /var/yp”来更新“YP/NIS”。还是建议使用方法一

3)    DRBL进阶管理

         drbl-doit "echo 'source /opt/intel/mkl/bin/mklvars.sh intel64' >>/etc/bashrc"对所有客户端机器操作:

         更过管理使用方法可点此处查看


【其他参考】

鸟哥的drbl记录  DRBL操作指南  


三、Cluster系统管理和使用

1、系统管理之消息通知

1)用户登录通知

修改文件/etc/motd,加入你希望用户登录后看到的内容。

2)推送给用户消息

write 用户名 [tty]
使用以上命令可以给当前系统的用户发送即时消息,消息不会打断用户的工作,会显示在用户的当前标准输出。还可以使用write all 给所有用户发送消息。


2、系统管理之SSH

1) SSH 之 X11 Forwarding

修改服务器文件/etc/ssh/sshd_config,令 AllowTcpForwarding yes, AllowAgentForwarding yes和X11Forwarding yes 

然后修改自己机器(如果是linux)的/etc/ssh/ssh_config,令ForwardAgent yes, ForwardX11 yes。

考录到也需要从服务器登录到其他节点,所以也需要将服务器中的ssh_config文件如上修改。前者(Tcp)或许不需要。

2) SSH 之 节点间无密码互访。

对root用户:

# ssh-keygen -t rsa   
# cd ~/.ssh
# cat id_rsa.pub >>authorized_keys

之后需要使用命令“drbl-cp-host ~/.ssh/* /root/.ssh/”将认证文件拷贝到子节点。

对其他普通用户,因为home目录共享,只需要做第一步即可。

如果互访仍有问题,可以参考后面一节:“SSH 之 HostKyeChecking”

3) SSH 之 HostKyeChecking

对于一些奇怪的问题,比如从主节点无密码登录到子节点可行,但是反过来不行,或是总需要回答yes。一些奇怪问题可能与节点共享一个系统和用户目录有关,也可能与DRBL相关。在尝试禁用检查之后,各节点的互访没有障碍了。方法:添加如下到ssh_config

#    UserKnownHostsFile=/dev/null
     StrictHostKeyChecking no

如果不想保存~/.ssh/known_hosts,可以启用上面第一行,如此每登录都要生成known_hosts,只不过都保存到 /dev/null 这个文件黑洞中去了。


【注意】DRBL重装子节点后,原known_hosts就无效了,保留原文件可能造成无法从主节点访问字节点。



Test:$$(E=mc^2)$$:

你可能感兴趣的:(cluster,集群,centos6.3,diskless,无盘)