2019独角兽企业重金招聘Python工程师标准>>>
文章地址: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
【注意】DRBL重装子节点后,原known_hosts就无效了,保留原文件可能造成无法从主节点访问字节点。
Test:$$(E=mc^2)$$: