`
mintelong
  • 浏览: 392579 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

网格安装

阅读更多
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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics