这份文档是反复安装多次
globus
,对整个操作步骤有一个清晰的印象和简单的理解后,在某一次保存的
snapshot
基础上开始边安装边记录的安装文档,但并不依赖这个
snapshot
的细节。
包括以下内容:
配置前准备;
证书配置;
配置
gridftp
服务器;
配置
webservice container
;
设置
RFT
;
设置
WS GRAM
。
一,配置前准备
当前我系统状态是
redhat 10,
内核
2.4.22
,已经安装
JDK1.5.0, ANT1.6.5
,
globus-4.0.8
(解压前的安装包是
gt4.0.8-all-source-installer.tar.gz
),
libiodbc3.52.6-1
。
postgresql
数据库暂时没有安装。主机名是
localhost.localdomain(hostname
和
hostname –f
返回的都是这个
)
。在
/etc/profile
中设置了
JAVA_HOME
和
ANT_HOME
两个环境变量,没有也不需要设置
CLASSPATH
,在
ANT
中明确说过设置
CLASSPATH
如果操作不当可能会出问题。可执行文件
java
位于
$JAVA_HOME/bin
目录下,可执行文件
ant
位于
$ANT_HOME/bin
下。软件包的安装都非常简单。对于
JAVA
和
ANT
,解压然后设置环境变量就可以。对于
libiodbc
,从官方网站下载最新的
rpm
包直接安装,对于
gt4
,安装使用下述命令:
[globus@localhost gt4.0.8-all-source-installer]$ ./configure --prefix=/usr/local/globus-4.0.8/ --with-iodbc=/usr
[globus@localhost gt4.0.8-all-source-installer]$ make
[globus@localhost gt4.0.8-all-source-installer]$ make install
一切成功完成之后,进入下一步。当然,别忘了设置
GLOBUS_LOCATION
环境变量,我觉得最好也设在
/etc/profile
中,省去为每个用户单独设置的麻烦。
二,证书配置
证书配置的整个过程很简单:创建一个
CA(Certificate Authority)
à
安装
gsi(grid security infrastructure
,网格安全基础设施
)
。这两步以后,就建立了一个完整的证书认证体系。如果一个实体想申请证书,只需要使用
grid-cert-request
命令创建自己的一个密钥和证书申请文件,然后把证书申请文件送交
CA
签名,签名之后的文件就成了申请者的证书。
以上是纯工具性的,至于
globus
如何使用和为什么要这样使用证书这个工具,现在自己也是新手,需要熟练以后慢慢再去体会。以下是为了能让
globus
正确运行的配置:
创建
CA
:
先用
root
用户设置主机名:
[root@localhost root]# hostname test.gridlab.jlu.edu
网上很多安装过的朋友都说使用
hostname
设置了主机名以后重启又会丢失,不过我确从来没有遇到过这样的情况。我这里使用
hostname
设置完主机名后,发现
/etc/hosts
文件和
/etc/sysconfig/network
文件都没有改变,但无论重启与否,
hostname
返回的都是设置的主机名而不是
localhost.localdomain
,有可能是因为我使用的是虚拟机所以这样。不过我安装了几次后觉得主机名不是个大问题,我这里说的步骤都是在我这里可行的。到这里设置之后,可能就不能启动
http
服务器了,需要手动在
/etc/hosts
文件中添加
IP
和新的主机名的映射才能启动
httpd
。
[globus@localhost globus]$ hostname
test.gridlab.jlu.edu
[globus@localhost globus]$ /usr/local/globus-4.0.8/setup/globus/setup-simple-ca
输出太长了,就不贴出来了。按照提示一路走下去就可以。
Complete
之后,
[globus@localhost globus]$ /usr/local/globus-4.0.8/setup/globus_simple_ca_a3e0f25e_setup/setup-gsi -default
setup-gsi: Configuring GSI security
Making /etc/grid-security...
mkdir /etc/grid-security
mkdir /etc/grid-security: Permission denied at /usr/local/globus-4.0.8/setup/globus_simple_ca_a3e0f25e_setup/setup-gsi.pl line 100
出错了,原来权限不够,这条命令应该在
root
下执行。
[root@localhost root]# /usr/local/globus-4.0.8/setup/globus_simple_ca_a3e0f25e_setup/setup-gsi -default
这一次就好了。
然后就是申请证书,主机的证书
/
密钥,用户的证书
/
密钥。
[root@localhost root]# source /usr/local/globus-4.0.8/etc/globus-user-env.sh
[root@localhost root]# grid-cert-request -host `hostname`
接下来就是让
CA
为主机的证书申请文件签名。
[globus@localhost globus]$ source /usr/local/globus-4.0.8/etc/globus-user-env.sh
最好把上面这条命令也加到
/etc/profile
里面去:
[root@localhost root]# cat >> /etc/profile
. /usr/local/globus-4.0.8/etc/globus-user-env.sh
CTRL C
保存退出。
让
CA
为主机的申请文件签名:
[globus@localhost globus]$ grid-ca-sign -in /etc/grid-security/hostcert_request.pem -out sign.pem
[root@localhost root]# mv /home/globus/sign.pem /etc/grid-security/hostcert.pem
mv: overwrite `/etc/grid-security/hostcert.pem'? y
[root@localhost root]# cd /etc/grid-security/
[root@localhost grid-security]# ll *.pem
-rw-rw-r-- 1 globus globus 2724 Jul 12 22:56 hostcert.pem
-rw-r--r-- 1 root root 1420 Jul 12 22:50 hostcert_request.pem
-r-------- 1 root root 887 Jul 12 22:50 hostkey.pem
注意,看到上面的
hostcert.pem
,它的属主是
globus
而不是
root
,而且权限位是
664,
应该改过来,否则在后面配置
gridftp
时会出错,尽管那时有错误提示信息。
[root@localhost grid-security]# chown root:root hostcert.pem
[root@localhost grid-security]# chmod 644 hostcert.pem
证书文件中包含了用户的公钥信息,其他用户都要能读但不能写,密钥是用户的私钥,必须秘密保存。
globus
作为运行
webservice container
的用户,也应该有主机的证书
/
密钥:
[root@localhost grid-security]# chown root:root hostcert.pem
[root@localhost grid-security]# chmod 644 hostcert.pem
[root@localhost grid-security]# cp hostcert.pem containercert.pem
[root@localhost grid-security]# cp hostkey.pem containerkey.pem
[root@localhost grid-security]# chown globus:globus container*.pem
[root@localhost grid-security]# ll *.pem
-rw-r--r-- 1 globus globus 2724 Jul 12 23:04 containercert.pem
-r-------- 1 globus globus 887 Jul 12 23:04 containerkey.pem
-rw-r--r-- 1 root root 2724 Jul 12 22:56 hostcert.pem
-rw-r--r-- 1 root root 1420 Jul 12 22:50 hostcert_request.pem
-r-------- 1 root root 887 Jul 12 22:50 hostkey.pem
接下来创建用户证书:
[root@localhost grid-security]# useradd guest0
[root@localhost grid-security]# usermod -s /bin/bash guest0
[root@localhost grid-security]# passwd guest0
以
guest0
登录:
[guest0@test guest0]$ grid-cert-request
根据提示填好相关信息后,会为用户生成一个密钥文件和一个证书申请文件,这些文件都放在用户的
~/.globus
下。现在让
CA
为用户的申请文件签名:
[guest0@test guest0]$ chmod -R o+r /home/guest0/
[globus@localhost globus]$ grid-ca-sign -in /home/guest0/.globus/usercert_request.pem -out sign.pem
[root@localhost root]# mv /home/globus/sign.pem /home/guest0/.globus/usercert.pem
mv: overwrite `/home/guest0/.globus/usercert.pem'? y
[root@localhost root]# chown guest0:guest0 /home/guest0/.globus/usercert.pem
[guest0@test .globus]$ chmod 644 usercert.pem
最后,为了
gridftp
认证成功,需要创建一个
grid-mapfile
:
[guest0@test guest0]$ grid-cert-info -subject
/O=Grid/OU=GlobusTest/OU=simpleCA-test.gridlab.jlu.edu/OU=gridlab.jlu.edu/CN=guest0
[root@localhost root]# cd /etc/grid-security/
[root@localhost grid-security]# cat >> grid-mapfile
"/O=Grid/OU=GlobusTest/OU=simpleCA-test.gridlab.jlu.edu/OU=gridlab.jlu.edu/CN=guest0" guest0
CTRL C
保存退出。
三,配置 gridftp 服务器
我们使用
xinetd
的方式启动
gridftp
服务,
xinetd
是一个
internet
服务守护进程
(daemon process)
。为了启动
gridftp
,我们先写它的
xinetd
配置文件:
[root@test root]# cat >> /etc/xinetd.d/gridftp
service gsiftp
{
instances = 100
socket_type = stream
wait = no
user = root
env += GLOBUS_LOCATION=/usr/local/globus-4.0.8
env += LD_LIBRARY_PATH=/usr/local/globus-4.0.8/lib
server = /usr/local/globus-4.0.8/sbin/globus-gridftp-server
server_args = -i
log_on_success += DURATION
nice = 10
disable = no
}
CTRL C
保存退出。
说到这里,附带介绍两个小技巧。一个是
windows + putty +
虚拟机的超强组合,
puttty
小巧简洁,功能强大,不像
ssh secure shell
那样笨重。另一个是在这个组合下编辑文件,我们不用启动如
emacs
这样比较大型的编辑器,使用
cat
,
sed
等这些工具创建、编辑文件也非常方便,另外还有小巧的编辑器
nano
,也非常好用。
关于
xinetd
配置文件的语法用
man xinetd.conf
可以查到,上述花括号必须单独一行,等号左右必须有空白,这不是风格的问题,而是语法要求。
service
后面的服务名必须要在
/etc/service
中登记过,但不必要和这个配置文件名一样。
现在看
/etc/service
中是否登记过
gsiftp
服务:
[root@test root]# grep "ftp" /etc/services
ftp-data 20/tcp
ftp-data 20/udp
# 21 is registered to ftp, but also used by fsp
ftp 21/tcp
ftp 21/udp fsp fspd
tftp 69/tcp
tftp 69/udp
sftp 115/tcp
sftp 115/udp
tftp-mcast 1758/tcp
tftp-mcast 1758/udp
mtftp 1759/udp
venus-se 2431/udp # udp sftp side effect
codasrv-se 2433/udp # udp sftp side effectQ
没有发现,必须手动加上去。
[root@test root]# cat >> /etc/services
gsiftp 2811/tcp
好了,现在我们让
xinetd
重新加载它的配置文件:
[root@test root]# /etc/init.d/xinetd reload
看看
gsiftp
是否启动:
[root@test root]# netstat -l | grep ftp
tcp 0 0 *:gsiftp *:* LISTEN
我们尝试用
gridftp
来下载一个文件:
[guest0@test guest0]$ grid-proxy-init -debug -verify
ERROR: Couldn't find valid credentials to generate a proxy.
grid_proxy_init.c:605:globus_sysconfig: Error with key filename
globus_sysconfig: Error with key filename
globus_sysconfig: File has bad permissions: Permissions on /home/guest0/.globus/userkey.pem are too permissive. Maximum allowable permissions are 600
看来文件权限方面还是出了点问题。
[guest0@test guest0]$ cd .globus/
[guest0@test .globus]$ chmod 400 userkey.pem
[guest0@test .globus]$ ll
total 12
-rw-r--r-- 1 guest0 guest0 2733 Jul 12 23:12 usercert.pem
-rw-r--r-- 1 guest0 guest0 1434 Jul 12 23:07 usercert_request.pem
-r-------- 1 guest0 guest0 951 Jul 12 23:07 userkey.pem
再来一次:
[guest0@test .globus]$ grid-proxy-init -debug -verify
User Cert File: /home/guest0/.globus/usercert.pem
User Key File: /home/guest0/.globus/userkey.pem
Trusted CA Cert Dir: /etc/grid-security/certificates
Output File: /tmp/x509up_u501
Your identity: /O=Grid/OU=GlobusTest/OU=simpleCA-test.gridlab.jlu.edu/OU=gridlab.jlu.edu/CN=guest0
Enter GRID pass phrase for this identity:
Creating proxy .....................++++++++++++
..........++++++++++++
Done
Proxy Verify OK
Your proxy is valid until: Mon Jul 13 12:05:10 2009
好的,我们来下载一个文件:
[guest0@test .globus]$ globus-url-copy gsiftp://test.gridlab.jlu.edu/etc/group file:///tmp/test
[guest0@test .globus]$ cat /tmp/test
root:x:0:root
bin:x:1:root,bin,daemon
……
成功了。
下面是前几次安装到这一步时出现的问题,上面的步骤都避免了这些问题,但还是把它们贴出来。
在使用
xinetd
方式启动
gridftp
服务后,用
netstat –an | grep 2811
查看,如果看到的结果是两行,或者在客户端测试
gridftp
下载时出现这样的错误提示:
[guest0@jcwkyl guest0]$ globus-url-copy gsiftp://127.0.0.1/etc/group file:///tmp/test
error: globus_ftp_control: gss_init_sec_context failed
GSS Major Status: Unexpected Gatekeeper or Service Name
globus_gsi_gssapi: Authorization denied: The name of the remote host (jcwkyl), and the expected name for the remote host (localhost.localdomain) do not match. This happens when the name in the host certificate does not match the information obtained from DNS and is often a DNS configuration problem.
那么问题就是
hosts
文件的问题。修改
/etc/hosts
文件,把其中的
127.0.0.1 localhost.localdomain
这一行注释掉,然后再运行
globus-url-copy
就可以了。此时使用
netstat –an | grep 2811
看到的结果也是一行,这是对的。
中间一定要理解,
globus
用户有一个密钥
/
证书对,
root
用户也有一个密钥
/
证书对,这两个用户的密钥
/
证书对实际上是一样的,都是主机的密钥
/
证书。但一定要注意权限的设置。如果在客户端使用
globus-url-copy
测试
gridftp
时出现了这样的错误提示:
…
530-Attempt 1
530-
530-globus_credential: Error reading host credential
530-globus_sysconfig: Error with certificate filename
530-globus_sysconfig: Error with certificate filename
530-globus_sysconfig: File has bad permissions: Permissions on /etc/grid-security/hostcert.pem are too permissive. Maximum allowable permissions are 644
…
这就是这个密钥
/
证书对两个文件的权限太大了,按照说明用
chmod
命令把它们的权限全部设置成
644
即可。
别忘了在第一次运行
globus-url-copy
测试
gridftp
服务器之前要先运行
grid-proxy-init
命令验证一下一切是否正确安装。尤其是在证书有改动之后,比如用户由于证书过期或者泄密重新申请证书,或者
CA
重新被设置等等,有一次我在运行
globus-url-copy
时出现错误说
grid-mapfile
有问题,然后
grid-mapfile
文件已经正确更新了,所以猜想肯定是哪个地方没有更新,最后才想到是客户端没有重新运行
grid-proxy-init
。
如果在
globus-start-container
时出现了这样的错误:
Failed to start container: Container failed to initialize [Caused by: jcwkyl.gridlab.jlu.edu: jcwkyl.gridlab.jlu.edu]
这是因为在
/etc/hosts
文件中没有
IP
和主机名
(
这里是
jcwkyl.gridlab.jlu.edu)
的对应,加上去就可以了。
接下来我们进入下一步:
四,配置并启动 webservice container
我们先把前面的步骤再回忆一下。由于安装过程比较长,所以需要不断重复,对整个安装过程从头到尾的全貌能理解,知道我们所做的工作处于哪一步,下一步应该做什么。我们首先安装了各种所需的软件包,主要包括
java
和
ant
,
gcc
有个编译
java
的插件叫做
gcj
,但是不要使用它,使用正规的
jdk
,之后安装了
libiodbc
,这是按照
quickstart
上说的,然后安装
gt4.0.8
。这一步结束之后,所有的工作都是配置了。配置的第一项工作是安全配置,这是网格的基础设施。在安全配置上,就是一个
PKI
模型,其核心就是
CA
,我们先创建一个
CA
,它负责签发证书,创建完
CA
以后,我们现在有两个用户,一个是
root
,一个是
globus
服务的使用者,在上文中是指
guest0
,
globus
用户本身不需要证书,它是个
(dumb user)
,
globus
用户的任务就是管理
globus
的。安全配置之后是
gridftp
服务的配置,我们使用
xinetd
的方式来启动服务,所以
gridftp
的配置就两步:写
xinetd
启动脚本;重启
xinetd
以加载新建的脚本。
好了,现在开始配置
webservice container
。其实也不需要配置,直接启动看看:
[globus@test globus]$ globus-start-container
2009-07-13 00:28:12,374 ERROR service.ReliableFileTransferImpl [main,<init>:76] Unable to setup database driver with pooling.Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2009-07-13 00:28:12,993 WARN service.ReliableFileTransferHome [main,initialize:97] All RFT requests will fail and all GRAM jobs that require file staging will fail.Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
Starting SOAP server at: https://127.0.0.1:8443/wsrf/services/
With the following services:
[1]: https://127.0.0.1:8443/wsrf/services/AdminService
[2]: https://127.0.0.1:8443/wsrf/services/AuthzCalloutTestService
……
[53]: https://127.0.0.1:8443/wsrf/services/mds/test/subsource/IndexServiceEntry
2009-07-13 00:28:41,469 INFO impl.DefaultIndexService [ServiceThread-73,processConfigFile:107] Reading default registration configuration from file: /usr/local/globus-4.0.8/etc/globus_wsrf_mds_index/hierarchy.xml
2009-07-13 00:28:42,683 ERROR impl.QueryAggregatorSource [Timer-6,pollGetMultiple:149] Exception Getting Multiple Resource Properties from https://127.0.0.1:8443/wsrf/services/ReliableFileTransferFactoryService: java.rmi.RemoteException: Failed to serialize resource property org.globus.transfer.reliable.service.factory.TotalNumberOfBytesTransferred@30f369; nested exception is:
上面的异常信息是说
RFT
没有正确配置,这是正常的,因为我们还没有安装
postgresql
数据库,还没有配置
RFT
服务。但是上面那些
URL
中的
IP
是
127.0.0.1
,这是错误的,应该修复它。
找到
$GLOBUS_LOCATION/etc/globus_wsrf_core/server-config.wsdd
这个文件和同目录下的
client-server-config.wsdd
文件,在
<globalConfiguration>
节下面加入:
<parameter name="logicalHost" value="192.168.0.4" />
现在重新启动
container
:
[globus@test globus]$ globus-start-container
……
Starting SOAP server at: https://192.168.0.4:8443/wsrf/services/
With the following services:
……
好了,现在看到的
IP
都是
192.168.0.4
了,这是我的电脑的
IP
。我们在客户端测试一下它,尽管还没有安装
RFT
:
[guest0@test guest0]$ counter-client -s https://test.gridlab.jlu.edu:8443/wsrf/services/CounterService
Error: ; nested exception is:
org.globus.common.ChainedIOException: Authentication failed [Caused by: Operation unauthorized (Mechanism level: Authorization failed. Expected "/CN=host/localhost.localdomain" target but received "/O=Grid/OU=GlobusTest/OU=simpleCA-test.gridlab.jlu.edu/CN=host/test.gridlab.jlu.edu")]
出错了,多谢
http://hi.baidu.com/jjbear_ustc/blog/item/c49a43dd7e3d83e876c63887.html
地址处的这篇文章。解决方法是修改
/etc/hosts
文件,修改后的文件内容如下:
# Do not remove the following line, or various programs
# that require network functionality will fail.
# 127.0.0.1 localhost.localdomain
192.168.0.4 test.gridlab.jlu.edu
192.168.0.4 localhost.localdomain
这个时候再运行
counter-client
:
[guest0@test guest0]$ counter-client -s https://test.gridlab.jlu.edu:8443/wsrf/services/CounterService
Got notification with value: 3
Counter has value: 3
Got notification with value: 13
好了,进入下一步——
五,设置 RFT 服务
我们先安装
postgresql
数据库。安装包是系统盘上带的,从系统盘的安装包安装至少有两个好处,一是它是
rpm
安装包,一条命令完整,卸载又方便,还不用配置什么,另一个好处是由于它是系统盘带的,所以版本兼容肯定没有问题。我们不需要花大力气去下载源码包进行安装。
可是这次安装之前的系统不是干净的,这前曾经源码安装过
postgresql8.0.4
,也安装过光盘中的
7.3.4,
而且两个安装都不完整。一片混乱。现在把一切都卸载掉,进入
postgresql8.0.4
的源码目录,执行
make uninstall
,然后用
rpm –e
来卸载
7.3.4
版。现在重新安装,命令行安装总是失败,于是
init 5
到图形界面,放入系统光盘自动安装
postgresql
数据库。
现在安装好了光盘中自带的
postgresql7.3.4-2
数据库,以下是设置的全过程:
设置
postgres
用户密码,这个用户在安装
postgresql
时已经创建好了。使用
SSH
登录必须有密码,所以:
[root@test root]# passwd postgres
Changing password for user postgres.
New password:
BAD PASSWORD: it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
创建一个目录:
[root@test root]# cd /usr/local
[root@test local]# mkdir pgsql
[root@test local]# chown postgres:postgres pgsql
以
postgres
身份登录系统,初始化这个数据库文件目录:
-bash-2.05b$ initdb -D /usr/local/pgsql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
……
Success. You can now start the database server using:
/usr/bin/postmaster -D /usr/local/pgsql/data
or
/usr/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
修改数据库文件目录下的
postgresql.conf
文件,本文中就是
/usr/local/pgsql/data/postgresql.conf
文件,把其中的:
#
tcpip_socket = false
一行改为:
tcpip_socket=true
这样表示允许
postmaster
接受
TCP
连接,相当于在启动
postmaster
时传递的命令行参数。另外,既然选择了重新建立数据库文件目录给
globus
使用,就彻底不要去想
/etc/init.d/postgres
那个东西了,它在这里没有任何作用。
启动
postmaster
服务:
-bash-2.05b$ postmaster -D /usr/local/pgsql/data/ >log.txt 2>&1 &
[1] 3125
查看运行状态:
[root@test local]# export PGDATA=/usr/local/pgsql/data
[root@test local]# pg_ctl status
pg_ctl: postmaster is running (pid: 3215)
Command line was:
/usr/bin/postmaster '-D' '/usr/local/pgsql/data/'
或者:
-bash-2.05b$ jobs
[1]+ Running postmaster -D /usr/local/pgsql/data/ >log.txt 2>&1 &
创建数据库用户:
-bash-2.05b$ createuser -P globus
Enter password for user "globus":
Enter it again:
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
修改
pg_hba.conf
文件并重启数据库服务:
-bash-2.05b$ cd /usr/local/pgsql/data/
-bash-2.05b$ cat >> pg_hba.conf
host rftDatabase globus 192.168.0.4 255.255.255.255 md5
-bash-2.05b$ export PGDATA=/usr/local/pgsql/data/
-bash-2.05b$ pg_ctl restart
查看启动是否成功。因为重启的时候不再是后台进程了,回车又回到
shell
,但不能确定是否同时杀死了
postmaster
。
-bash-2.05b$ pg_ctl status
发现服务正常运行。
用
globus
登录,创建
RFT
数据库:
[globus@test globus]$ createdb rftDatabase
现在数据库已经存在了,这个数据库是专门用来存储
RFT
传输状态和
checkpoint
的,但是这个数据库现在是空的,我们需要部署数据库策略
(schema)
,
gt4
提供了一个文件用来做这件事,它是
$GLOBUS_LOCATION/share/globus_wsrf_rft/rft_schema.sql
。我们可以打开这个文件看看,这个文件里面全部是
SQL
语句,用来创建一些
TABLE
和
INDEX
。运行下面的命令自动完成这项工作:
[globus@test globus]$ psql -d rftDatabase -f /usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql
psql:/usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql:6: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'requestid_pkey' for table 'requestid'
CREATE TABLE
psql:/usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql:11: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'transferid_pkey' for table 'transferid'
CREATE TABLE
psql:/usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql:30: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'request_pkey' for table 'request'
CREATE TABLE
psql:/usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql:65: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'transfer_pkey' for table 'transfer'
CREATE TABLE
psql:/usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql:71: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'restart_pkey' for table 'restart'
CREATE TABLE
CREATE TABLE
CREATE INDEX
现在修改文件
$GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml
用来设置一些连接数据库的参数。
[globus@test globus]$ emacs $GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml
找到位于
ReliableFileTransferService
下面的
dbConfiguration
,修改
connectionstring
参数,如果是本机数据库,则不需要修改就能工作。然后修改
usrename
和
password
,
username
就是
globus
,
password
就是在用
postgres
用户
createuser
时为
globus
设置的密码。
现在,重新启动
container
:
[globus@test globus]$ globus-start-container
Starting SOAP server at: https://192.168.0.4:8443/wsrf/services/
With the following services:
[1]: https://192.168.0.4:8443/wsrf/services/AdminService
[2]: https://192.168.0.4:8443/wsrf/services/AuthzCalloutTestService
[3]: https://192.168.0.4:8443/wsrf/services/CASService
[4]: https://192.168.0.4:8443/wsrf/services/ContainerRegistryEntryService
[5]: https://192.168.0.4:8443/wsrf/services/ContainerRegistryService
……
现在已经没有警告了。
现在测试一下
RFT
传输:
[guest0@test guest0]$ cp /usr/local/globus-4.0.8/share/globus_wsrf_rft_test/transfer.xfr /tmp/rft.xfr
我们可以看看这个文件是什么内容:
[guest0@test guest0]$ cat /tmp/rft.xfr
true
16000
16000
false
1
true
1
null
null
false
10
gsiftp://localhost:2811/tmp/rftTest.tmp
gsiftp://localhost:2811/tmp/rftTest_Done.tmp
看来这是一系列传输指令,就像
ftp.exe
的脚本文件一样。传输它:
[guest0@test guest0]$ rft -h test.gridlab.jlu.edu -f /tmp/rft.xfr
Number of transfers in this request: 1
Subscribed for overall status
Termination time to set: 60 minutes
Overall status of transfer:
Finished/Active/Failed/Retrying/Pending
0/0/0/1/0
Error:Authentication with credential only failed on server localhost [Caused by: Authentication failed [Caused by: Operation unauthorized (Mechanism level: Authorization failed. Expected "/CN=host/localhost" target but received "/O=Grid/OU=GlobusTest/OU=simpleCA-test.gridlab.jlu.edu/CN=host/test.gridlab.jlu.edu")]]
出了错误,把
/tmp/rft.xfr
最后两行的
localhost
替换成
test.gridlab.jlu.edu:
又出错了,这次倒不是认证失败,而是说主机上没有
/tmp/rftTest.tmp
这个文件,本来就没有,这次再改一下,像
quickstart
上说的,把
tmp/rftTest.tmp
改为
/etc/group
:
[guest0@test guest0]$ rft -h test.gridlab.jlu.edu -f /tmp/rft.xfr
Number of transfers in this request: 1
Subscribed for overall status
Termination time to set: 60 minutes
Overall status of transfer:
Finished/Active/Failed/Retrying/Pending
0/1/0/0/0
Overall status of transfer:
Finished/Active/Failed/Retrying/Pending
1/0/0/0/0
All Transfers are completed
成功!
最后一步,设置 WS GRAM :
[root@test local]# visudo
在
sudoers
文件的最后加上:
globus ALL=(guest0) NOPASSWD: /usr/local/globus-4.0.8/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /usr/local/globus-4.0.8/libexec/globus-job-manager-script.pl *
globus ALL=(guest0) NOPASSWD: /usr/local/globus-4.0.8/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /usr/local/globus-4.0.8/libexec/globus-gram-local-proxy-tool *
然后可以测试一下:
[guest0@test guest0]$ globusrun-ws -submit -c /bin/date
Submitting job...Done.
Job ID: uuid:bcceac7c-6fec-11de-b8be-000c29ceaaf5
Termination time: 07/14/2009 20:35 GMT
Current job state: Active
Current job state: CleanUp
Current job state: Done
Destroying job...Done.