Grid-вычисления. Изучение особенностей платформы Globus Toolkit

Работа добавлена: 2016-11-25





Оглавление

Введение

Grid-вычисления — это форма распределённых вычислений, в которой «виртуальный суперкомпьютер» представлен в виде кластера соединённых с помощью сети слабосвязанных компьютеров, работающих вместе для выполнения огромного количества заданий (операций, работ). Эта технология применяется для решения научных, математических задач, требующих значительных вычислительных ресурсов. Распределённые илиgrid-вычисления в целом являются разновидностью параллельных вычислений, которые основываются на обычных компьютерах (со стандартными процессорами, устройствами хранения данных, блоками питания и т. д.) подключенных к сети (локальной или глобальной) при помощи обычных протоколов, напримерEthernet. В то время как обычный суперкомпьютер содержит множество процессоров, подключенных к локальной высокоскоростной шине. Основным преимуществом распределённых вычислений является то, что отдельная ячейка вычислительной системы может быть приобретена как обычный неспециализированный компьютер. Таким образом можно получить практически те же вычислительные мощности, что и на обычных суперкомпьютерах, но с гораздо меньшей стоимостью.

В настоящее время существует целый ряд программного обеспечения, позволяющего развернутьgrid на базе существующей сети компьютеров, как, например:Unicore,GlobusToolkit,Hadoop,BOINC и прочие. В рамках данной работы будет рассмотрено развертываниеgrid-вычислений на платформеGlobusToolkit 5.0.3, которая была признана ведущими производителями программного обеспечения стандартом де-факто дляgrid.

Постановка задачи

В рамках данной работы могут быть выделены следующие подзадачи:

  1. Изучение особенностей платформыGlobusToolkit 5.0.3
  2. Развертывание инфраструктурыgrid’a
  3. Настройка кластерного ПО
  4. Тестированиеgrid’a

Изучение особенностей платформыGlobusToolkit 5.0.3

GlobusToolkit представляет собой набор модулей для построения виртуальной организации распределенных вычислений. Каждый модуль определяет интерфейс, используемый высокоуровневыми компонентами, и имеет реализацию для различных сред выполнения. Вкупе они образуют виртуальную машинуGlobus. Все модули могут быть разбиты на следующие группы (рис. 1):

Рис. 1. АрхитектураGlobusToolkit 5.0.3

модулибезопасности,

модули управления данными,

модулиуправления процессами,

• общийRuntime.

Управление процессами

GlobusToolkit 5 предоставляет доступ к вычислительным процессам при помощи компонентаGRAM5 (GridResourceAllocationandManagement). Благодаря нему можно добавлять, контролировать, отслеживать и отменять задания вgride. Однако, фактически,GRAM5 не является планировщиком заданий – это набор сервисов и клиентов для взаимодействия с целым рядом локальных планировщиков заданий посредством стандартного текстового протокола.

GRAM не является чем-то цельным, он состоит из компонентов, причем как на протокольном, так и на программном уровне реализации. Такой компонентный подход позволяет скрыть все подробности реализации и абстракции для простоты работы.

Сервисная модель включает в себя два демона:

Чтобы на данном вычислительном узле можно было удаленно запускать на исполнение программы, на нем должен выполняться специальный процесс называемыйGatekeeper. Пользовательские приложения формируют запросы кGRAM на специальном языкеRSL (ResourceSpecificationLanguage).Gatekeeper работает в привилегированном режиме и выполняет следующие функции:

После того, какGatekeeper выполнит свою работу,JobManager запускает задание (процесс или несколько процессов) и производит его дальнейший мониторинг, сообщая клиенту об ошибках и других событиях.Gatekeeper запускает только одинJobManager для каждого пользователя, который управляет всеми заданиями данного пользователя. Когда заданий больше не остается,JobManager завершает работу.

С точки зрения безопасности,GRAM5 является очень защищенным компонентом. Протоколы передачи данных основаны наSSL. После однократной авторизации, каждая копия задания выполняется под локальнымPOSIX-пользователем. При этом ограничиваются возможность мониторинга и контролирования выполнения задачи для тех, кто авторизован лишь локально.GRAM берет на себя задачу протоколирования всех событий и ведет полную историю действий задания и критических системных операций.

GRAM5 обеспечивает высокопроизводительную передачу файлов  между комьютерными ресурсами и внешними накопителями информации, как до так и во время выполнения задания. Доступ к информации можно получить черезHTTP,GASS иGridFTP.

