В статье обсуждается тестовая конфигурация использования распределенных вычислительных ресурсов.
В ряде источников в Internet [1, 5, 7, 8-11, 14] рассматриваются технологические особенности задач, возникающих при обработке данных измерений в экспериментах по физике высоких энергий. Подобные эксперименты предполагают запись и анализ огромного количества (до нескольких петабайт в год) данных, обладающих сложной структурой. В анализе этих данных будут принимать участие тысячи исследователей в разных странах мира. В этих условиях необходимой предпосылкой успешного выполнения физического анализа является максимально унифицированный доступ к распределенным вычислительным ресурсам. Необходимы специальные программные системы, которые позволили бы отечественным исследователям принимать участие в анализе разбросанных по планете измерительных данных.
Хотелось бы иметь набор программных средств, которые позволяли бы использовать географически и административно распределенные вычислительные ресурсы, не вникая во все архитектурные детали процесса вычислений. Одним из подходящих для этой цели средств является программное обеспечение, разработанное в рамках проекта Globus [3].
Проект Globus
Globus — совместный проект Аргон-нской национальной лаборатории и Института информации Университета Южной Калифорнии [3], цель которого — разработка инфраструктурных технологий, которые могут быть использованы при создании вычислительных сетей разного назначения. В рамках проекта предполагается, что вычислительные сети представляют собой долговременно существующую среду, которая позволяет прикладной программе объединять вычислительное оборудование, интеллектуальные инструменты, информационные ресурсы вне зависимости от их географического расположения. Ниже перечислены основные компоненты системы Globus.
- Globus Resource Allocation Manager (GRAM) — универсальный интерфейс к локальным средствам управления различными ресурсами (процессоры, устройства хранения, коммуникации и т.д.).
- Globus Security Infrastructure (GSI) — инфраструктура, которая обеспечивает общий интерфейс для различных локальных систем безопасности. Особенности этой системы включают однократную проверку прав пользователя за один сеанс работы, который может быть довольно сложным (передача файлов, запуск заданий и т.д.). Все последующие запросы на аутентификацию выполняются специальными прокси-серверами.
- Grid Information Service (GIS) — интегрированная информационная служба, которая позволяет получить информацию о состоянии распределенных ресурсов Globus. Служба базируется на использовании протокола LDAP.
- Global Access to Secondary Storage (GASS) — средства глобального доступа к вторичной памяти.
Предполагаемый сценарий использования Globus
Первоначальная регистрация. Чтобы стать пользователем системы Globus, необходимо зарегистрироваться как минимум на одном вычислителе распределенной системы, где установлено ПО Globus, и стать зарегистрированным пользователем конкретной реализации Globus.
Для этого следует выполнить команду grid-cert-request, по которой автоматически генерируется запрос на получение сертификата, отправляемый администрации системы Globus (по адресу ca@globus.org администратору проекта или локальному администратору сертификатов, скажем, ca@pnpi.spb.ru) на выдачу сертификата. После получения сертификата и записи его в файл ~/.globus/user-cert.pem можно считать себя зарегистрированным пользователем Globus.
Начало сеанса работы. Работа в распределенной среде начинается с запуска персонального прокси-сервера сертификатов (grid-proxy-init). Система Globus позволяет использовать один из двух протоколов: SSL или SSH [6]. После проверки пароля пользователю становятся доступными ресурсы Globus. Для того чтобы убедиться, что прокси-сервер был запущен ранее, можно воспользоваться командой
grid-proxy-info -all
У пользователя нет возможностей для неконтролируемого использования вычислительных ресурсов.
Запуск заданий. Пользователь готовит исходный текст задания на своем компьютере, а затем посредством инструментов системы Globus посылает задание на удаленный компьютер. Заметим, что вычислительная мощность, понимаемая только как производительность процессоров, может быть не самым главным соображением в пользу использования удаленных ресурсов: пользователя может заинтересовать удаленная база данных или уникальный комплект программ. Если связь с удаленным компьютером надежна, а задание по времени выполнения невелико, то на локальном компьютере можно использовать команду
globus-job-run remote.host.ru -stage script
где remote.host.ru — имя удаленного сервера; stage — параметр, который сообщает системе, что перед выполнением задания на удаленном сервере туда следует передать текст script и выполнить его, а сразу после выполнения удалить; script — имя программы, которая будет вызвана на удаленном сервере.
Все сообщения, которые задание направляет на устройства 1 и 2, фактически будут выданы на экран. При этом все обмены с удаленным сервером производятся с использованием компонента GSI, т.е. зашифровываются. В том случае, если задание будет выполняться долго, удобнее пользоваться другой командой с теми же параметрами
globus-job-submit remote.host.ru script
В ответ, после успешного запуска задания на удаленном компьютере, команда выведет строку, которая однозначно определяет задание (идентификатор задания). По этому идентификатору позднее можно послать запрос о состоянии задания. Вывод задания может быть записан в специальный буфер на том сервере, где оно выполняется; его можно прочесть командой globus-job-get-output. Чтобы не переполнять выделенные буферы, можно удалять вывод задания командой globus-job-clean, параметром которой служит строка идентификации задания, выведенная командой globus-job-submit. Узнать состояние задания можно посредством команды globus-job-status, а удалить задание из очереди — при помощи команды globus-job-cancel.
При использовании всех перечисленных команд, пользователь не обязан каждый раз вводить свой login и пароль на удаленном сервере. (Пользователя необходимо зарегистрировать на этом сервере, прописав его в файле grid-mapfile. — Прим. ред.)
Передача данных по команде globus-job-get-output выполняется с использованием средств GASS. Например, можно выдать команду
globus-job-submit pcfarm.pnpi.spb.ru /usr/pbs/bin/qstat
В ответ система ответит примерно следующей идентификационной строкой:
https://pcfarm.pnpi.spb.ru:1650/13920/ 981833487/
Далее можно воспользоваться командой
globus-job-status
В ответ будет получено что-то вроде строки DONE («выполнено»), после чего можно выдать команду
globus-job-get-output https://pcfarm.pnpi.spb.ru:1650/13920/ 981833487/
При этом все сообщения, которые направляются заданием на устройства 1 и 2, будут выведены на экран.
Передача файлов. Время от времени требуется передавать файлы, что можно выполнить при помощи команды
globus-rcp /tmp/my-file remote. server.ru:/tmp/test
Это означает, что с компьютера, где пользователь зарегистрирован, файл с именем /tmp/my-file будет передан на удаленный компьютер с именем remote.server.ru. Переданный файл получит имя /tmp/test.
В Globus предусмотрен и другой протокол обмена дынными, в котором используется парадигма публикации. Ответом на команду
globus-gass-server
будет нечто вида
https://host.ru:20143
Запущенный сервер будет слушать запросы удаленных клиентов на порту с номером 20143. Для обмена данными с этим сервером используется команда
globus-url-copy
Например,
globus-url-copy https://host.ru:20143 /tmp/my-file -
или
globus-url-copy https://host.ru:20143 /tmp/my-file file:/tmp/test
В первом случае файл с удаленного компьютера выводится на экран, а во втором — помещается под именем /tmp/test на тот компьютер, где зарегистрирован пользователь.
Тестовая конфигурация
В качестве тестовой конфигурации использовались три вычислительные установки в Санкт-Петербурге:
- pcfarm.pnpi.spb.ru — вычислительный кластер на основе персональных компьютеров в Институте ядерной физики [2];
- future76.pnpi.spb.ru — рабочая станция под управлением ОС Linux в Институте ядерной физики;
- whitecrow.csa.ru — Linux-сервер в Институте высокопроизводительных вычислений и баз данных.
Связь между ними осуществлялась через Internet на скорости значительно ниже 128 Кбит/с. Тем не менее, поскольку регистрироваться на удаленном компьютере для выполнения там заданий или отдельных команд не требовалось, низкое качество связи не слишком препятствовало работе в режиме онлайн.
Система Globus предоставляет универсальный интерфейс взаимодействия с элементами вычислительной сети независимо от их географического расположения. Прочие достоинства:
- для запуска задания на удаленном сервере не требуется регистрация;
- при работе с несколькими серверами оказывается весьма удобен сертификатный прокси, поскольку не требуется повторять ввод разных паролей при выполнении каждой транзакции;
- все обмены производятся с использованием безопасных протоколов.
Отметим, что при установке системы мы встретили ряд трудностей; например, не устанавливалась программа globus-gass-cache. Обнаружились и другие проблемы, которые обсуждались в списке рассылки discussion@globus.org.
Ссылки
[1] Проект MONARC, http://www.cern.ch/MONARC/
[2] Вычислительный кластер на основе ПК, http://www.pnpi.spb.ru/pcfarm
[3] Проект Globus, http://www.globus.org
[4] National Partnership for Advanced Computing Infrastructure, http://www.npaci.edu
[5] Grid Physics Network, http://www.phys.ufl.edu/~avery/mre/
[6] Средства GSIftp, http://www.globus.org/datagrid/deliverables/gsiftp-tools.html
[7] Страница в CERN по проекту GRID, http://grid.web.cern.ch/grid/
[8] Вычисления в колаборации Alice, http://AliSoft.cern.ch/offline/
[9] Вычисления в колаборации Atlas, http://atlas.web.cern.ch/Atlas/ GROUPS/SOFTWARE/OO/
[10] Вычисления в колаборации LHCb, http://lhcb-comp.web.cern.ch/lhcb-comp/grid/Default.htm
[11] Проект DATAGRID, http://grid.web.cern.ch/grid/proposal/ august/DataGridAnnex1V1.8.doc
[12] CMS Grid Data Management Pilot, http://cmsdoc.cern.ch/cms/grid/
[13] Российские региональные вычислительные ресурсы для БАК в регионе Санкт-Петербурга, http://www.pnpi.spb.ru/RRCF
[14] Проект РИВК БАК, http://theory.npi.msu.su/~ilyin/RIVK-BAK/index.html
Андрей Шевель (Andrei.Chevel@pnpi.spb.ru) — сотрудник Института ядерной физики (Санкт-Петербург); Владимир Корхов (Vladimir@csa.ru) — сотрудник Института высокопроизводительных вычислений и баз данных (Санкт-Петербург).