rocks是一个开源的集群管理系统,本文的内容主要参考自rocks的官方文档,详细内容可参考http://www.rocksclusters.org

1.rocks的网络架构:

 

图片来源于rocks官方文档http://www.rocksclusters.org/roll-documentation/base/5.4.3/getting-started.html

2.安装rocks头节点:

头节点的硬件资源需求如下:

硬盘 > 30G,

内存 > 1G,

网卡 2块,eth0配内网IP,eth1配外网IP

注:如果节点内存不满足要求会导致安装程序卡死,但不会有错误提示,具体表现为安装进程一直停留在某个安装页面。

节点通过光驱启动以后按照提示信息一步一步输入IP,域名、DNS之后会遇到硬盘分区,rocks有两种分区的模式,一种采用系统默认的分区方式,另外也可以手动分区:

默认分区:

/ 16G

/var 4G

swap 1G

/state/partition1(即/export) 剩余空间

注:

1) /export是到/state/partition1的一个软链接,这个目录主要用于存放rocks相关的内容以及用户的home目录。

2) 如果选择手工分区的话需要保证/目录至少16G,并且必须有/export分区。

3) 硬盘驱动器命名:IDE硬盘(hda),SCSI硬盘(sda),如果两种驱动器同时存在的话,通常IDE的硬盘会先被系统发现。

3. 安装计算节点:

计算节点的硬件资源需求如下:

硬盘 > 30G

内存 > 1G

网卡 1块

在头节点运行下面的命令:

#insert-ethers

安装计算节点时用pxe启动即可,按照头节点的提示信息选择需要安装的类型。

在实际操作的过程中,可能希望计算节点的IP地址能够按照一定的顺序,而不是dhcp自动分配,可以使用下面的方法(把IP和mac地址绑定):

用–dump参数查看集群中已经存在的主机,rocks 5.4的中的insert-ethers已经没有–dump这个参数了,为了使用方便可以从其他版本的rocks中拷贝这个文件。

[root@sz ~]# insert-ethers –dump
/opt/rocks/sbin/insert-ethers –hostname=”compute-0-0″ –rack=0 –rank=0 –cpus=8 –appliance=”Compute” –mac=”00:50:56:b0:00:09″ –device=”eth0″ –module=”None” –ipaddr=”10.255.254.2″ –netmask=”None” –norestart –batch
/opt/rocks/sbin/insert-ethers –hostname=”compute-0-1″ –rack=0 –rank=1 –cpus=8 –appliance=”Compute” –mac=”00:50:56:b0:00:0a” –device=”eth0″ –module=”None” –ipaddr=”10.255.254.3″ –netmask=”None” –norestart –batch
/opt/rocks/sbin/insert-ethers –hostname=”compute-0-2″ –rack=0 –rank=2 –cpus=8 –appliance=”Compute” –mac=”00:50:56:b0:00:0b” –device=”eth0″ –module=”None” –ipaddr=”10.255.254.4″ –netmask=”None” –norestart –batch

按照上面导出的命令格式添加新的主机:

[root@sz ~]#/opt/rocks/sbin/insert-ethers –hostname=”compute-0-3″ –rack=3 –rank=0 –cpus=8 –appliance=”Compute” –mac=”00:50:56:b0:00:10″ –device=”eth0″ –module=”None” –ipaddr=”10.255.254.5″ –netmask=”None” –norestart –batch

上面的命令会把compute-0-3的信息写入到rocks的数据库中,运行完成以后重启mac地址为:00:50:56:b0:00:10的计算节点,选择pxe启动就可以安装指定的计算节点了。

我在esx的虚拟机上安装的计算节点,发现在获取安装包的时候等待了相当长的时间,后来检查日志时发现,因为存储IO wait特别高,导致计算节点从头节点下载rpm包时只有几k的速度,这个时候用iperf测试头节点和计算节点之间的网络带宽是正常的,没有问题,在更换了头节点和要安装的计算节点的虚拟机磁盘文件使用的存储以后安装速度相当的快。。

4. rocks计算节点的类型

在运行insert-ethers命令后会发现,rocks默认的有两种appliance:compute节点和login节点。默认情况下login节点不是sge的submit节点,compute是submit节点,所以安装好节点以后用qhost命令只能看到compute节点而看不到login节点。

可以用下面的命令查看和修改appliance的参数设置:

[root@sz ~]# rocks list appliance attr login
APPLIANCE ATTR VALUE
login: kickstartable yes
login: submit_host false
login: exec_host true

[root@cloudsz1 nodes]# rocks set appliance attr login submit_host true
[root@cloudsz1 nodes]# rocks list appliance attr login
APPLIANCE ATTR VALUE
login: kickstartable yes
login: submit_host true
login: exec_host true

如有需要也可以使用add appliance添加自定义的节点类型,添加好其他类型的appliance以后需要设置相应的attr值。

5. 对默认rocks安装的一些调整和修改

1) 关闭计算节点重装

因为开始我们在一部分计算节点上部署了web应用,出现过几次web节点跑死机以后系统被重装的情况,所有web的内容全部丢掉了。。。后来发现rocks在默认的情况下计算节点(包括登陆节点)异常重启(比如cpu或者内存耗光以后死机重启)之后会重新安装OS,关闭rocks-grub服务可以禁止计算节点重装。