Управление данными

Управление данными вGlobusToolkit 5 осуществляется посредством инструментовGridFTP. ПротоколGridFTP предоставляет безопасную, устойчивую к ошибкам, быструю и эффективную передачу данных (особенно – в больших объемах).

Globus Toolkit предоставляет:

Для доступа к данным используется клиент, именуемыйglobus-url-copy (хотя существуют также и сторонние разработки с интерактивным интерфейсом). Этот клиент позволяет получить доступ к информации через различные протоколы (hhtp,https,ftp,gsiftp,file). Клиент представляет собой простую командую строку, которая может являться элементом других сценариев, например:

globus-url-copy gsiftp://remote.host.edu/path/to/file file:///path/on/local/host

ПомимоGridFTP в набор для управления данными вполне входит такой компонент, какRLS (ReplicaLocationService). Как видно из названия, сервис предназначен для контроля за расположением дубликатов данных, т.е. для помощи в определении физического расположения файла. Это позволяет получать доступ к различным копиям одного и того же файла (например, выбирать файл, расположенный на ближайшем сервере)

Рис. 2. Принцип работыRLS

Как видно из рисунка 2, файл, имеющийлогическое имяXYZ на физических носителях будет иметь различныефизические имена.

Безопасность

В основе безопасности вGlobusToolkit 5 лежит принципы авторизации и сертификации (X.509) , реализуемые с помощью компонентов защиты. Они позволяет контролировать действия всех пользователей вgride, защищая передаваемые данные. Также эти компоненты поддерживают редактирование полномочий пользователей, сохранение информации о членстве в группах доступа.

В состав инструментов безопасности входят следующие компоненты:

GridSecurityInfrastructure (GSI)– компонент, предоставляющийAPI для аутентификации, авторизации и сертификации.GSI основана на надежной и широко используемой инфраструктуре криптографии с открытым ключом (PublicKeyInfrastructurePKI). В качестве идентификаторов пользователей и ресурсов вGSI используются цифровые сертификатыX.509. В работе с сертификатамиX.509 и в процедуре выдачи/получения сертификатов задействованы три стороны:

  1. Центр Сертификации (CertificateAuthorityCA) – специальная организация, обладающая полномочиями выдавать (подписывать) цифровые сертификаты.В GT5 эта задача выполняется компонентом SimpleCA.
  2. Подписчик – это человек или ресурс, который пользуется сертификационными услугамиCA.SimpleCA включает в сертификат данные, предоставляемые подписчиком (имя, организация и пр.) и ставит на нем свою цифровую подпись.
  3. Пользователь – это человек или ресурс, полагающийся на информацию из сертификата при получении его от подписчика.Пользователи могут принимать или отвергать сертификаты, подписанные CA.

ВGlobusToolkit используются два типа сертификатовX.509:

  1. Сертификат пользователя (UserCertificate) – этот сертификат должен иметь каждый пользователь, работающий сgrid-системой. Сертификат пользователя содержит информацию об имени пользователя, организации, к которой он принадлежит, и центре сертификации, выдавшем данный сертификат.
  2. Сертификат узла (HostCertificate) – это сертификат должен иметь каждый узел (ресурс)grid-системы. Сертификат узла аналогичен сертификату пользователя, но в нем вместо имени пользователя указывается доменное имя конкретного вычислительного узла.

Для управления сертификатамиX.509 и полномочиями вGT5 используется компонентMyProxy.MyProxy сочетает в себе онлайн репозиторий учетных записей и онлайн Центр Сертификации, позволяющие пользователям безопасно получить доступ к своим учетным записям где и когда потребуется. Пользователь с помощью командыmyproxy-logon аутентифицируется и получает права доступа, включающие в себяCA-сертификат и Списки Аннулированных Сертификатов (CRLs).

Последним компонентом безопасности являетсяGSI-OpenSSH – модифицированныйOpenSSH, в котором добавлена работа с прокси-сертификатамиX.509 для обеспечения доступа к удаленным системам и передачи данных без ввода паролей, полагаясь на достоверныйproxycredential для аутентификации (это комбинация прокси-сертификата и отвечающего ему ключа).

Структураgrid’а с точки зрения запущенных сервисов

Рис.3 Структура серверной машины

