您的位置:首页 > 编程语言 > PHP开发

GridFTP安装手册(中文)(GridFTP Installation)

2013-04-16 17:27 330 查看



GridFTP 安装

该页面描述了安装和配置GridFTP服务的向导,有任何问题都可以联系 Bogdan Ludwiczak.

Globus Toolkit/GridFTP - 安装

本小节大概描述一下 Globus Toolkit ver. 4.x 的安装过程.

Globus Toolkit 提供了两个安装版本,一个是二进制的,一个是源码包的。它也提供了一个可用的完全安装版本,但是只作为 Java WS-core 的一部分。 在介绍安装步骤之前,需要说明一下 QosCosGrid 的基础安装步骤,其中的一部分就是 GridFTP 相关的内容。

下面是编译和安装 Globus Toolkit ,其中包括 GridFTP 后台进程的说明。

备注: 这是一个关于安装GridFTP服务的离线安装过程,所有详细的信息可以查看官方的 Globus文档 (Globus
documentation)。

检查目标系统是否有下列软件:

gcc (latest 3.4 or 4.1)
GNU tar, sed, make
Perl >5.6
创建一个专用的,没有特权的用户,名字为 globus 。用这个用户来安装和部署 Globus Toolkit 过程,并做一些管理相关的任务。
创建部署目录。
确认用户 globus 拥有在安装目录里面的读写权限。

备注: 使用 globus 这个用户执行下面的步骤.

