分享

Globus安装手册(1)

 funson 2010-11-26

(2007-08-03 21:59:37) 整个安装过程比较烦琐,出现了不少错误,而且globus的安装手册也有很多问题。很多错误是由于用户对文件的权限引起的,碰到no such file or directory错误时,一般以root用户执行:chown globus:globus 文件目录,chown –R globus 文件目录(其中globus是用户名),通常都能解决问题。

参考资料:http://www./toolkit/docs/4.0/admin/docbook/index.html

                  Chapter 1. 4.0.x quickstart.doc

第一台机器的安装(机器名称:sonkyIP10.10.33.19

一、 安装操作系统

Globus支持redhat enterprise 3&4,fedora 3&4,suse,debian,MACOS,windows等。为方便与cluster连接,选择redhat enterprise linux AS4。安装系统的时候需要选择安装postgresql(也可以以后手工安装,不过让系统自己安装省点事)。

二、 准备工作

1.         设置用户

安装Globus需要设置几个用户:root, globus, stugrid

其中,globus作为globus的安装用户;stugrid作为container的用户和测试用户

2.         Globus Toolkit 4.0.5:http://www./toolkit/downloads/4.0.5/,下载gt4.0.5-all-sourcer-installer.tar.gz(建议下载x86 RHAS4 Binary Installer,编译会比较简单)

3.         J2SE SDK 1.6:http://java.sun..com ,下载jdk-6u2-linux-i586-rpm.bin

4.         Apache Ant 1.7:http://www./dist/ant/binaries/ ,下载apache-ant-1.7.0-bin.tar.gz

三、 安装

1.         安装JDK

首先修改文件的属性

[root@sonky]# chmod +x jdk-6u2-linux-i586-rpm.bin

[root@sonky]# cp jdk-6u2-linux-i586-rpm.bin /usr/local

[root@sonky]# cd /usr/local

[root@sonky]# ./jdk-6u2-linux-i586-rpm.bin

会出现协议书类的一直回车直到显示

Do you agree to the above license terms? [yes or no]

输入y,会自动安装在/usr/java/jdk1.6.0_02目录下

2.         安装ant

[root@sonky]# cp apache-ant-1.7.0-bin.tar.gz  /usr/local

[root@sonky]# cd /usr/local

[root@sonky]# tar zxpvf apache-ant-1.7.0-bin.tar.gz

[root@sonky]# ln -s apache-ant-1.7.0 ant

3.         统一设置环境变量

[root@sonky]# vi /etc/profile

在最后添加下面的内容:

export ANT_HOME=/usr/local/apache-ant-1.7.0

export JAVA_HOME=/usr/java/jdk.1.6.0_02

export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH

输入:wq保存退出

4.         安装globus-4.0.5

[root@sonky]# mkdir /usr/local/globus-4.0.5

更改改目录主属性

[root@sonky]# chown globus:globus usr/local/globus-4.0.5

拷贝gt4.0.5-all-source-installer.tar.gz到globus-4.0.5目录中

[root@sonky]# tar xzvf gt4.0.5-all-source-installer.tar.gz

切换到globus用户

[root@sonky]# su – globus

设置环境变量

[globus@sonky]$ export GLOBUS_LOCATION=/usr/local/globus-4.0.5

[globus@sonky]$ cd gt4.0.5-all-source-installer

编译预设值,将globus安装到/usr/local/globus-4.0.5中

[globus@sonky]$ ./configure --prefix=$GLOBUS_LOCATION

注:configure 过程中出过些问题

./configure: conf2139.file: No such file or directory

看了一下configure,应该是生成文件出错,由于过程中,解压的文件,cp的文件,安装的文件的权限都有些不同,为了省事,干脆将所用目录下的文件都赋予文件主权限

chown -R globus 文件目录,这样之后,好多因为权限出现的问题基本不见了

执行编译命令

[globus@sonky]$ make

注:如果这一步出现问题,注意看一下是否是相关文件的权限问题,可以考虑 chmod u+x操作,make出问题后,如果再次执行时出现

 /usr/local/globus-4.0.0/sbin/gpt-build  -srcdir=source-trees-thr/core/source      gcc32dbgpthr

 make: /usr/local/globus-4.0.0/sbin/gpt-build: Command not found

 make: *** [globus_core-thr] Error 127

那么make clean 一下,再执行make

进行安装

[globus@sonky]$ make install

5.         安装simpleCa

[globus@sonky]$ source $GLOBUS_LOCATION/etc/globus-user-env.sh

[globus@sonky]$ $GLOBUS_LOCATION/setup/globus/setup-simple-ca

安装过程会出现:

        Do you want to keep this as the CA subject (y/n) [y]:输入y

        Enter the email of the CA (this is the email where certificate requests will be sent to be signed by the CA): sonky@u

        [default: 5 years (1825 days)]:回车

        Enter PEM pass phrase:输入想设定的密码

Verifying - Enter PEM pass phrase: 再次输入想设定的密码

系统已经在 .globus 目录保存了已经创建好的simpleCA。现在我需要让我的机器对新的CA进去确认操作。以下操作将以root用户身份进行

[root@sonky]# export GLOBUS_LOCATION=/usr/local/globus-4.0.5

[root@sonky]# $GLOBUS_LOCATION/setup/globus_simple_ca_91177e045_setup/setup-gsi –default

生成的文件都是Globus Toolkit建立simpleCA信任的配置文件。

现在我们已经创建一个CA并完成了认证,我们下面将获得到这台机器的hostcert:

[root@sonky]# source $GLOBUS_LOCATION/etc/globus-user-env.sh

[root@sonky]# grid-cert-request -host u

注:u为主机名

下面需要用globus用户自己的simpleCA来进行签证:

[globus@sonky]$ grid-ca-sign  -in  /etc/grid-security/hostcert_request.pem  -out  hostsigned.pem

复制这个认证过的证书hostsigned.pem到/etc目录下:

[root@sonky]# cp hostsigned.pem /etc/grid-security/hostcert.pem

hostcert和hostkey为root用户所有,它们将被GridFTP服务器使用。因为Web服务容器(webservices container)被非root用户运行,所以我们需要一个为globus用户拥有的证书。即需要一个root用户拥有的host certificate/key和一个globus用户拥有的host certificate/key。以上可以通过简单的文件拷贝实现以上需求:

[root@sonky grid-security]# cp hostcert.pem containercert.pem

[root@sonky grid-security]# cp hostkey.pem containerkey.pem

[root@sonky grid-security]# chown globus:globus container*.pem

查看一下结果:

[root@sonky grid-security]# ls -l *.pem

-rw-r--r-- 1 globus globus 2647 Aug 8 11:02 containercert.pem

-r-------- 1 globus globus 887 Aug 8 11:03 containerkey.pem

-rw-r--r-- 1 root  root  2647 Aug 8 11:01 hostcert.pem

-rw-r--r-- 1 root  root  1369 Aug 8 10:53 hostcert_request.pem

-r-------- 1 root  root   887 Aug 8 10:53 hostkey.pem

接着为stugrid用户创建usercert:

[stugrid@sonky]$ export GLOBUS_LOCATION=/usr/local/globus-4.0.5

[stugrid@sonky]$ source $GLOBUS_LOCATION/etc/globus-user-env.sh

[stugrid@sonky]$ grid-cert-request

现在需要向globus用户提出证书请求,以求能够被认证,然后将认证过的证书发送给stugrid(本机只要拷贝操作)

[globus@sonky]$ grid-ca-sign -in /home/stugrid/.globus/usercert_request.pem –out signed.pem

[root@sonky]# chown stugrid:stugrid signed.pem

[stugrid@sonky]$ cp signed.pem /home/stugrid/.globus/usercert.pem

[stugrid@sonky]$ ls -l ~/.globus/

-rw-r--r-- 1 stugrid stugrid 2656 Aug 8 11:20 usercert.pem

-rw-r--r-- 1 stugrid stugrid 1380 Aug 7 17:22 usercert_request.pem

-rw------- 1 stugrid stugrid 963 Aug 7 17:22 userkey.pem

最后再以root用户创建一个grid-mapfile,方便以后授权服务:

[root@sonky]#  vim /etc/grid-security/grid-mapfile

内容为:

"/O=Grid/OU=GlobusTest/OU=simpleCA-u/OU=stu/CN=stugrid"stugrid

6.         搭建GridFTP

创建文件

[root@sonky]# vim /etc/xinetd.d/gridftp

内容为:

service gsiftp

{

instances              = 100

socket_type            = stream

wait                   = no

user                   = root

env                    += GLOBUS_LOCATION=/usr/local/globus-4.0.5

env                    += LD_LIBRARY_PATH=/usr/local/globus-4.0.5/lib 

server                 = /usr/local/globus-4.0.5/sbin/globus-gridftp-server

server_args            = -i

log_on_success         += DURATION

nice                   = 10

disable                = no

}

修改文件:

[root@sonky]# vim /etc/services

vboxd          20012/udp

binkp          24554/tcp                      # binkp fidonet protocol

asp            27374/tcp                      # Address Search Protocol

asp            27374/udp

dircproxy      57000/tcp                      # Detachable IRC Proxy

tfido          60177/tcp                      # fidonet EMSI over telnet

fido           60179/tcp                      # fidonet EMSI over TCP

# Local services

gsiftp         2811/tcp

[root@sonky]# /etc/init.d/xinetd reload

[root@sonky]# netstat -an | grep 2811

tcp       0     0 0.0.0.0:2811           0.0.0.0:*              LISTEN

现在gridftp服务器已经在等待请求了,于是我们启动一个客户端并且发送一个文件:

[stugrid@sonky]$ grid-proxy-init -verify –debug

[stugrid@sonky]$ globus-url-copy gsiftp://u/etc/group file:///tmp/stugrid.test.copy

[stugrid@sonky]$ diff /tmp/jeffery.test.copy /etc/group

如果没有内容表示传输正确

7.         启动Webservices Container

建立container启动文件,方便以后调试操作

[globus@sonky]$ vim $GLOBUS_LOCATION/start-stop

内容:

#! /bin/sh

set -e

export GLOBUS_LOCATION=/usr/local/globus-4.0.5

export JAVA_HOME=/usr/java/jdk1.6.0_02/

export ANT_HOME=/usr/local/apache-ant-1.7.0

export GLOBUS_OPTIONS="-Xms256M -Xmx512M"

. $GLOBUS_LOCATION/etc/globus-user-env.sh

cd $GLOBUS_LOCATION

case "$1" in

   start)

       $GLOBUS_LOCATION/sbin/globus-start-container-detached -p 8443

       ;;

   stop)

       $GLOBUS_LOCATION/sbin/globus-stop-container-detached

       ;;

   *)

       echo "Usage: globus {start|stop}" >&2

       exit 1

      ;;