建议对于类似的应用可以创建用于web的appliances,单纯用于计算的计算节点还是不要关闭rocks-grub,这样计算节点异常重启后重新安装可以保证计算节点保持最新的状态,不会出现莫名其妙的问题。

修改方法:

在/export/rocks/install/site-profiles/5.4/nodes中copy一份skeleton.xml为extend-compute.xml,然后修改新的文件:

chkconfig –level 2345 rocks-grub off 

修改完这个配置文件以后需要重建rocks roll,使用如下的命令:

[root@cloudsz1 nodes]# cd /export/rocks/install

[root@cloudsz1 install]# rocks create distro

然后可以重新安装计算节点:

[root@cloudsz1 install]# rocks list host profile compute-0-0 //这个命令可以查看节点所有的配置信息,如果能够正确打印出来说明计算节点配置没有问题,如果这个命令报错则需要先解决问题,否则在安装这个计算节点的时候节点会卡死。。

[root@cloudsz1 install]# ssh compute-0-0

[root@compute-0-0 ~]# /boot/kickstart/cluster-kickstart-pxe //重启

rocks-grub服务主要修改了/etc/grub.conf文件,关闭rocks-grub以后节点的/etc/grub.conf文件为:

[root@compute-0-7 ~]# cat /etc/grub.conf
#boot=/dev/sda
default=0
timeout=5
hiddenmenu
title Rocks (2.6.18-194.17.4.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.17.4.el5 ro root=LABEL=/
initrd /boot/initrd-2.6.18-194.17.4.el5.img

重新打开这个服务以后/etc/grub.conf变为:

[root@compute-0-7 ~]# cat /etc/grub.conf
#boot=/dev/sda
default=0
timeout=5
hiddenmenu
title Rocks Reinstall
root (hd0,0)
kernel /boot/kickstart/default/vmlinuz-5.4-x86_64 ro root=LABEL=/ ramdisk_size=150000 kssendmac ks selinux=0
initrd /boot/kickstart/default/initrd.img-5.4-x86_64
title Rocks (2.6.18-194.17.4.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.17.4.el5 ro root=LABEL=/
initrd /boot/initrd-2.6.18-194.17.4.el5.img

节点的installaction状态有os和install两种,可以设置不同的值,我还不是很清楚这两个参数有什么区别,只是发现insetallaction的值改为os的话在计算节点上执行/boot/kickstart/cluster-kickstart-pxe这个命令执行以后pxe安装将会报错。

[root@front pxelinux.cfg]# rocks set host installaction compute-0-0 action=install

[root@front pxelinux.cfg]# rocks list host
HOST MEMBERSHIP CPUS RACK RANK RUNACTION INSTALLACTION
front: Frontend 2 0 0 os install
compute-0-0: Compute 2 0 0 os install
compute-0-1: Compute 2 0 1 os install

[root@front pxelinux.cfg]# rocks set host installaction compute-0-0 action=os

[root@front pxelinux.cfg]# rocks list host
HOST MEMBERSHIP CPUS RACK RANK RUNACTION INSTALLACTION
front: Frontend 2 0 0 os install
compute-0-0: Compute 2 0 0 os os
compute-0-1: Compute 2 0 1 os install

2) 安装软件或其他的配置

所有需要在计算节点上安装或者执行的软件和命令都可以写在/export/rocks/install/site-profiles/5.4/nodes中xxx.xml中,login和compute是rocks内置的appliance,配置文件的命令为extend-compute.xml和extend-login.xml,其他新增加的appliacne的配置文件名为appliance_name.xml:

需要安装的软件可以在下面的部分配置,所有需要安装的软件都需要打包成rpm,放在/export/rocks/install/contrib/5.4/x86_64/RPMS目录下,软件包只写名字和版本号,其余部分不需要写。

perl-devel
libxml2.i386
libxml2.x86_64

其他需要执行的命令可以写在:

//需要执行的命令
ln -s /usr/java/latest/bin/java /usr/local/bin/java

//可以在配置文件中追加其他的内容

PATH=/opt/tianjing/bin:$PATH
export PATH

配置文件修改完成以后需要重建roll,参考前面提到的方法。

6. DNS管理:

rocks在头节点开启了dns服务,使用bind,

[root@compute-0-0 ~]# cat /etc/resolv.conf

计算节点默认设置头节点为dns服务器。

search local front.local
nameserver 10.200.6.70
 

有时dns服务在计算节点上可能出现问题,导致sge等程序无法解析主机名,所以我们一般会把头节点的/etc/hosts文件同步到所有计算节点,这样即使dns服务不正常也可以保证域名解析的正确。

7. 存储管理:

rocks使用nfs共享存储,并通过autofs进行管理,包括用户的home目录(为了保证在各个节点上用户的配置信息是一致的,用户的home在所有节点上共享)和其他共享存储,rocks自带的autofs包版本不够高,有些bug,最好升级到最新的版本。

8. 文件同步:

可以使用411put命令同步需要在所有节点上同步的文件,用法为:

411put /etc/passwd /etc/hosts

9. 内置的其他软件

rocks内置了sge作业调度系统以及tentakel管理软件。