网格安装

1 Postgre数据库安装

2 网格所需软件安装

3 网格安装

4 基础安全配置

5 配置GridFTP和RFT

6 测试GRAM

7 分布式ca

8 配置GRAM

9 用Default创建VO

10 创建WebMDS

11 配置MyProxy

12 创建cluster

13 常见问题解答


1 Postgre数据库的安装

2 网格所需软件安装

3 网格安装

1 下载gt4.0.0-ia32-redhat9-binary-installer.tar.gz

2 tar -xvzf gt4.0.0-ia32-redhat9-binary-installer.tar.gz

3 cd gt4.0.0-ia32-redhat9-binary-installer

4 ./configure --prefix=$GLOBUS_LOCATION

5 make

6 make install

4 基础安全配置:Basic Security Configuration

1 安装GSI:创建两个用户:user(运行客户端程序),globus(管理CA,启动并停止容器,发布服务)

创建SimpleCA

运行脚本$GLOBUS_LOCATION/setup/globus/setup-simple-ca来创建SimpleCA。

此命令主要执行以下任务:

产生一个SimpleCA包,以供其他用户安装分布式CA

设置一些常量如过期时间等

为此CA中心自己签署一个证书,证书私钥和CA证书存放在 /home/globus/.globus/simpleCA//private/cakey.pem

和/home/globus/.globus/simpleCA//cacert.pem中

以root用户运行$GLOBUS_LOCATION/setup/globus_simple_ca_CA_Hash_setup/setup-gsi -default

配置GSI安全。创建/etc/grid-security;创建信任的存放证书的目录;安装Globus CA证书到信任证书目录;安装CA签署政策到信任目录

获得主机证书:以root 用户执行 grid-cert-request -host 'wenziyan1208.jlu.edu.cn'

以globus用户执行grid-ca-sign -in hostcert_request.pem -out hostcert.pem

用户获得用户证书:以user用户运行:grid-cert-request

以globus用户为用户签署证书:grid-ca-sign -in usercert_request.pem -out usercert.pem

签完的证书放在了/home/globus/.globus/simpleCA//newcerts/02.pem,需要拷回到相应的位置。有的时候需要修改权限。

用户:grid-proxy-init -debug -verify。启动用户代理

grid-cert-info -subject 获得的信息用于在grid-mapfile中创建映射。

以root用户创建/etc/grid-security/grid-mapfile ,"上述命令获得内容" 用户名(who am i的内容)

以globus用户启动container。globus-start-container

错误:Failed to start container: Failed to initialize 'ManagedJobFactoryService' service [Caused by: [SEC] Service credentials not configured and was not able to obtain container credentials.; nested exception is:
org.globus.wsrf.security.SecurityException: [SEC] Error obtaining container credentials; nested exception is:
org.globus.wsrf.config.ConfigException: Failed to initialize container security config [Caused by: [Caused by: Failed to load credentials. [Caused by: /etc/grid-security/containercert.pem (No such file or directory)]]]]
解决办法:把hostcert.pem和hostkey.pem改为containercert.pem和containerkey.pem,然后修改其访问权限,让globus可以访问。

错误:org.apache.commons.dbcp.DbcpException: Backend start-up failed: FATAL: database "rftDatabase" does not exist

错误原因:rft数据库不存在。解决办法:创建该数据库,运行脚本创建表,并且修改相应的配置文件。具体步骤如下:

1 以globus用户创建数据库rftDatabase(RFT要用).

2 在连接该数据库时用选项psql -d rftDatabase -f $GLOBUS_LOCATION/share/globus_wsrf_rft/rft_schema.sql.创建需要的表,此数据库用于存放RFT的状态。

3 修改$GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml中的ReliableFileTransferService section下面的connectionString 指向安装该数据库的机器名字和数据库名字。

4 修改用户名和密码为globus和globus的密码(即创建该数据库的用户名和密码)

错误:ERROR impl.QueryAggregatorSource [Thread-11,pollGetMultiple:149] Exception Getting Multiple Resource Properties from https://59.72.66.33:8443/wsrf/services/ReliableFileTransferFactoryService: java.rmi.RemoteException: Failed to serialize resource property org.globus.transfer.reliable.service.factory.TotalNumberOfBytesTransferred@14db52b; nested exception is:
org.apache.commons.dbcp.DbcpException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
错误原因:未启动数据库服务器,需要用postgre用户postmast -i启动数据库服务。

错误:说globus密码认证通不过。可能密码有2问题,把pgsql/pg_hba.conf中的host rftDatabase "globus" "59.72.66.33" 255.255.255.255 trust由mad5改为trust。