esac

exit 0

[globus@sonky]$ chmod +x $GLOBUS_LOCATION/start-stop

现在以root用户创建一个/etc/init.d脚本去调用globus用户的start-stop脚本:

[root@sonky]# vim /etc/init.d/globus-4.0.5

内容:

#! /bin/sh -e

case "$1" in

 start)

   su - globus /usr/local/globus-4.0.5/start-stop start

   ;;

 stop)

   su - globus /usr/local/globus-4.0.5/start-stop stop

   ;;

 restart)

   $0 stop

   sleep 1

   $0 start

   ;;

 *)

   printf "Usage: $0 {start|stop|restart}\n" >&2

   exit 1

   ;;

esac

exit 0

[root@sonky]# chmod +x /etc/init.d/globus-4.0.5

[root@sonky]# /etc/init.d/globus-4.0.5 start

注:如果提示有ip错误,编辑$GLOBUS_LOCATION/etc/globus_wsrf_core/server-config.wsdd和client-server-config.wsdd,添加一行<parameter name="logicalHost" value="10.10.22.19" /> 到<globalConfiguration>部分。

下面可以通过一个简单的clients/services来与容器进行交互操作

[stugrid@sonky]$ counter-client –s https://u:8443/wsrf/services/CounterService

Got notification with value: 3

