0. Предисловие
Это, пожалуй, единственная инструкция по установке Globus Toolkit 5.0.3 на русском языке (по крайней мере, на момент написания оной). Поскольку оригинальный Install Quickstart местами неочевиден, местами сложен для новичков, а местами и вовсе содержит ошибки (причем, весьма фатальные), возникла необходимость написать иной Quickstart, который позволит новичку установить и настроить Globus Toolkit 5, потратив минимум времени и нервов. В основе будет лежать Quickstart с официального сайта www.globus.org, также по ходу инструкции будут встречаться ссылки на материалы с того же сайта.
Автор: Armaxis
1. Настройка первой машины
1.1. Перед установкой
Итак, вы решили установить Globus Toolkit 5.0, и не знаете с чего начать. А начать следует с подготовки всего необходимого для развертывания глобуса (я позволю себе здесь и далее так называть Globus Toolkit 5).
Для начала нам необходимы два реальных или (что для начала даже лучше) виртуальных компьютера. Для создания виртуальных машин прекрасно подойдет бесплатная программа VirtualBox. В качестве операционной системы я выбрал Debian 6 Squeeze. Данное руководство рассматривает установку на виртуальных машинах, но аналогично настраиваются и реальные компьютеры.
|
Важно
|
При установке операционной системы выберите в качестве domainname что-либо, отличное от localdomain, иначе будут проблемы при установке глобуса. В данной инструкции рассматривается пример с именем домена «WORKGROUP»
|
|
Совет
|
|
|
В Debian установку пакетов можно совершить, запустив в консоли из-под root'а приложение aptitude или synaptic. При необходимости добавьте репозиторий 'deb-src http://ftp.ru.debian.org/debian squeeze main’
|
|
Проверим уже установленные пакеты
root@GlobusNode:~$ openssl version
OpenSSL 0.9.8o 01 Jun 2010
root@GlobusNode:~$ dpkg --list | grep libssl
ii libssl-dev 0.9.8o-4squeeze1 SSL development libraries, header files and documentation
ii libssl0.9.8 0.9.8o-4squeeze1 SSL shared libraries
root@GlobusNode:~$ dpkg --list | grep zlib
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime
ii zlib1g-dev 1:1.2.3.4.dfsg-3 compression library - development
(аналогично как и с SSL libraries, zlib development может потребовать установки)
Важно чтобы для Zlib и Libssl присутствовали development библиотеки (а не только shared). Их, скорее всего, потребуется доустановить. Openssl подойдет, начиная с версии 0.9.7.
Также необходимо установить gcc и g++. Проверить корректность установки можно с помощью следующих команд:
root@GlobusNode:~$ which gcc
/usr/bin/gcc
root@GlobusNode:~$ which g++
/usr/bin/g++
Также проверим версии (и в случае необходимости, установим) приложений tar/make/sed:
root@GlobusNode:~$ tar --version
tar (GNU tar) 1.23
Copyright (C) 2010 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или новее <http://gnu.org/licenses/gpl.html>
Это свободное ПО: вы можете продавать и распространять его.
Нет НИКАКИХ ГАРАНТИЙ до степени, разрешённой законом.
root@GlobusNode:~$ sed --version
GNU sed версия 4.2.1
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
root@GlobusNode:~$ make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Также крайне желательно установить текстовый редактор vim (руководство по vim для новичков) и xinetd, с помощью которого в дальнейшем будут запускаться сервисы. Также потребуется установить ssh для передачи данных между машинами.
Итак, еще раз, полный список того, что должно быть установлено:
openssl
libssl (dev+shared libs)
zlib (dev+shared libs)
gcc
g++
tar
sed
make
vim
xinetd
ssh
|
Ссылки
|
|
Системные требования в полном руководстве по установке (англ).
|
1.2. Сборка Globus Toolkit
Итак, все необходимое установлено, приступаем к сборке самого глобуса. Для начала необходимо создать пользователя globus, под которым будет установлен Globus Toolkit. Теперь нужно скачать инсталлятор (архив .tar.bz2, 53 Мб) и поместить его куда-нибудь (например, в каталог пользователя, т.е. /home/globus/). Установка пакета под root'ом может повлечь за собой дальнейшие проблемы при эксплуатации GRAM5. После создания пользователя необходимо дать ему права на запись в папку /sandbox/
root@GlobusNode:/# mkdir /sandbox/
root@GlobusNode:/# chown globus /sandbox/
Создадим каталог, куда будет установлен Globus Toolkit.
globus@GlobusNode:~$ mkdir /sandbox/globus-5/
Распакуем архив:
globus@GlobusNode:~$ tar xjf gt5.0.3-all-source-installer.tar.gz
globus@GlobusNode:~$ cd gt5.0.3-all-source-installer
Сконфигурируем файл установки, указав путь, куда будет проинсталлирован глобус, а именно /sandbox/globus-5/
globus@GlobusNode:/gt5.0.3-all-source-installer$ ./configure --prefix=/sandbox/globus-5/
checking build system type... i686-pc-linux-gnu
configure: creating ./config.status
config.status: creating Makefile
Теперь можно приступить к самой сборке:
globus@GlobusNode:~/gt5.0.3-all-source-installer$ make | tee installer.log
cd gpt-3.2autotools2004 && OBJECT_MODE=32 ./build_gpt
build_gpt ====> installing GPT into /sandbox/globus-5/
...
Можно идти пить чай с пряниками, сборка займет около часа (в зависимости от вашего компьютера):
...
Your build completed successfully. Please run make install.
globus@GlobusNode:~/gt5.0.3-all-source-installer$ make install
/sandbox/globus/globus-5.0.3//sbin/gpt-postinstall
...
..Done
Теперь для удобства дальнейшей работы добавим подключение команд Globus Toolkit в файл /etc/bash.bashrc. Таким образом мы избавим себя от обязанности подключать команды при открытии нового терминала и команды глобуса будут подключаться автоматически:
root@GlobusNode:/#vim /etc/bash.bashrc
Добавим в начало файла следующие две строки:
export GLOBUS_LOCATION=/sandbox/globus-5
source $GLOBUS_LOCATION/etc/globus-user-env.sh
Сохраняем, подключаем заново файл /etc/bash.bashrc и перезапускаем терминал.
root@GlobusNode:/#source /etc/bash.bashrc
Теперь наша машина готова для дальнейшей настройки. Настоятельно рекомендуется сделать копию виртуальной машины в данный момент времени, и из этой копии уже потом будет настроена вторая (и последующие машины).
1.3. Настройка безопасности на первой машине
На данном этапе будет настроена аутентификация и авторизация пользователей с помощью сертификатов. Потребуются сертификаты как для пользователей, так и для сервисов. Для сервисов они будут совпадать с сертификатами хоста. Для создания сертификатов будет использоваться SimpleCA, которая поставляется вместе с Globus Toolkit. Подробная инструкция может быть найдена тут SimpleCA Admin.
Прежде чем приступить к настройке сертификатов необходимо проверить файл /etc/hosts.
root@GlobusNode:/# vim /etc/hosts
127.0.0.1 GlobusNode localhost
127.0.1.1 GlobusNode.WORKGROUP GlobusNode.localdomain
.........
Главное – чтобы после 127.0.0.1 стояло GlobusNode без указаний на рабочую группу, иначе в дальнейшем может возникнуть конфликт имен. Вторая строка менее важна, но лучше привести ее к подобному виду. Можно приступать к установке и настройке SimpleCA.
root@GlobusNode:~# cd /gt5.0.3-all-source-installer/quickstart
root@GlobusNode:gt5.0.3-all-source-installer/quickstart# perl gt-server-ca.pl -y
Setting up /sandbox/globus-5/
Please enter a password of at least four characters for the CA:
Confirm password:
Creating a new simpleCA, logging to gt-server-ca.log...
Running setup-gsi...
Your CA hash is: d58f5223
It is located at /sandbox/globus-5//share/certificates/d58f5223.0
В этот момент выполнение кода приостановится. Нужно будет ввести ‘y’ и нажать Enter для продолжения. В этот момент возникать должен запрос на подтверждение создания SimpleCA, но из-за ошибки в скрипте вопрос не выводится.
y
Your host DN is /O=Grid/OU=GlobusTest/OU=simpleCA-globusnode/CN=host/globusnode
The hostcert is located at /sandbox/globus-5/etc/hostcert.pem
|
Примечание
|
Может не сработать, если /tmp смонтирована как noexec. В таком случае попробуйте задать переменную GLOBUS_SH_TMP=`pwd` и попробовать снова.
|
Проверяем:
root@GlobusNode:~# ls /root/.globus/
simpleCA
root@GlobusNode:~# ls /root/.globus/simpleCA/
cacert.pem certs crl globus_simple_ca_d58f5223_setup-0.20.tar.gz grid-ca-ssl.conf index.txt index.txt.attr index.txt.old newcerts private serial serial.old
Описание, что это за файлы, можно найти тут Security Admin Guide. SimpleCA установлена.
Последним шагом на данном этапе будет копирование подписанных и доверенных сертификатов в /etc:
root@GlobusNode:~# mkdir /etc/grid-security
root@GlobusNode:~# mv $GLOBUS_LOCATION/etc/host*.pem /etc/grid-security/
root@GlobusNode:~# cp -r $GLOBUS_LOCATION/share/certificates/ /etc/grid-security/
1.4. Создание MyProxy сервера
На данном этапе будет создан и сконфигурирован MyProxy сервер на GlobusNode. Он используется для хранения и выдачи сертификатов пользователей и сервисов. Полная инструкция может быть найдета тут: настройка MyProxy.
root@GlobusNode:~# cp $GLOBUS_LOCATION/share/myproxy/myproxy-server.config /etc
root@GlobusNode:~# vim /etc/myproxy-server.config
Необходимо раскомментировать строки 18-24. Сравним полученный файл с исходным.
root@GlobusNode:~# diff /etc/myproxy-server.config $GLOBUS_LOCATION/share/myproxy/myproxy-server.config
18,24c18,24
< accepted_credentials "*"
< authorized_retrievers "*"
< default_retrievers "*"
< authorized_renewers "*"
< default_renewers "none"
< authorized_key_retrievers "*"
< default_key_retrievers "none"
---
> #accepted_credentials "*"
> #authorized_retrievers "*"
> #default_retrievers "*"
> #authorized_renewers "*"
> #default_renewers "none"
> #authorized_key_retrievers "*"
> #default_key_retrievers "none"
root@GlobusNode:~# cat $GLOBUS_LOCATION/share/myproxy/etc.services.modifications >> /etc/services
root@GlobusNode:~# tail /etc/services
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
myproxy-server 7512/tcp # Myproxy server
root@GlobusNode:~# cp $GLOBUS_LOCATION/share/myproxy/etc.xinetd.myproxy /etc/xinetd.d/myproxy
Исправляем файл с настройками сервиса.
root@GlobusNode:~# vim /etc/xinetd.d/myproxy
service myproxy-server
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /sandbox/globus-5/sbin/myproxy-server
env = GLOBUS_LOCATION=/sandbox/globus-5
LD_LIBRARY_PATH=/sandbox/globus-5/lib
disable = no
}
Перезапускаем xinetd и проверяем работоспособность сервиса.
root@GlobusNode:~# /etc/init.d/xinetd reload
Reloading internet superserver configuration: xinetd.
root@GlobusNode:~# netstat -an | grep 7512
tcp 0 0 0.0.0.0:7512 0.0.0.0:* LISTEN
MyProxy сервер запущен и работает. Теперь необходимо создать сертификат для тестового пользователя. Создаем в системе реального пользователя с полным именем QuickStart User и логином quser. При создании сертификата будет необходимо указать два пароля. Первый - это пароль, который будет в дальнейшем использоваться для авторизации пользователя quser (минимум 6 символов), а второй – пароль, который был указан при создании SimpleCA для доступа к ней.
root@GlobusNode:~ # myproxy-admin-adduser -c "QuickStart User" -l quser
Enter PEM pass phrase: <�придумываем пароль, например qpassword>
Verifying - Enter PEM pass phrase:
To sign the request
please enter the password for the CA key: <�пароль от SimpleCA>
The new signed certificate is at: /root/.globus/simpleCA//newcerts/02.pem
using storage directory /var/myproxy
Credential stored successfully
Certificate subject is:
/O=Grid/OU=GlobusTest/OU=simpleCA-globusnode/CN=QuickStart User
И, последний шаг – создаем файл grid-mapfile под root который будет использоваться для авторизации. Копируем целиком строку /O=Grid/OU=... из предыдущего вывода:
root@GlobusNode:/etc/grid-security# vim /etc/grid-security/grid-mapfile
"/O=Grid/OU=GlobusTest/OU=simpleCA-globusnode/CN=QuickStart User" quser
|
Замечание
|
Для пользователя globus сертификат создавать не нужно. Это просто аккаунт для установки Globus Toolkit. Сертификаты нужны только реальным пользователям.
|
1.5. Настройка GridFTP
Теперь, когда уже настроена аутентификация, можно приступать к сервисам. Сначала установим GridFTP – сервис для передачи данных по протоколу gsiftp. Полная инструкция GridFTP Admin Guide.
Создаем файл /etc/xinetd.d/gridftp и редактируем его.
root@GlobusNode:/etc/grid-security# vim /etc/xinetd.d/gridftp
service gsiftp
{
instances = 100
socket_type = stream
wait = no
user = root
env += GLOBUS_LOCATION=/sandbox/globus-5
env += LD_LIBRARY_PATH=/sandbox/globus-5/lib
server = /sandbox/globus-5/sbin/globus-gridftp-server
server_args = -i
log_on_success += DURATION
disable = no
}
Добавляем в конец файла /etc/services информацию о новом сервисе – gsiftp.
root@GlobusNode:/etc/grid-security# 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
myproxy-server 7512/tcp # Myproxy server
gsiftp 2811/tcp
Перезапускаем xinetd и проверяем работоспособность сервиса.
root@GlobusNode:/etc/grid-security# /etc/init.d/xinetd reload
Reloading internet superserver configuration: xinetd.
root@GlobusNode:/etc/grid-security# netstat -an | grep 2811
tcp 0 0 0.0.0.0:2811 0.0.0.0:* LISTEN
1.6. Настройка GRAM5
Приступим к установке GRAM5 – менеджера вычислительных ресурсов. Можно настроить несколько различных Локальных Менеджеров Ресурсов (LRM) с которыми будет работать GRAM, но в этом руководстве будет рассмотрен лишь простой "fork" jobmanager, отвечающий за запуск задачи на локальной машине. Информация о других LRM и более подробные инструкции могут быть найдены тут GRAM5 Admin Guide.
Создаем файл /etc/xinetd.d/gsigatekeeper и редактируем его.
root@GlobusNode:/etc/grid-security# vim /etc/xinetd.d/gsigatekeeper
service gsigatekeeper
{
socket_type = stream
protocol = tcp
wait = no
user = root
env = LD_LIBRARY_PATH=/sandbox/globus-5/lib
server = /sandbox/globus-5/sbin/globus-gatekeeper
server_args = -conf /sandbox/globus-5/etc/globus-gatekeeper.conf
disable = no
}
Добавляем в конец файла /etc/services информацию о новом сервисе – gsigatekeeper.
root@GlobusNode:/etc/grid-security# 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
myproxy-server 7512/tcp # Myproxy server
gsiftp 2811/tcp
gsigatekeeper 2119/tcp
Перезапускаем xinetd и проверяем работоспособность сервиса.
root@GlobusNode:/etc/grid-security# /etc/init.d/xinetd reload
Reloading internet superserver configuration: xinetd.
root@GlobusNode:/etc/grid-security# netstat -an | grep 2119
tcp 0 0 0.0.0.0:2119 0.0.0.0:* LISTEN
Gatekeeper теперь автоматически запускается с xinetd, и сконфигурирован, чтобы принимать и перенаправлять задачи fork jobmanager’у. Протестируем работоспособность:
quser@GlobusNode:~$ myproxy-logon -s globusnode Enter MyProxy pass phrase:
A credential has been received for user quser in /tmp/x509up_u1001.
quser@GlobusNode:~$ globusrun -o -r globusnode '&(executable=/bin/hostname)'
GlobusNode
quser@GlobusNode:~$ globusrun -o -r globusnode '&(executable=/usr/bin/whoami)' quser
2. Настройка второй машины
2.1. Настройка системы
Сделаем копию ранее скопированной на шаге 1.2 виртуальной машины с уже установленным Globus Toolkit’ом, и настроим эту машину как клиента, с которого будем передавать задачи на сервер.
На этой машине также необходимо создать пользователя QuickStart User с логином quser. Затем, в настройках сети необходимо поменять сетевое имя машины на GlobusNode2. Соответственно должен быть переписан файл /etc/hosts.
Помимо этих изменений на обоих машинах следует внести в файл /etc/hosts IP-адреса другой машины, чтобы они могли найти друг друга. Узнать IP можно с помощью команды ifconfig
root@GlobusNode2:/# vim /etc/hosts
127.0.0.1 GlobusNode2 localhost
127.0.1.1 GlobusNode2.WORKGROUP GlobusNode2.localdomain
.........
192.168.231.147 Globusnode
Проверим, что машины видят друг друга:
root@GlobusNode:/# ping globusnode2
root@GlobusNode2:/# ping globusnode
2.3. Настройка безопасности на второй машине
Настройка безопасности на второй машине сводится к копированию созданных SimpleCA файлов. Необходимо скопировать папку $GLOBUS_LOCATION/share/certificates с первой машины на вторую:
globus@GlobusNode2:~$ scp -r globusnode:/sandbox/globus-5/share/certificates /sandbox/globus-5/share
The authenticity of host 'globusnode (192.168.231.147)' can't be established.
RSA key fingerprint is cc:ca:74:65:34:86:6a:43:f8:d7:f5:0b:b1:02:35:34.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'globusnode,192.168.231.147' (RSA) to the list of known hosts.
globus@globusnode's password:
d58f5223.signing_policy 100% 1337 1.3KB/s 00:00
globus-host-ssl.conf.d58f5223 100% 2709 2.7KB/s 00:00
d58f5223.0 100% 924 0.9KB/s 00:00
grid-security.conf.d58f5223 100% 1324 1.3KB/s 00:00
globus-user-ssl.conf.d58f5223 100% 2809 2.7KB/s 00:00
Теперь создадим на первой машине (GlobusNode) сертификат для второй машины:
root@GlobusNode:/home/globus# myproxy-admin-addservice -c "globusnode2" -l quser
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
To sign the request
please enter the password for the CA key:
The new signed certificate is at: /root/.globus/simpleCA//newcerts/03.pem
using storage directory /var/myproxy
Credential stored successfully
Certificate subject is:
/O=Grid/OU=GlobusTest/OU=simpleCA-globusnode/CN=globusnode2
root@GlobusNode2:/home/globus# myproxy-retrieve -s globusnode -k "globusnode2" -l quser Enter MyProxy pass phrase:
Credentials for quser have been stored in
/etc/grid-security/hostcert.pem and
/etc/grid-security/hostkey.pem.
root@GlobusNode2:/home/globus# ls -l /etc/grid-security/*.pem -rw------- 1 root root 843 Май 31 14:30 /etc/grid-security/hostcert.pem
-rw------- 1 root root 887 Май 31 14:30 /etc/grid-security/hostkey.pem
root@GlobusNode2:/home/globus# myproxy-destroy -s globusnode -k "globusnode2" -l quser MyProxy credential 'globusnode2' for user quser was successfully removed.
Теперь у второй машины есть все необходимые сертификаты. Последний шаг – создать grid-mapfile и вписать в него то же, что и на первой машины. Это необходимо для корректной авторизации машин:
root@GlobusNode2:~# vim /etc/grid-security/grid-mapfile
"/O=Grid/OU=GlobusTest/OU=simpleCA-globusnode/CN=QuickStart User" quser
2.3. Настройка второй машины: GridFTP
Установка GridFTP идентична установке на первой машине, описанной в пункте 1.5. Вот команды, которые необходимо выполнить:
root@GlobusNode2:/# vim /etc/xinetd.d/gridftp
root@GlobusNode2:/# vim /etc/services
root@GlobusNode2:/# /etc/init.d/xinetd reload
Reloading internet superserver configuration: xinetd.
2.4. Настройка второй машины: GRAM5
Настраивать GRAM5 не надо – он уже должен работать корректно. Протестируем:
quser@GlobusNode2:~$ myproxy-logon -s globusnode
Enter MyProxy pass phrase:
A credential has been received for user quser in /tmp/x509up_u1001.
quser@GlobusNode2:~$ globus-job-submit globusnode /bin/date https://globusnode:38129/16145810981669093481/18380602028524064396/
quser@GlobusNode2:~$ globus-job-get-output https://globusnode:38129/16145810981669093481/18380602028524064396/ Tue May 31 14:33:25 MSD 2011
quser@GlobusNode2:~$ globus-job-run globusnode /usr/bin/whoami quser
quser@GlobusNode2:~$ globusrun -s -r globusnode '&(executable=/bin/hostname)' GlobusNode
quser@GlobusNode2:~$ globusrun -s -r globusnode '&(executable=gsiftp://globusnode2/bin/hostname)'
GlobusNode
quser@GlobusNode2:~$ vim a.rsl
&(executable=gsiftp://globusnode2/bin/hostname)
quser@GlobusNode2:~$ globusrun -f a.rsl -s -r globusnode
GlobusNode
Обратите внимание, в чем разница в двух последних примерах. В первом запускается на выполнение файл, находящийся на сервере, а во втором – файл находящийся на машине-клиенте.
Синтаксис и примеры работы с GRAM можно найти тут GRAM usage scenarios, либо в помощи по каждой команде соответственно (например, globusrun -help)
Еще примеры команд для добавления задач можно посмотреть тут: GRAM5 User Guide
|