就能记住这么多了,大部分都是数据库的问题。

2 container中的为127.0.0.0,可以修改两个文件:
/home/globus/gt4.0/etc/globus_wsrf_core下的
client-server-config.wsdd和server-config.wsdd
加入


5 配置GridFTP和RFTGridFTP默认情况下已经被安装,但是需要另外的配置.
1 配置GridFTP服务器
创建配置文件:GridFtp启动时首先从$GLOBUS_LOCATION/etc/gridftp.conf,如果找不到则会从/etc/grid-security/gridftp.conf
所以在两个任何地方创建gridftp.conf,内容为:
port 5000
allow_anonymous 1
anonymous_user bob
banner "Welcome!"
2 启动GridFtp服务器:
globus-gridftp-server -c $GLOBUS_LOCATION/etc/gridftp.conf:/etc/grid-security/gridftp.conf
注意:此命令在¥GLOBUS-LOCATION/sbin下

3 测试ftp服务器是否启动成功
telnet localhost 500

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 GridFTP Server wenziyan1208 2.0 (gcc32dbg, 1114447190-1) ready.
220表示gridftp启动成功

以上操作均由root用户进行

以下操作均由用户完成,次用户有用户证书并且与globus同一组

我以user用户运行,包括从服务器上取文件以及往服务器上传文件.
1 用户启动代理
grid-proxy-init -verify -debug
2 从服务器上面取文件
globus-url-copy -vb -dbg gsiftp://wenziyan1208:5000/home/globus/sound.log file:///home/user/
3 向服务器传文件
globus-url-copy -vb –dbg file:///home/user/sound.log gsiftp://wenziyan1208:5000/home/globus/sound1.log
错误分析:
1 如果以root用户进行操作,因为root没有用户证书
没有用户证书的用户进行操作的时候出现的错误是:
dest:/home/globus/sound1.log
Source: file:///home/user/
Dest: gsiftp://wenziyan1208:5000/home/globus/
sound.log -> sound1.log
debug: starting to put gsiftp://wenziyan1208:5000/home/globus/sound1.log
debug: connecting to gsiftp://wenziyan1208:5000/home/globus/sound1.log
debug: response from gsiftp://wenziyan1208:5000/home/globus/sound1.log:
220 GridFTP Server wenziyan1208 2.0 (gcc32dbg, 1114447190-1) ready.

debug: authenticating with gsiftp://wenziyan1208:5000/home/globus/sound1.log
debug: response from gsiftp://wenziyan1208:5000/home/globus/sound1.log:
530-Login incorrect. : globus_gss_assist: Gridmap lookup failure: Could not map /O=Grid/OU=GlobusTest/OU=simpleCA-wenziyan1208/CN=host/wenziyan1208
530-
530 End.

debug: fault on connection to gsiftp://wenziyan1208:5000/home/globus/sound1.log
debug: data callback, error globus_ftp_client: the server responded with an error, buffer 0x40381008, length 0, offset=0, eof=true
debug: operation complete


error: globus_ftp_client: the server responded with an error
530 530-Login incorrect. : globus_gss_assist: Gridmap lookup failure: Could not map /O=Grid/OU=GlobusTest/OU=simpleCA-wenziyan1208/CN=host/wenziyan1208
530-
530 End.
2 主机证书和期望的证书不一样,说明主机证书有问题.我遇到的问题是申请主机证书时主机名写错了,应该是wenziyan1208
而我写成wenziyan1208@jlu.edu.cn了


4 测试RFT:是GridFTP的第三方文件传输,用一个数据库来存储状态这样可以在失败的时候重新续传。RFT通过标准的网格安装机制对用户进行认证和授权。
RFT已经作为Globus的一部分进行了安装,下面只需要进行配置即可。

我用的是GT4.0,需要修改文件$GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml
有一个JNDI资源定义:定义的mdsConfiguraion.


type="org.globus.wsrf.impl.servicegroup.client.MDSConfiguration">


reg
true


factory
org.globus.wsrf.jndi.BeanFactory



如果是GT4,则次属性的默认值为false,改为true就行.
配置资源属性:
有关资源的一些属性:默认情况下下面的属性注册到Index服务中。
ActiveResourceInstances,TotalNumberOfTransfers,TotalNumberOfActiveTransfers,DelegationServiceEPR,RFTFactoryStartTime
可以通过修改$GLOBUS_LOCATION/etc/globus_wsrf_rft/registration.xml来说明那些属性被注册。