Counter has value: 3

Got notification with value: 13

表示与容器通讯成功

8.         配置RFT

修改postgresql的设置,使它可以接受tcp/ip连接。(忽略globus原手册上的操作,上面的操作有错误)

[root@sonky]# vim /etc/init.d/postgresql

将第181行的

$SU -l postgres -c "$PGENGINE/postmaster -p ${PGPORT} -D '${PGDATA}' ${PGOPTS} &" >> $PGLOG 2>&1

改为:

$SU -l postgres -c "$PGENGINE/postmaster -i -p ${PGPORT} -D '${PGDATA}' ${PGOPTS} &" >> $PGLOG 2>&1

[root@sonky]# vim /var/lib/pgsql/data/postgresql.conf

删除第30行“#tcpip_socket = true”中的#

[root@sonky]# vim /var/lib/pgsql/data/pg_hba.conf

在最后加上:

host rftDatabase "globus" "10.10.33.19" 255.255.255.255 md5

[root@sonky]# /etc/init.d/postgresql restart

[root@sonky]# su postgres -c "createuser -P globus"

[globus@sonky]$ createdb rftDatabase

[globus@sonky]$ psql -d rftDatabase -f $GLOBUS_LOCATION/share/globus_wsrf_rft/rft_schema.sql

[globus@sonky]$ vim $GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml

将</parameter>中的<value>*改为数据库用户globus的密码

           <parameter>

              <name>

              password

              </name>

              <value>

               *****

               </value>

                  [root@sonky]# /etc/init.d/globus-4.0.5 restart

测试RFT是否正常工作:

[stugrid@sonky]$ cp /usr/local/globus-4.0.5/share/globus_wsrf_rft_test/transfer.xfr /tmp/rft.xfr

[stugrid@sonky]$ rft -h u -f /tmp/rft.xfr

如果最后出现“All Transfers are completed”表示传输成功,否则需要检查错误。在这个过程可能会出现连接不上容器的问题,可能需要重新设置pg_hba.conf,或者根据出错信息查看前面的步骤是否正确。

9.         GRAM

首先修改/etc/bin/sudo

[root@sonky]# visudo

在最后加上:

globus ALL=(stugrid) NOPASSWD: /usr/local/globus-4.0.5/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /usr/local/globus-4.0.5/libexec/globus-job-manager-script.pl *

globus ALL=(stugrid) NOPASSWD: /usr/local/globus-4.0.5/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /usr/local/globus-4.0.5/libexec/globus-gram-local-proxy-tool *

提交一个任务,测试GRAM

[stugrid@sonky]$ globusrun-ws -submit -c /bin/true

可能出错:

[stugrid@sonky globus-4.0.5]$ globusrun-ws -submit -c /bin/true

Submitting job...Done.

Job ID: uuid:3c0e1126-456f-11dc-ac80-00123f672ef7

Termination time: 08/09/2007 05:21 GMT

Current job state: Failed

Destroying job...Done.

globusrun-ws: Job failed: Error code: 201

Script stderr:

Sorry, /usr/bin/sudo must be setuid root.

解决方法:更改sudo的属性,[root@sonky]# chmod 4111 /usr/bin/sudo

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多