На серверной машине с помощью службыxinetdбудут запущены демоныgsiftp,gsigatekeeper иmyproxy-server, которые будут обеспечивать сетевое взаимодействие. С помощью службыinetd будут запускаться все сервисы кластерного ПО, настроенные на серверной машине:pbs_server,pbs_mom иpbs_sched. Также на серверной машине будут установленыSimpleCA,OpenMPI, а также необходимые для работы платформы компонентыGlobusToolkit.

Рис.4 Структура клиентской машины

На клиентской машине с помощью службыxinetdбудут запущен только демонgsiftp, которые необходим для обеспечения доступа к данным. С помощью службыinetd будет запускаться сервисpbs_mom, позволяющий использовать машину в качестве вычислительного узла. Также, как и на серверной машине, будут установленыSimpleCA,OpenMPI,GRAM5,MyProxy и другие компонентыGlobusToolkit.

УстановкаGlobusToolkit 5.0.3

Установка на первую машину

GlobusToolkit  является программным обеспечением с открытым исходным кодом, написанным наC. На официальном сайтеTheGlobusAlliance (http://www.globus.org) доступны все выпущенные версииToolkita, в том числе и последние сборки.GlobusToolkit 5.0.3 может быть установлен наAppleOSX,RedHat,FedoraCore,Debian,SuSE,FreeBSD иSolaris (или бинарно совместимые с ними системы). Для развертыванияgrid будут использоваться машины с операционной системойDebian 6Squeeze.

Прежде чем приступить к установке и сборке самогоGlobusToolkit 5.0.3, необходимо убедиться, что на машине установлены необходимые программы и библиотеки, а именно:

Openssl 0.9.7+

Libssl (development + shared libraries)

Zlib (development + shared libraries)

gcc

g++

tar

sed

make

vim (можно заменить любым другим текстовым редактором)

xinetd (необходима для конфигурирования демонов)

ssh

После того, как система будет готова к установке, необходимо скачать и распаковать инсталлятор. Затем, сконфигурировать его и запустить сборку.

globus@GlobusNode:~$tarxjfgt5.0.3-all-source-installer.tar.gz

globus@GlobusNode:~$cd gt5.0.3-all-source-installer

globus@GlobusNode:/gt5.0.3-all-source-installer$./configure

--prefix=/sandbox/globus/

checking build system type... i686-pc-linux-gnu

configure: creating ./config.status

config.status: creating Makefile

root@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.

root@GlobusNode:~/gt5.0.3-all-source-installer$make install

/sandbox/globus-5//sbin/gpt-postinstall

...

..Done

Теперь для удобства дальнейшей работы добавим подключение командGlobusToolkit в файл /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

После сборки Globus Toolkit’a машина готова к конфигурации. В этот момент решается, будет ли данная машина серверным узлом или клиентом. В зависимости от этого идет дальнейшая конфигурация. Сделаем копию виртуальной машины, и из этой копии уже потом будем настраивать вторую машину.

Настройка первой машины может быть разбита на следующие этапы:

  1. НастройкаSimple-CA
  2. НастройкаMyProxyсервера
  3. Настройка GridFTP
  4. Настройка GRAM5

Этап 1. НастройкаSimple-CA

На данном этапе будет настроена аутентификация и авторизация пользователей с помощью сертификатов. Потребуются сертификаты как для пользователей, так и для сервисов. Для сервисов они будут совпадать с сертификатами хоста. Для создания сертификатов будет использоватьсяSimpleCA, которая поставляется вместе с Globus Toolkit.

Прежде чем приступить к настройке сертификатов необходимо проверить файл /etc/hosts.

root@GlobusNode:/#vim /etc/hosts

127.0.0.1       GlobusNode .........

Главное – чтобы после 127.0.0.1 стояло GlobusNode без указаний на рабочую группу, иначе в дальнейшем может возникнуть конфликт имен. Можно приступать к установке и настройкеSimpleCA.Запускаем скрипт автоматической конфигурации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: <CApassword>

Confirm password: <CApassword>

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

The hostcert is located at /sandbox/globus-5/etc/hostcert.pem

В этот момент выполнение кода приостановится. Нужно будет ввести ‘y’ и нажать Enter для продолжения. В этот момент должен возникать запрос на подтверждение создания SimpleCA, но из-за ошибки в скрипте вопрос не выводится.

SimpleCA установилась и был выписан сертификат для нашей машины. Проверяем, создались ли необходимые файлы:

root@GlobusNode:~#ls /root/.globus/

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

Все необходимые файлы успешно созданы. Последним шагом на данном этапе будет копирование подписанных и доверенных сертификатов в /etc/grid-security. Это рабочая директория, в которой будут храниться все необходимые для аутентификации сертификаты:

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/

Этап 2. НастройкаMyProxy сервера

На данном этапе будет создан и сконфигурированMyProxy сервер наGlobusNode. Он используется для хранения и выдачи сертификатов пользователей и сервисов. Копируем из директорииGlobus’а конфигурационный файл по умолчанию и редактируем его:

root@GlobusNode:~#cp $GLOBUS_LOCATION/share/myproxy/myproxy-server.config /etc

root@GlobusNode:~#vim /etc/myproxy-server.config

Необходимо раскомментировать в файле /etc/myproxy-server.config строки 18-24 (т.е. убрать символ решетки в начале следующих строк):

accepted_credentials  "*"

authorized_retrievers "*"

default_retrievers    "*"

authorized_renewers   "*"

default_renewers      "none"

authorized_key_retrievers "*"

default_key_retrievers "none"

Теперь необходимо добавить в файл /etc/services информацию о новом сервисе –myproxy-server. Воспользуемся существующим файлом модификации и допишем его в конец файла /etc/services.

root@GlobusNode:~#cat

$GLOBUS_LOCATION/share/myproxy/etc.services.modifications >> /etc/services

Проверяем результат выполненной команды:

root@GlobusNode:~#tail /etc/services

fido            60179/tcp   # fidonet EMSI over TCP

# Local services

myproxy-server  7512/tcp    # Myproxy server

Сервис успешно был добавлен в список. Теперь необходимо создать конфигурационный файл службыmyproxy-server. Также воспользуемся заготовкой файла, поставляемой вместе сGlobusToolkit и скопируем ее в директорию /etc/xinetd.d/

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 #Протокол -TCP

wait         =no #Сервис работает в многопоточном режиме

user         =root #Сервис запускается от пользователяroot

server       = /sandbox/globus-5/sbin/myproxy-server #Путь к исполнимому файлу

env          = GLOBUS_LOCATION=/sandbox/globus-5

LD_LIBRARY_PATH=/sandbox/globus-5/lib #Переменныесреды

 disable      =no #Сервис активен

}