测试RFT:
1 启动GridFTP服务 $GLOBUS_LOCATION/sbin/globus-gridftp-server -p 2811
2 启动container
3 用户:1 启动代理 2 cp /usr/local/globus-4.0.1/share/globus_wsrf_rft_test/transfer.xfr /tmp/rft.xfr
3 vim /tmp/rft.xfr 4 cat /tmp/rft.xfr rft.xfr中的端口是GridFtp开的端口。
4 rft -h 主机证书中的CN -f /tmp/rft.xfr

4 修改$GLOBUS_LOCATION/share/globus_wsrf_rft_test/test.properties,设置合适的参数值.
5 运行ant -Dtests.jar=$GLOBUS_LOCATION/lib/globus_wsrf_rft_test.jar -f share/globus_wsrf_rft_test/runtests.xml,进行所有的RFT单元测试
6 产生测试报告

过程中错误分析:

1 不能创建目录:没有权限
2 端口问题,和ftp的端口一致

6 测试GRAM

1 以ROOT用户配置sudoers。添加以下两行:
globus ALL=(ALL) NOPASSWD:/home/globus/GT4.0/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /home/globus/GT4.0/libexec/globus-job-manager-script.pl *
user ALL=(ALL) NOPASSWD:/home/globus/GT4.0/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /home/globus/GT4.0/libexec/globus-gram-local-proxy-tool *
然后将该文件改为440
2 以用户运行grid-proxy-init。然后运行globusrun-ws -submit -c /bin/touch touched_it。
3 测试任务又没有提交的办法:看touched_it文件是否被访问过。
4 globusrun-ws -submit -F https://lucky0.mcs.anl.gov:8443/wsrf/services/ManagedJobFactoryService -c /bin/touch touched_it
5 用任务描述文件(.xml).
globusrun-ws -submit -f test_super_simple.xml
当前文件加中的stdout中有输出.

错误分析:

1 sudo配置
1 用visudo命令直接编辑
2 加入# Globus GRAM entries globus ALL=(user,globus) NOPASSWD: /home/globus/gt4.0/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /home/globus/gt4.0/libexec/globus-job-manager- script.pl * globus ALL=(user,globus) NOPASSWD: /home/globus/gt4.0/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /home/globus/gt4.0/libexec/globus-gram-local-proxy-tool *
globus ALL=(user,globus)。表示globus可以具有用户user和globus。即用户user和globus用户提交的作业将由globus用户执行。

2 主机证书的返回值和期望值不同,需要修改/etc/hosts,将本机加入。

7 分布式ca

1 添加用户adduser lgl_wzy
2 将该用户添加到组globus中
chown 用户 组 文件夹
usermod -G 组名 用户名
chmod g+rwx *
3 下载simpleca安装包。到服务器主机$globus_location/.globus/simpleca/.tar.gz
4 到globus用户下,运行$GLOBUS_LOCATION/sbin/gpt-build globus_simple_ca_HASH_setup-0.17.tar.gz gcc32dbg
$GLOBUS_LOCATION/sbin/gpt-postinstall
5 root用户下运行$GLOBUS_LOCATION/setup/globus_simple_ca_b091bccf_setup/setup-gsi。到此在本机的
/etc/grid-securuty/certifity中已经将该ca的证书和签署策略等文件生成了.这些文件定义了用户证书,主机证书,服务证书的格式
以及ca的名字和email地址,可以有一个文件说明怎么使用这个CA.
6 以root用户运行grid-default-ca
指定本机默认的ca
7 申请主机证书,并到服务器主机上签署后拷回
8 启动container

8 配置GRAM

可以用 $GLOBUS_LOCATION/setup/globus/setup-gram-service-common --staging-host=choate.mcs.anl.gov
将staging host改为服务器的。
1 创建一个a.rsl文件:
<job>
<executable>my_echo</executable>
<directory>${GLOBUS_USER_HOME}</directory>
<argument>Hello</argument>
<argument>World!</argument>
<stdout>${GLOBUS_USER_HOME}/stdout</stdout>
<stderr>${GLOBUS_USER_HOME}/stderr</stderr>
<fileStageIn>
<transfer>
<sourceUrl>gsiftp://cognito.mcs.anl.gov:2811/bin/echo</sourceUrl>
<destinationUrl>file:///${GLOBUS_USER_HOME}/my_echo</destinationUrl>
</transfer>
</fileStageIn>
<fileCleanUp>
<deletion>
<file>file:///${GLOBUS_USER_HOME}/my_echo</file>
</deletion>
</fileCleanUp>
</job>
2 运行:globusrun-ws -submit -S -f a.rsl
命令说明:此命令用的是服务器端的rft,然后利用本机的GridFTP将命令/bin/echo考到用户目录下。
运行时本机container和服务器的container都必须开开
3 错误分析:
用户运行提交任务命令时出错:
globusrun-ws: Job failed: Staging error for RSL element fileStageIn.
Unable to connect to host: "jlu.lgl" at port "2811"
org.globus.rft.generated.TransferFaultType
Unable to connect to host: "jlu.lgl" at port "2811"
org.globus.transfer.reliable.service.exception.RftException
org.globus.exec.generated.StagingFaultType
服务器的container端出现:
2005-12-17 21:49:30,219 ERROR service.TransferWork [Thread-36,run:704] Terminal transfer error:
[Caused by: jlu.lgl]

