在 Ubuntu 11.10 上安装 Sun Grid Engine

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.vpsee.com	grid00
192.168.2.11	grid01.vpsee.com	grid01
192.168.2.12	grid02.vpsee.com	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.vpsee.com" > /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.vpsee.com        -               -     -       -       -       -       -
grid01.vpsee.com        lx26-amd64     24 24.00   63.0G    1.7G    3.7G     0.0
grid02.vpsee.com        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

评论 (14 Comments)

  1. 我以一直有个问题想问,没找到留言板。所以就选这个文章了。我单位也有五台HP的服务器。我也想像你一样把他们虚拟成更多的机器。因为现在有好多应用都放在一台机器上。我想它们互相不干扰,我看你应用的技术使用XEN ESXI等多种方式,我想问 1.这种虚拟化会损耗性能吧。多吗?我看你们实验室好像是为了计算 那为什么不虚拟化直接使用服务器呢?2.XEN和ESXI那种虚拟化比较好,我看网上说集群用ESXI,单机用XEN。集群的意思是可以把我这5台服务器都集群在一起,之后再虚拟化更多台服务器吗?这种集群可行吗?需要用到什么技术呢?3.基于集群理解正确的话,那作为前辈,你推荐哪种方式呢?单服务器使用XEN虚拟多台服务器后分配使用, 还是ESXI集群后虚拟多台服务器后再分配使用。

  2. ….被无视了。。。55555555

  3. @ccms
    1、虚拟化性能损耗小于5%;2、想多台服务器搭建统一的虚拟环境需要 VMware vSphere,可以管理多台 VMware ESXi. 3、vSphere 挺贵,如果不差钱的话这种方式最容易。

  4. @vpsee 感谢前辈回复。vSphere 挺贵,那估计领导不会批钱的。那单机做虚拟化还是用Xen比Esxi好吗?基础平台用Centos比较好?作为新人,我还是对虚拟化的价值不太理解。除了能把应用分离开,性能上也会有5%的损耗。它的更大的价值是什么呢?感谢再次回复~~

  5. 看到v2ex上面的广告了..话说42qu的vps怎么超级便宜..?

  6. @ccms
    虚拟机价值不在性能,价值在于 1 台电脑能当作 n 台电脑给 n 个人用,这样不会浪费电脑资源,不是每个人每分每秒都需要100%使用 CPU 的。

  7. @deef
    自己的机柜和服务器,价格优势明显。

  8. @vpsee 感谢耐心回复~~~我准备在服务器上用Centos安装Xen~~~尝试下。

  9. 你不是原先用的Mac机吗?现在开始用Ubuntu了?

  10. 在主控结点上执行以下操作把所有的执行结点加到集群里:

    $ sudo -i

    # qconf -ah grid01
    # qconf -ah grid02

    想請問你這個部分可以說清楚一點嗎

  11. @kay
    把主机名为 grid01 的机器加入到集群,可以看看 qconf 帮助。

  12. when I qsub a job, it give a tip like this:

    [email protected]:~$ qsub -cwd -l vf=10M,p=0 uname.sge
    Unable to run job: warning: sge01 your job is not allowed to run in any queue
    Your job 9 (“uname.sge”) has been submitted.
    Exiting.

  13. Job can submit, can’t run!!

  14. 前辈,能否请教一下jsv和qsub的问题?

发表评论