Перезапускаем службу xinetd и проверяем работоспособность сервисаmyproxy-server.

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 сервер запущен и успешно прослушивает указанный в /etc/services порт - 7512. По этому порту к нему будут выполняться подключения. Теперь необходимо создать сертификат для тестового пользователя. Создаем в системе реального пользователя с полным именемQuickStartUserи логиномquser. При создании сертификата будет необходимо указать два пароля. Первый - это пароль, который будет в дальнейшем использоваться для авторизации пользователяquser (минимум 6 символов), а второй – пароль, который был указан при созданииSimpleCA для доступа к ней.

root@GlobusNode:~ #myproxy-admin-adduser -c "QuickStart User"

-l quser

Enter PEM pass phrase: <например, qpassword>

Verifying - Enter PEM pass phrase: <qpassword>

To sign the request

please enter the password for the CA key: <пароль от SimpleCA>

/O=Grid/OU=GlobusTest/OU=simpleCA-globusnode/CN=QuickStart

User

SimpleCA подписала для пользователяquser сертификат и поместила его в свою директорию. Последний шаг – создаем файл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

Этап 3. НастройкаGridFTP

Теперь, когда уже настроена аутентификация, можно приступать к сервисам. Сначала установимGridFTP – сервис для передачи данных по протоколуgsiftp

Создаем новый файл/etc/xinetd.d/gridftpи редактируем его, подобно файлуmyproxy-server.

root@GlobusNode:/etc/grid-security#vim /etc/xinetd.d/gridftp

service gsiftp

{

instances      = 100 #Максимумсоединений - 100

socket_type    = stream #Типсокета -поток

wait           =no #Сервис работает в многопоточном режиме

user           =root #Сервис запускается от пользователя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 #Запускаетсякак inetdсервис

log_on_success += DURATION #Параметрведенияжурнала

disable        =no #Сервис активен

}

Добавляем в конец файла /etc/services информацию о новом сервисе -gsiftp.

root@GlobusNode:/etc/grid-security#vim /etc/services

# Local services

myproxy-server  7512/tcp  # Myproxy server

gsiftp          2811/tcp

Перезапускаем службу xinetd и проверяем работоспособность сервисаgsiftp.

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

Сервис работает и успешно слушает порт 2811.

Этап 4. НастройкаGRAM5

Приступим к установкеGRAM5 – менеджера вычислительных ресурсов. Можно настроить несколько различных Локальных Менеджеров Ресурсов (LRM) с которыми будет работатьGRAM,   но в этом руководстве будет рассмотрен лишь простой "fork"jobmanager, отвечающий за запуск задачи на локальной машине.

Создаем файл/etc/xinetd.d/gsigatekeeperи настраиваем новую службу.

root@GlobusNode:/etc/grid-security#vim /etc/xinetd.d/gsigatekeeper

service gsigatekeeper

{

   socket_type = stream #Типсокета -поток

   protocol =tcp #Протокол -TCP

wait =no #Сервис работает в многопоточном режиме

user =root #Сервис запускается от пользователя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

# 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, слушает порт 2119, и сконфигурирован, чтобы принимать и перенаправлять задачиforkjobmanager’у.

Установка на вторую машину

Сделаем копию ранее скопированной виртуальной машины с уже установленным Globus Toolkit’ом, и настроим эту машину как клиента, с которого будем передавать задачи на сервер. На этой машине также необходимо создать пользователяQuickStartUser с логиномquser. Затем, в настройках сети необходимо поменять сетевое имя машины наGlobusNode2. Соответственно должен быть переписан файл/etc/hosts.

Помимо этих изменений на обоих машинах следует внести в файл/etc/hostsIP-адреса другой машины, чтобы они могли найти друг друга.

root@GlobusNode2:/#vim /etc/hosts

127.0.0.1       GlobusNode2 192.168.231.147Globusnode

Проверим, что машины видят друг друга:

root@GlobusNode:/#ping globusnode2root@GlobusNode2:/#ping globusnode

Этап 1. Настройка безопасности на второй машине

Настройка безопасности на второй машине сводится к копированию созданныхSimpleCA$GLOBUS_LOCATION/share/certificates с первой машины на вторую:

globus@GlobusNode2:~$scp -r globusnode:/sandbox/globus-5/share/certificates /sandbox/globus-5/shared58f5223.signing_policy globus-host-ssl.conf.d58f5223 d58f5223.0 grid-security.conf.d58f5223 globus-user-ssl.conf.d58f5223100% 2809 2.7KB/s 00:00

Теперь создадим на первой машине (GlobusNode) сертификат для второй машины (globusnode2), но для пользователяquser:

root@GlobusNode:/home/globus#myproxy-admin-addservice

-c "globusnode2" -l quser/O=Grid/OU=GlobusTest/OU=simpleCA-globusnode/CN=globusnode2

Данный сертификат был добавлен в папку /root/.globus/simpleCA/ и отвечает за возможность машины с именемglobusnode2 выполнить вход под пользователемquser. Теперь получим этот сертификат на второй машине с помощью командыmyproxy-retrieve, указав в качестве параметров имя сервера, имя нашей машины и имя пользователя, для которого выписан сертификат.

root@GlobusNode2:/home/globus#myproxy-retrieve -s globusnode

/etc/grid-security/hostkey.pem.

Разрываем соединение сMyProxy, так как оно больше не нужно.

root@GlobusNode2:/home/globus#myproxy-destroy -s globusnode

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. Настройка второй машины:GridFTP

УстановкаGridFTP идентична установке на первой машине, описанной в этапе 3. Следующие команды необходимо выполнить:

root@GlobusNode2:/#vim /etc/xinetd.d/gridftp

root@GlobusNode2:/#vim /etc/services

root@GlobusNode2:/#/etc/init.d/xinetd reload

Reloading internet superserver configuration: xinetd.

Установка менеджера распределенных ресурсов

TORQUE – менеджер распределенных ресурсов, являющийся одной из версийPBS (PortableBatchSystem). Он используется для обеспечения удобного доступа к вычислительным ресурсам и служит заменой локальному планировщику заданий. Ввиду легкости установки и настройкиTORQUE можно считать идеальным вариантом для установки вgride в качестве менеджера ресурсов. Вкупе с OpenMPI и с GlobusToolkit 5 он позволит распараллеливать задачи между несколькими машинами, являющимися элементамиgrida, и соединенными при помощи обычных сетевых протоколов.

АрхитектураTORQUE следующая: На сервере работают демоныpbs_server (координирует работу всего TORQUE),pbs_sched (планировщик заданий, выделяет под конкретную задачу имеющиеся ресурсы) иpbs_mom (демон вычислительного узла,  отвечающий за непосредственный запуск задачи на конкретном узле. На машинах-клиентах в зависимости от целей устанавливаютсяpbs_mom(если это должен быть один из вычислительных узлов) и/илиpbs_client(если это клиентская машина, с которой будут запускаться задачи).

1. Настройка серверной машины

Скачиваем дистрибутив с сайтаClusterResources и распаковываем его:

globus@GlobusNode:~$tar xzvf torque-3.0.1.tar.gzglobus@GlobusNode:~$cd torque-3.0.1/

Конфигурируем и собираемTORQUE. Эти действия необходимо выполнять с правами суперпользователя.

root@GlobusNode:/home/globus/torque-3.0.1#./configureroot@GlobusNode:/home/globus/torque-3.0.1#make......

root@GlobusNode:/home/globus/torque-3.0.1#

Конфигурируем pbs_server: Для этого используем конфигурационный скрипт (предварительно остановив pbs сервер командойqterm -t quick).

root@GlobusNode:~$qterm -t quickroot@GlobusNode:~$......

Запускаем все необходимые на серверной машине службы:pbs_server,pbs_mom иpbs_sched.

root@GlobusNode:~$pbs_serverroot@GlobusNode:~$pbs_momroot@GlobusNode:~$pbs_sched

Для удобства работы добавляем службы TORQUE в автоматический запуск в init.d. Тогда они будут стартовать вместе с системой и их не придется запускать вручную. Для каждой из служб копируем конфигурационный файл из contrib/init.d/ в /etc/init.d/, а затем обновляем информацию о службе с параметрами по умолчанию.

root@GlobusNode:~$cpcontrib/init.d/debian.pbs_mom /etc/init.d/pbs_momroot@GlobusNode:~$cpcontrib/init.d/debian.pbs_sched /etc/init.d/pbs_schedroot@GlobusNode:~$cpcontrib/init.d/debian.pbs_server/etc/init.d/pbs_serverroot@GlobusNode:~$update-rc.dpbs_momdefaultsroot@GlobusNode:~$update-rc.dpbs_scheddefaultsroot@GlobusNode:~$update-rc.dpbs_serverdefaults

Теперь необходимо указать какие машины будут использоваться в качестве вычислительных нодов. Для этого необходимо добавить информацию о нодах в файл /var/spool/torque/server_priv/nodes

root@GlobusNode:~$vim /var/spool/torque/server_priv/nodes##http://www.clusterresources.com/torquedocs/nodeconfi...globusnode2

root@GlobusNode:~$qterm -t quickroot@GlobusNode:~$pbs_server

2. Настройка вычислительных узлов

На вычислительном узле необходимо сконфигурировать демоныpbs_mom иpbs_clientДля начала соберем необходимые пакеты:

root@GlobusNode:/home/globus/torque-3.0.1#make packages......

and executed on your production machines. Use --helpforoptions.

Теперь скопируем созданные пакеты на вторую машину с помощью командыscp.

root@GlobusNode:/#scp torque-package-mom-linux-i686.sh

globusnode2:/tmp/.

torque-package-mom-linux-i686.sh 100% 602KB 601.5KB/s 00:00

root@GlobusNode:/#scp torque-package-clients-linux-i686.sh

globusnode2:/tmp/.

torque-package-clients-linux-i686.sh 100% 472KB 472.3KB/s 00:00

С помощью командыssh также удаленно установим скопированные пакеты:

root@GlobusNode:/home/globus/torque-3.0.1#ssh globusnode2 /tmp/torque-package-mom-linux-i686.sh --install

root@globusnode2's password:

Installing TORQUE archive...

Done.

root@GlobusNode:/home/globus/torque-3.0.1#ssh globusnode2 /tmp/torque-package-clients-linux-i686.sh --install

root@globusnode2's password:

Installing TORQUE archive...

Done.

Добавимpbs_mom в автозапуск, как это было сделано на серверной машине:

root@GlobusNode:~$scp contrib/init.d/debian.pbs_mom

root@GlobusNode2:~$update-rc.d pbs_mom defaults

root@GlobusNode2:~$ pbs_mom......

......

Оба нода успешно функционируют, их статус –free, т.е «свободен», готов к вычислениям. Но прежде, чем приступить к вычислениям, необходимо настроить права доступа.

3. Права доступа.

Следующим шагом будет выдача клиент-машине прав на добавление задач. Это можно сделать, выполнив на сервере командуqmgr со следующим параметром:

root@GlobusNode:/#qmgr -c 'set server submit_hosts =

globusnode2'

Теперь необходимо разрешить командеscp копирование результатов вычисления на машину пользователя. Поскольку все вычисления будут производиться от пользователяquser, то для него и будет создан доступ без пароля. Необходимо сгенерировать доверенный ключ и скопировать его на вычислительный узел. Проще всего это сделать командамиssh-heygen иssh-copy-id.

quser@GlobusNode:~$ssh-keygen -t rsaEnter file in which to save the key (/home/quser/.ssh/id_rsa): <жмемEnter passphrase (empty for no passphrase): <жмемEnter same passphrase again: <жмем...

quser@GlobusNode:~$to make sure we haven't added extra keys that you weren't expecting.

Теперь скопируем этот же ключ и на серверную машину, чтобы можно было помещать результаты вычислений в папку /home/quser/.globus/job/… на сервере, из которой они потом уже будут пересылаться на вторую машину.

quser@GlobusNode:~/.globus/job/globusnode$ssh-copy-id globusnodeto make sure we haven't added extra keys that you weren't expecting.

4. Установкаjobmanager-pbs.

Теперь, когда TORQUE корректно установлен, можно приступить к конфигурированию Globus Toolkit. Оно сводится к сборке пакета gram5-pbs и установке его.

globus@GlobusNode:~$globus@GlobusNode:~/gt5.0.3-all-source-installer$make

gram5-pbs

Экспортируем путь, куда был установлен TORQUE и обновляем пакетGlobusToolkit. Наши настройки не будут удалены – в результате командыgpt-postinstall -force лишь  будет перепроверен набор пакетов и установлен новый –gram5-pbs.

globus@GlobusNode:~/gt5.0.3-all-source-installer$export PBS_HOME=/var/spool/torque

globus@GlobusNode:~/gt5.0.3-all-source-installer$

gpt-postinstall –force......

Проверяем, правильно ли установилсяgram5-pbs:

globus@GlobusNode:~$ls -l /sandbox/globus-5/etc/

grid-services/

-rw-r--r-- 1 globus globus 151 Май 31 18:33 jobmanager-pbs

Jobmanager-pbs успешно установлен.

Тестирование grida

Прежде чем приступить к тестированиюgrida необходимо авторизоваться на сервере. Дляэтогозаходимподпользователемquserивыполняемкоманду:

A credential has been received for user quser in /tmp/x509up_u1001.

Для добавления задач в Globus Toolkit 5.0.3 предусмотрены следующие команды:

Самая простая из них -globus-job-runglobus-job-run <сервис выполнения>  <путь к исполнимому файлу>

quser

GlobusNode

Если задача выполняется длительное время, то есть возможность добавить задачу в очередь и продолжить работу в консоли, а впоследствии получить результат вычислений. Для этого будет удобно воспользоваться командойglobus-job-submit, которая после выполнения возвращает идентификатор задачи.

quser@GlobusNode2:~$quser@GlobusNode2:~$Tue May 31 14:33:25 MSD 2011

Также могут быть полезными командыglobus-job-status (возвращает статус задачи),globus-job-cancel (удаляет задачу) иglobus-job-clean (удаляет задачу и все созданные в процессе выполнения файлы). Все они как иglobus-job-get-output в качестве параметра получают идентификатор задачи

Наиболее гибкой и функциональной является командаglobusrun. Она может передавать специальные файлы (скрипты) написанные с использованием разметкиRSL (Resource Specification Language), что позволит выполнять очень сложные команды. Также допускается употреблениеRSL-конструкций непосредственно в тексте команды (в этом случае конструкция окружается одинарными кавычками ‘’).Globusrun может работать какglobus-job-submit, т.е. возвращать идентификатор задачи, а может и дожидаться результатов выполнения, например:

quser@GlobusNode2:~$vim a.rsl&(executable=gsiftp://globusnode2/bin/hostname)

quser@GlobusNode2:~$globusrun -f a.rsl -s -r globusnodeGlobusNode

quser@GlobusNode2:~$globusrun -s -r globusnode ‘&(executable=/bin/hostname)’GlobusNode

СтандартRSL включает в себя более 30 различных атрибутов, позволяющих очень гибко настроить задачу. Так, например, можно задать набор входных файлов, перенаправить поток ошибок и вывода в файл, указать максимальное допустимое время выполнение, ограничить программу по вычислительным ресурсам, подключить дополнительные библиотеки, указать метод запуска программы и многое другое. Пример:

quser@GlobusNode2:~$cat b.rsl

&(rsl_substitution = (GRIDFTP_SERVER "gsiftp://globusnode2:2811"))

(executable=/bin/ls) (arguments=-alt /tmp/my_echo)

(file_stage_in = ($(GRIDFTP_SERVER)/bin/echo /tmp/my_echo))

(file_clean_up=/tmp/my_echo)

quser@GlobusNode2:~$globusrun -f b.rsl -s -r globusnode

quser@GlobusNode2:~$cat ~/stdout

-rw-r--r-- 1 quser quser 24228 Nov 21 07:16 /tmp/my_echo

quser@GlobusNode2:~$ls /tmp/my_echo

ls: /tmp/my_echo: No such file or directory

TORQUE как кластерное ПО предоставляет свой набор инструментов для управления задачами: основные команды этоqsub (для добавления задач),qdel (для удаления) иqstat (статистика кластера). Также есть свой набор переменных среды, который позволяет управлять выполнением задачи (контроль ресурсов, входных данных и т.п.). Однако, использованиеTORQUE в совокупности сGlobusToolkit позволяет перенаправлять задачи наTORQUE, с использованием командGlobus и синтаксисаRSL, что дает мощный инструментарий для работы с процессами (как то распараллеливание с помощьюMPI и работа с огромными объемами данных, под которые оптимизированGridFTP).

Чтобы передать задачуTORQUE при запуске задачи надо указатьjobmanager, который будет контролировать выполнение задачи. За выполнение локальных задач отвечаетjobmanager-fork (используется по умолчанию), а за переадресацию кластерному ПО –jobmanager-pbs.

quser@GlobusNode2:~$globus-job-run globusnode:/jobmanager-pbs gsiftp://globusnode2/home/quser/helloworld.outHello, World!

quser@GlobusNode2:~$globus-job-run globusnode: /jobmanager-pbs -np 2 -x '&(jobtype=mpi)' hellompi.out

Hello, MPI (rank: 0, count: 2)

Hello, MPI (rank: 1, count: 2)

quser@GlobusNode2:~$qstatJob id12.globusnode STDIN quser 00:00:00 C batch

Заключение

В результате проведенных исследований были изучены особенности платформыGlobusToolkit 5.0.3, возможности ее применения совестно с кластерным ПО (TORQUE 3.0.1). Был произведен анализ существующих статей и публикаций по тематике данной работы, в результате которого были разработаны методические указания, позволяющие эффективно развернутьgrid-вычисления.

На основании созданных методических указаний был развернутgrid на двух виртуальных машинах, который был протестирован, оптимизирован и подготовлен к дальнейшему расширению.

Список литературы

  1. Высокопроизводительные вычисления и кластерные системы.Обзор и сравнение: Globus Toolkit, Unicore, gLite. И. Парошинаhttp://www.parallelcomputing.ru/archives/412
  2. Gridhttp://ru.wikipedia.org/wiki/Грид
  3. ОбзорGlobus Toolkit

http://gridclub.ru/software/gt.html

  1. GlobusToolkit 5.0.3 Quickstart

http://www.globus.org/toolkit/docs/5.0/5.0.3/admin/quickstart/#quickstart

  1. TORQUE Administrator Guide

http://www.adaptivecomputing.com/resources/docs/torque/index.php

  1. GT 5.0.3 GRAM5: User’s Guidehttp://www.globus.org/toolkit/docs/5.0/5.0.3/execution/gram5/user




Похожие рефераты, которые будут Вам интерестны.

1. Изучение и выявление особенностей современных денег, их сущности и функций

2. Изучение особенностей работы медицинской сестры в профилактике постинъекционных осложнений

3. Показатели экстенсивности, методика их вычисления. Показатели интенсивности, методика их вычисления. Показатели соотношения, методика их вычисления. Показатели наглядности, методика их вычисления

4. Экспериментальное изучение особенностей психосоциальной работы с инвалидами, имеющими хронически протекающие психические заболевания

5. Разработка программного обеспечения для платформы Android

6. На примере конкретной задачи научиться создавать информационные системы для автоматизации складского учета на базе платформы «1С:Предприятие 8.2.»

7. Распределенные вычисления

8. Правила вычисления производных

9. Использование непрерывности функции для вычисления её пределов

10. ВЫЧИСЛЕНИЯ В ЭЛЕКТРОННЫХ ТАБЛИЦАХ С ПОМОЩЬЮ ВСТРОЕННЫХ ФУНКЦИЙ EXCEL