下载和解压 Globus Toolkit ver.4.2.x 所有的源码安装包 (可以的下载地址为 http://www.globus.org/toolkit/downloads/4.2.1/#source Globus Toolkit )
更改当前的工作目录为源码目录 (比如 ~/gt4.2.x-all-source-installer)
设置环境变量 GLOBUS_LOCATION 指向安装目录 (e.g. /opt/globus/gt421)
然后使用 ./configure 来设置编译和安装选项。至少也要使用一些 --prefix 选项来设置部署目录。

./configure --prefix=${GLOBUS_LOCATION}


备注: 假如你碰到错误 configure: error: Unable to compile with SSL, 用下面的选项替换:

./configure --disable-system-openssl --prefix=${GLOBUS_LOCATION}


编译并安装 Globus Toolkit 使用下面的命令:

make gridftp
make install


假如你希望有一个编译的日志文件,你可以使用 "tee" 命令:

make gridftp 2>&1 | tee build.log
make install


GT4 不像其他的软件一样会直接生产目标位置 ($GLOBUS_LOCATION)
假如你忽略 gridftp 来make整个的 Globus Toolkit 的话,将会花费好几个小时才能完成。
在执行 make install 来解析Globus 配置文件的时候将会被初始化。
你也可以单独选择编译 GridFTP 服务器或者客户端工具,通过指定 globus_gridftp_服务器或者 globus-data-management-client 这两个选项来完成。

下面的步骤可以完成 Globus Toolkit/GridFTP 安装。 下面的命令是典型的安装过程,shell 命令如下:

bogdanl@cress ~ $ su -
cress ~ # useradd -m globus
cress ~ # mkdir /opt/globus
cress ~ # chown globus:users /opt/globus
cress ~ # su - globus
globus@cress ~ $ wget http://www-unix.globus.org/ftppub/gt4/4.2.1/installers/src/gt4.2.1-all-source-installer.tar.bz2 globus@cress ~ $ tar xjf gt4.2.1-all-source-installer.tar.bz2
globus@cress ~ $ export GLOBUS_LOCATION=/opt/globus/gt421
globus@cress ~ $ cd gt4.2.1-all-source-installer
globus@cress ~/gt4.2.1-all-source-installer $ ./configure --prefix=${GLOBUS_LOCATION} \
globus@cress ~/gt4.2.1-all-source-installer $ make gridftp
cd gpt && OBJECT_MODE=32 ./build_gpt
...
Your build completed successfully.  Please run make install.
globus@cress ~/gt4.2.1-all-source-installer $ make install


Globus Toolkit/GridFTP - 基本配置

安全

在 Globus Toolkit 安装完成之后, 在启动 Globus 服务之前,有好几个方面的 GSI 安全相关的项需要配置:

配置 Globus (and thus GridFTP daemon) 的认证证书,需要设置 CAs (Certificate Authorities), 例如. 放置信任的认证证书在 CAs 指定的目录里。 - CA 只在CA证书存在,并且名字和目录是合法的情况下才是一个被信任的CA证书。 然而, pre-ws 服务(包括 GridFTP), 签名的公有密钥文件也必须存在相同的位置。 换句话说,需要给出两个被信任的CA文件:

cert_hash.0 - the trusted CA certificate and
cert_hash.signing_policy - the signing policy.Globus services and tools looks for that directory in following locations:
the value of $X509_CERT_DIR environment variable if it is set and the directory exists,
otherwise, in $HOME/.globus/certificates if it exists,
otherwise, in /etc/grid-security/certificates if it exists,
otherwise, in $GLOBUS_LOCATION/share/certificates if it exists.

备注: 我们建议使用 /etc/grid-security/certificates 作为系统认证 CAs 的目录, 记住$X509_CERT_DIR和 $HOME/.globus/certificates 有更高级的优先权。

The cert_hash.0, i.e. certificate of the CA, is provided by CA, 通常使用一些合适的哈希名。哈希名由8个16进制数字和后缀 ".0"组成 (例如8a661490.0). 哈希值可以用下面的命令来获得 ($GLOBUS_LOCATION/bin/ 下面的命令必须可用):

openssl x509 -hash -noout -in ca_certificate


cert_hash.signing_policy 通常也由 CA提供, 但是它可以手工构造. 这个签名的方针文件有下面的格式:

access_id_CA X509 'CA Distinguished Name'
pos_rights globus CA:sign
cond_subjects globus '"Name Pattern1" "Name Pattern2" ...'


to get 'CA Distinguished Name' execute:

openssl x509 -subject -noout -in cert_hash.0


"Name patternX" 是一个字符串,被用来匹配CA证书给出的正确的名字,CA的名字通常是一个带 * 号的正则表达式。例如:

"/C=PL/O=GRID/CN=Polish Grid CA" -> '"/C=PL/O=GRID/*"'


它接受 "C=PL/O=GRID/OU=PSNC/CN=Bogdan Ludwiczak", 但是它拒绝 "O=GRID/OU=PSNC/CN=Bogdan Ludwiczak". "*" 模式匹配所有的证书.

通过 grid-cert-request 命令来配置正确的缺省值,一遍生成认证请求。下面的文件需要正确的配置来启用 Globus tools 来生成验证证书的请求:

/etc/grid-security/globus-user-ssl.conf - defines the distinguished name to use for a user's certificate request.
/etc/grid-security/globus-host-ssl.conf - defines the distinguished name for a host and service certificate request.
/etc/grid-security/grid-security.conf - is a main configuration file that contains the name and email address for the given CA.

这些文件通常由 CA 提供, i.e.
PL-Grid. 典型的 CA 配置文件被放置在 /etc/grid-security/certificates/ 目录,有一些附加的扩展.CA_hash_name 和对应的符号链接备创建在/etc/grid-security/里。 Globus Toolkit提供了 grid-default-ca 命令,该命令会自动创建合适的链接。

请求主机和用户的 X.509 证书

所有的 Globus 服务(包括GridFTP) 都需要一个主机 (or service) 认证操作过程。 每个用户都需要一个用户认证来使用 Globus 服务。你可以使用 Globus命令 grid-cert-request 来生成host/users 认证请求,然后发送到你的 CA 来进行签名。 确认 CA 配置文件和认证是在你生成请求之前。这么命令创建了3个文件:

一个空文件 /etc/grid-security/hostcert.pem 或者 ~/.globus/usercert.pem,
/etc/grid-security/hostkey.pem 或者 ~/.globus/userkey.pem 文件包括host/user 必须被加密后的私有秘钥 - 确认 unix 访问权限模式被设置为 0400 或者 0600 。
/etc/grid-security/hostcert_request.pem 或者 ~/.globus/usercert_request.pem 文件包含实践发送到CA的签名请求。

备注: 在你能够使用 grid-cert-request 命令之前, 你需要适配 Globus 配置脚本为你的shell。例如$GLOBUS_LOCATION/etc/globus-user-env.csh 或者$GLOBUS_LOCATION/etc/globus-user-env.sh

发送一个最新生成的认证请求(例如 /etc/grid-security/hostcert_request.pem 或者 ~/.globus/usercert_request.pem )到对应的 CA ,然后等待认证,认证信息由你的CA发送返回。保存你新的认证到hostcert.pem 或者usercert.pem。现在,请求文件可以被删除了。主机认证和私有秘钥为root用户所有。指定身份认证的映射信息。 Globus 服务映射到本地的身份由名字来区分
(retrieved from certificates) Unix账号,可以看grid-mapfile。映射关系有下面的表单:

"Distinguished Name" local_name(每行定义一个映射关系)。 这leu让用户登录,创建账号和添加映射到站点的 grid-mapfile。 Globus 将会查找下列位置的文件:

假如设置了 GRIDMAP 环境变量,可以看其值。
否则,假如是以root用户运行服务,可以看映射文件 /etc/grid-security/grid-mapfile,
否则,可以看Grid映射文件 $HOME/.gridmap
否则,就是看 /etc/grid-security/grid-mapfile.

备注: 在 QosCosGrid 中,可能会生成一个新用户的 X.509 证书,更多信息请看
user-friendly way

防火墙配置

关于GT防火墙的详细信息,你可以在这个网址找到 http://www.globus.org/toolkit/security/firewalls/. 这个段落只列出了最基本的防火墙配置需求,给出了一些最基础的信息。启用TCP远程访问 Globus Toolkit 服务需要开放的链接:

固定端口: 2811 该端口为 GridFTP 后台进程端口
临时 TCP 端口: 各种 Globus 服务需要任意的选择TCP端口的范围。它是环境变量 GLOBUS_TCP_PORT_RANGE 可以控制的。确认它已经在后台进程的环境变量中被定义了 (i.e. put it in (x)inetd configuration entries).

浏览下面给出的 Globus/GridFTP 通信流量显示出的信息可以看到上面提到的 Globus TCP 端口范围。





GridFTP 后台进程

在成功安装 GlobusToolkit之后, GridFTP 后台进程的二进制文件为: $GLOBUS_LOCATION/sbin/globus-gridftp-server 文件.。 后天进程能够与独立模式运行,但是我们建议使用使用 (x)inetd 模式。 用下面的方式进行配置,首先添加下面的入口/etc/services 文件:

gsiftp          2811/tcp               # GridFTP (Port 2811 is the IANA registered GridFTP port)


然后添加适当的入口 (x)inetd 配置文件。 记得在(x)inetd的整个环境变量中设置 LD_LIBRARY_PATH, GLOBUS_LOCATION和 GLOBUS_TCP_PORT_RANGE 环境变量, 在 xinetd 中的例子如下:

service gsiftp
{
instances            = 100
cps                  = 50 10
per_source           = 50
socket_type          = stream
wait                 = no
user                 = root
env                  = LD_LIBRARY_PATH=/opt/globus/lib
env                  += GLOBUS_LOCATION=/opt/globus
env                  += GLOBUS_TCP_PORT_RANGE=9000,9999
server               = /opt/globus/sbin/globus-gridftp-server
server_args          =  -i -c /opt/globus/etc/gridftp.conf
log_on_success       += DURATION
log_on_failure       +=
nice                 = 10
disable              = no
}


请注意,上面的例子指定了 grid-ftp 的配置文件 (-c .../gridftp.conf in server_args line). It is not required - GridFTP daemon should work without this file. 一个有用的配置文件的例子如下:

log_level ALL (or 'EERROR', 'WARN', 'INFO', 'DUMP')
log_module stdio
log_single /var/log/gridftp


它将启用日志功能,在分析问题时是很有用的。最后,重新启动 (x)inetd 来激活 GridFTP daemon:

/etc/init.d/xinetd restart


用户配置

所有的 Globus Toolkit 命令都需要正确的配置环境变量。 Globus Toolkit 提供脚本来达到配置环境变量的目的。GT配置用户环境变量的命令如下 (bash shell):

export GLOBUS_LOCATION=/opt/globus/gt421
. $GLOBUS_LOCATION/etc/globus-user-env.sh


csh shell 如下:

setenv GLOBUS_LOCATION /opt/globus/gt421
source $GLOBUS_LOCATION/etc/globus-user-env.csh


接下来,你必须获得用户证书 (描述文档为
Requesting host and user X.509 certificates ) 然后运行命令 grid-proxy-init 来创建用户代理:

grid-proxy-init
Your identity: /C=PL/O=GRID/O=PSNC/CN=Bogdan Ludwiczak
Enter GRID pass phrase for this identity:
Creating proxy ....................................................... Done
Your proxy is valid until: Tue Apr 29 21:02:33 2008


在接下来,成为root用户,创建映射文件 /etc/grid-security/grid-mapfile. 你可以使用你的收藏夹来编辑,添加类似下面的一行代码即可:

"/C=PL/O=GRID/O=PSNC/CN=Bogdan Ludwiczak" bogdanl


或者使用 GT grid-mapfile-add-entry 命令:

grid-mapfile-add-entry -dn "/C=PL/O=GRID/O=PSNC/CN=Bogdan Ludwiczak" -ln bogdanl


备注: "bogdanl" 在上面的例子中是一个UNIX账号名.

现在你可以使用 globus-url-copy 这个工具来传输文件了:

globus-url-copy gsiftp://node1.qoscosgrid.man.poznan.pl/~/file file:///tmp/file.test
globus-url-copy gsiftp://node1.qoscosgrid.man.poznan.pl/~/file gsiftp://node1.qoscosgrid.man.poznan.pl/~/file2
globus-url-copy gsiftp://node1.qoscosgrid.man.poznan.pl/~/file gsiftp://node2.qoscosgrid.man.poznan.pl/~/file2


快速开始

创建 globus 用户和安装目录,设置 globus 用户使用这个目录的权限:

bogdanl@cress ~ $ su -
cress ~ # useradd -m globus
cress ~ # mkdir /opt/globus
cress ~ # chown globus:users /opt/globus


使用 globus 用户登录:

cress ~ # su - globus


下载 Globus Toolkit 源代码安装包,然后解压他:

globus@cress ~ $ wget http://www-unix.globus.org/ftppub/gt4/4.2.1/installers/src/gt4.2.1-all-source-installer.tar.bz2 globus@cress ~ $ tar xjf gt4.2.1-all-source-installer.tar.bz2


配置和编译源代码:

globus@cress ~ $ cd gt4.2.1-all-source-installer
globus@cress ~ $ export GLOBUS_LOCATION=/opt/globus/gt421
globus@cress ~/gt4.2.1-all-source-installer $ ./configure --prefix=${GLOBUS_LOCATION} \
globus@cress ~/gt4.2.1-all-source-installer $ make gridftp
cd gpt && OBJECT_MODE=32 ./build_gpt
...
Your build completed successfully.  Please run make install.
globus@cress ~/gt4.2.1-all-source-installer $ make install


请求主机认证。
Start gridftp-server either standalone or by (x)inetd daemon

假如你打算使用 xinetd 后天进程,请添加 gridftp 到 /etc/services:

bogdanl@cress ~ $ su -
cress ~ # echo "gsiftp          2811/tcp               # GridFTP" >> /etc/services


创建新的 xinetd 配置文件给 gridftp 服务

cress ~ # cat /etc/xinetd.d/gridftp
service gsiftp { instances = 100 cps = 50 10 per_source = 50 socket_type = stream wait = no user = root env = LD_LIBRARY_PATH=/opt/globus/lib env += GLOBUS_LOCATION=/opt/globus env += GLOBUS_TCP_PORT_RANGE=9000,9999 server = /opt/globus/sbin/globus-gridftp-server server_args = -i -c /opt/globus/etc/gridftp.conf log_on_success += DURATION log_on_failure += nice = 10 disable = no }


重新启动 xinetd:

cress ~ # /etc/init.d/xinetd restart


测试:

bogdanl@cress ~ $ telnet cress 2811
Trying 150.254.149.134...
Connected to cress.man.poznan.pl.
Escape character is '^]'.
220 cress.man.poznan.pl GridFTP Server 2.3 (gcc32dbg, 1144436882-63) ready.
bogdanl@cress ~ $ export GLOBUS_LOCATION=/opt/globus/gt421
bogdanl@cress ~ $ . $GLOBUS_LOCATION/etc/globus-user-env.sh
bogdanl@cress ~ $ grid-proxy-init
bogdanl@cress ~ $ globus-url-copy gsiftp://cress/~/file  file:///tmp/file.test
bogdanl@cress ~ $ globus-url-copy gsiftp://cress/~/file  gsiftp://cress/~/file2


其他调整

请读这个页面
GridFTP tuning.

假如你计划传输大文件,我们建议你调整系统的TCP配置参数 TCP keepalive: :

echo "600" > /proc/sys/net/ipv4/tcp_keepalive_time
echo "75" > /proc/sys/net/ipv4/tcp_keepalive_intvl
echo "9" > /proc/sys/net/ipv4/tcp_keepalive_probes

要永久的改变这个配置,请把它添加到 /etc/sysctl.conf 配置文件中

原文地址:

http://www.qoscosgrid.org/trac/qcg-computing/wiki/installingGridFTP

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: