用Ubuntu 10.10 建立计算集群
这个工作是去年10月,在自已研究所里做的。用的刚出来的Ubuntu 10.10服务器版本,搭建了一个5个计算节点,120 CPU核的计算集群。当时有个比较“懒”的解决方案,就是装Rocks系统。不过发现这个系统,用yum做软件包更新,库不是那么新。而我们的程序用到比较新的Qt库,所以转而用Ubuntu的 apt-get。毕竟自己的台式机,笔记本都是这个系统,管理起来应该也比较容易。
写写也就这么多的要点,但当时没有任何服务器经验,从头做起,折腾了三天时间。现在俨然成了研究组的系统管理员,不过这个活不好干,花时间不说,很多时候吃力不讨好。
说来建立一个计算集群,需要解决的几个主要问题如下:
- 网络,以及节点之间的通讯
- 存储空间的共享(云存储)
- 并行计算的任务管理
系统选择,Ubuntu 10.10 Server UEC,这个版本的绰号是Maverick Meerkat,就是下图那个动物。开始想直接实现云计算(Cloud computing)的。但是后来咨询了该领域的专家,身在美帝的王主任,在高性能计算领域,云计算还不是太有效率。于是还是回到传统的计算集群方案了。
集群结构,5个对称的节点,选择一个做服务节点,其它四个做计算节点。在服务节点和计算节点之间,有一个交换机。
节点:Dell(TM) PowerEdge(TM) R905
交换机:Dell(TM) PowerConnect(TM) 6224 Network Switch
由于大部分解决方案都可以Googel到,这里不再提具体的细节。只是记录几个关键点,希望以后再做类似的事情时,可以有所参考:
- 在节点上安装服务器版Ubuntu。
- 关于内网配置,分配ip以后,需要在front node设置NAT转发。如果front node网卡1是外网,内网网址为192.168.1.x,则可以在 /etc/rc.local 文件里添加一行:
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE - 存储问题,使用GlusterFS。Ubuntu里可以直接在源里安装。这个设置起来比较繁琐,但是使用效果很好。可以在节点之间共享硬盘。这里有个英文的安装参考。
- 最后是任务管理,使用GridEngine,Ubuntu源里就有。安装配置前,需要修改节点上的/etc/hosts文件。在主机点上安装gridengine-master gridengine-exec gridengine-client gridengine-qmon gridengine-common,在计算节点上安装gridengine-client gridengine-common gridengine-exec。用qmon图形界面就可以设置和管理。
- 最后,在主节点上配置管理员脚本,以便于以后的安装更新软件和管理系统。
==========================