. Caused by
java.net.UnknownHostException: jlu.lgl
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:153)
at java.net.Socket.connect(Socket.java:452)
at java.net.Socket.connect(Socket.java:402)
at java.net.Socket.<init>(Socket.java:309)
at java.net.Socket.<init>(Socket.java:124)
at org.globus.ftp.vanilla.FTPControlChannel.open(FTPControlChannel.java:120)
at org.globus.ftp.GridFTPClient.<init>(GridFTPClient.java:72)
at org.globus.transfer.reliable.service.DeleteClient.<init>(DeleteClient.java:89)
at org.globus.transfer.reliable.service.TransferWork.getDeleteClient(TransferWork.java:394)
at org.globus.transfer.reliable.service.TransferWork.run(TransferWork.java:666)
at org.globus.wsrf.impl.work.WorkManagerImpl$WorkWrapper.run(WorkManager
错误分析:在服务器的/etc/hosts中没有本机的机器名或者机器名写错了。

9 用DefaultIndex创建VOs

1 创建Index Service层次。
把jlu.lgl的index服务注册到wenziyan1208,这样我们可以对两个机器上有个统一的整体视图
修改$GLOBUS_LOCATION/etc/globus_wsrf_mds_index目录中的hierarchy.xml
将你要注册到的index服务的URL加到upstream元素中。
2 (此步可选)修改upstream.xml,这个文件中有两个元素RefreshIntervalSecs 和PollIntervalMillis
前者是本down index服务刷新的频率,而后者表示up index来取数据的频率。真正决定使用频率的是后者。
改完以后启动jlu.lgl机器上的container,当DefaultIndexService服务被激活时,他将会读取hierarchy.xml中的upstream
元素。如果成功,则会在uptream index中有个子元素(downstream)。(怎么看?)
3 在jlu.lgl上面运行wsrf-query -s https://59.72.66.33:8443/wsrf/services/DefaultIndexService '/*' | grep 59.72.66.37 | wc -l
如果结果是7则表示在远程DefaultIndex服务中有7个实体和我们的机器有关。
看结果看着不太方便,所以配置WebMDS。

10 创建WebMDS

创建WebMDS:使用户可以通过web浏览器查看监视信息。WebMDS是一个servlet,用插件接口他把监视信息(XML)和XSLT结合在一起,以读者可以
读懂的形式返回给用户.

1 安装并配置tomcat,推荐版本tomcat5.0.28
tar xvzf tomacat5.0.28
2 要修改端口,则修改server.xml.有个port端口改为8089
3 XSL解释:是为XML文件定义的一种标识语言,它将提供远远超过CSS的强大功能,如将元素再排序等
他包含了一套元素集的XML语法规范,可以被用来将XML文件转换为HTML文件或者HTML文档.
4 WebMDS从一配置文件中定位资源并读取文件.
有好多的配置文件,也有好多不同的类来完成不同的功能.
5 部署
1 设置环境变量:CATALINA_HOME=Tomcat安装路径
2 创建配置文件,告诉Tomcat去哪里找WebMDS servlet和相关的文件
运行如下的命令创建这些配置文件:
$GLOBUS_LOCATION/lib/webmds/bin/webmds-create-context-file $CATALINA_HOME/conf/Catalina/localhost
上述命令将会创建文件:$CATALINA_HOME/conf/Catalina/localhost/webmds.xml
3 重启Tomcat以便使他读取新的配置文件.首先要shutdown.sh,然后startup.sh
4 简单测试:在浏览器输入http://59.72.66.33:8089/webmds
5 更详细的单元测试.
问题:找不到gt4-webmds-test,单元测试不好使.

11 使用MyProxy.我们要把wenziyan1208设为Myproxy服务器

1 修改$GLOBUS_LOCATION/etc/myproxy.server.config。如果不进行此步则该My poroxy不会处理任何请求。
去掉一些注释,主要有以下的选项:
1 accepted-credentials
2 authorized-retriever(可以为每个指定用户指定,也可以为整个server指定)
3 default_retrievers 可以被2覆盖
4 authorized_renewers 可以修改的用户,可以为某个指定证书指定,也可以为整个server指定
5 default_renewers 可以被4覆盖
2 还有一个类$GLOBUS_LOCATION/share/myproxy/myproxy-passphase-policy会评价用户输入的密码的质量
3 部署:
1 把$GLOBUS_LOCATION/share/myproxy/etc.services.modifications中的内容拷到/etc/services中
2 把$GLOBUS_LOCATION/share/myproxy/etc.xinetd.myproxy中的内容拷到/etc/xinetd.d/myproxy中
3 重新激活xinetd:用命令service xinetd restart
4 test
如果用的是主机证书(有区别吗?还可以用别的证书吗?)则用root用户运行
1 运行$GLOBUS_LOCATION/etc/globus-user-env.sh,将GLobus环境健在shell中
2 运行$GLOBUS_LOCATION/sbin/myproxy-server -d
怎么用?怎么测试?
5 用户测试,将用户的证书和私钥放在My Proxy中,并在需要的时候从My Proxy中取出.
1 用myproxy-init将用户的证书和私钥放在My Proxy中.
以用户身份运行:myproxy-init -a -s wenziyan1208.jlu.edu.cn表示My Proxy服务器为wenziyan1208.jlu.edu.cn
默认情况下将根据~/.globus/userkey.pem和~/.globus/usercert.pem来产生代理证书。
2 用myproxy-logon -s myproxy.ncsa.uiuc.edu从My Proxy中读取该用户的代理证书。可以用-o选项指定将代理证书放在
指定地方,默认情况下将会被放在/tmp/x509up_u500
6 My Proxy介绍
My Proxy是一个在线证书存储器,采用了密码保护,并且避免了机器之间的证书传输。也可用于门户的认证以及用job manager
来对证书进行更新。
1 用户可以通过myproxy-init和myproxy-logon来进行证书的存储和获取
2 用户用myproxy-store和myproxy-retrieve来保存和获取证书.(是保存固定格式的证书还是都能保存?看实现原理)
3 管理员可以代表用户拿回用户的x509证书
4 创建用户证书并放入My proxy存储器中
5 用户和管理员可为证书设置访问控制策略
6 Job Manager可以在证书过期之前更新证书
  7 证书可以用密码保护,也可以用证书保护
8 My proxy基于Pre-ws 认证授权组件
因此Myproxy的作用:
用于存储用户的代理证书,用于以后retrieve
用于存储用户证书用于后来的证书更新
但是证书不能同时用于retrieve和renew,如果需要则必须改名
X509_USER_CERT和X509_USER_KEY两个环境变量指定了用于产生代理证书的证书位置,默认情况下是用户根目录下的.globus下的
用户证书和用户私钥文件
可用于产生一下证书的代理证书:1 用户证书
2 用户代理证书
3 用“legacy globus proxy”,则需要把GT_PROXY_mode设为old。
Myproxy具有的功能:
1 指定Myproxy服务器名字
2 Myproxy有自己的帐号,此帐号可以在linux中没有,而代理证书可以产生在指定的帐号下
3 证书的存取可以通过密码认证,也可以有证书认证
4 可以指定取证书的用户的CN和DN
5 可显示证书信息,
6 Myproxy-store可将证书通过网络传输保存到My-proxy服务器中,而和Myproxy-init不同
7 Myproxy server是一个信任的安全的服务器,用于在线保存credentials。用一个数据库来保存远程用户的证书。

12 创建cluster

13 常见问题解答

1 如果在申请主机证书时,出现下面错误:The hostname cognito does not appear to be fully qualified.
可能两个原因: 1 可能运行hostname把FQDN 设为主机名了
2 /etc/hosts中用了缩写主机名

2 运行:globusrun-ws -submit -S -f a.rsl
命令说明:此命令用的是服务器端的rft,然后利用本机的GridFTP将命令/bin/echo考到用户目录下。
运行时本机container和服务器的container都必须开开

3 用globus用户创建rftDatabase数据库
假设数据库用户为lgl
su lgl
su globus
createdb rftDatabase
psql -d rftDatabase -f $GLOBUS_LOCATION/share/globus-wsrf-rft/rft-schema.sql
psql rftDatabase
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值