Sun Grid Engine(现在叫做 Oracle Gird Engine)是一套开源的分布式资源管理软件,用来统一管理和利用所有(愿意被管理的)电脑上的资源,使得这些电脑(集群)使用起来就像一台电脑一样,好处是可以随意扩展总的计算资源(买更多的电脑加入集群),并且管理上就像使用一台电脑一样方便。使用者只需要把需要计算的工作准备好,提交到 Sun Grid Engine (SGE),SGE 就会根据已经订好的管理策略以及使用者的需求在集群里找到合适的电脑来完成计算工作。SGE 主要用在高性能计算、网格计算等领域。
大家云计算项目里面有个想法就是能在大家的云计算平台上快速创建多个高配置虚拟机并自动接入到 SGE 集群,能迅速满足整个实验室高峰时期的计算需求。当前大家的 SGE 集群包含 2 台 IBM公司 超级计算机,n 台 PC 服务器和多个刀片服务器,以后为了临时满足高峰时期的计算要求会从云里申请多个虚拟机并自动配置到 SGE 集群里。
安装 Sun Grid Engine 需要 Java 的支持(最好是 SUN 的 Java 版本),所以所有结点都需要安装 Java 包。Ubuntu 从 11.10 版本不在提供 SUN 的官方 Java 版本,需要另外的源:
$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:ferramroberto/java
$ sudo apt-get update
$ sudo apt-get install sun-java6-jre
首先在所有结点上修改 /etc/hosts,grid00 是主控结点,grid01 和 grid02 是执行结点(大家一般把主控结点叫做 master 或者 head,执行结点叫做 client):
$sudo vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.2.10 grid00.linux grid00
192.168.2.11 grid01.linux grid01
192.168.2.12 grid02.linux grid02
在主控结点(grid00)上安装 gridengine-master 以及一些管理工具 qhost/qconf/qstat 等(包含在 gridengine-client 中):
$ sudo apt-get install gridengine-client gridengine-common gridengine-master
一旦不习惯命令行界面,可以在主控结点上装个 qmon 图形管理工具。
$ sudo apt-get install xserver-xorg gridengine-qmon
sun grid engine qmon guy
在所有执行结点(grid01 和 grid02)上安装 gridengine-exec:
$ sudo apt-get install gridengine-exec
在主控结点上执行以下操作把所有的执行结点加到集群里:
$ sudo -i
# qconf -ah grid01
# qconf -ah grid02
在所有执行结点执行以下操作,通过 act_qmaster 这个文件识别主控结点,然后启动服务:
$ sudo echo "grid00.linux" > /var/lib/gridengine/default/common/act_qmaster
$ sudo /etc/init.d/gridengine-exec start
最后在主控结点上查看一下是否成功:
# qhost
HOSTNAME ARCH NCPU LOAD MEMTOT MEMUSE SWAPTO SWAPUS
global - - - - - - -
grid00.linux - - - - - - -
grid01.linux lx26-amd64 24 24.00 63.0G 1.7G 3.7G 0.0
grid02.linux lx26-amd64 8 0.01 55.2G 642.2M 1.0G 0.0
测试
如何知道这个集群是否能正常工作呢?提交一个任务(job)测试一下。在主控结点上写一个简单脚本打印当前 Linux 内核版本:
# vi uname.sge
#!/bin/bash
uname -a
然后用 qsub 提交这个脚本到 SGE 集群:
# vi uname.sge
#!/bin/bash
uname -a
# qsub uname.sge
qsub uname.sge
Your job 3557 ("uname.sge") has been submitted
一旦运行成功就会在某个执行结点的自己目录接下来(我这里用的是 root 帐号,所以是 /root 目录)得到2个文件,执行结果就在 uname.sge.o3557 这个文件里:
# ls
uname.sge.e3557 uname.sge.o3557
# cat uname.sge.o3557
Linux grid02 3.0.0-16-server #29-Ubuntu SMP Tue Feb 14 13:08:12 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。