Посыпкин М.А.1, Сухомлин В.А.2, Храпов Н.П.3
1 Институт передачи информации РАН, д.ф.-м.н., ФИЦ ИУ РАН, ведущий научный сотрудник,
mposypkin@ gmail . com
2 Московский государственный университет им. М.В. Ломоносова, профессор,
sukhomlin @ mail . ru
3 Институт передачи информации РАН, инженер, nkhrapov @gmail . com
КОМБИНИРОВАННЫЕ РАСПРЕДЕЛЕННЫЕ ИНФРАСТРУКТУРЫ В НАУКЕ И ОБРАЗОВАНИИ6
КЛЮЧЕВЫЕ СЛОВА
Комбинированные распределенные инфраструктуры, грид-системы персональных компьютеров, облачные системы.
АННОТАЦИЯ
В статье рассматриваются различные подходы к интеграции распределенных ресурсов различного типа: грид-систем, суперкомпьютеров, облачных систем. Приводится описание технологий интеграции и примеров применения распределенных комбинированных инфраструктур в практике научных расчетов и организации обучения.
Введение
Современная наука и производство немыслимы без масштабных расчетов, требующих колоссальной вычислительной мощности, которую можно обеспечить только в рамках распределенных и параллельных систем. В настоящее время существует несколько подходов к организации распределенных вычислений. Наибольшую производительность обеспечивают специализированные суперкомпьютеры большой мощности, которых насчитывается несколько сотен по всему миру. Они могут решать широкий спектр вычислительных задач, но требуют больших расходов на создание и эксплуатацию.
Несколько меньшей производительностью обладают так называемые сервисные гриды, которые соединяют кластеры, установленные в различных организациях. Это решение дешевле по отношению к суперкомпьютерам, но также требует выделенных ресурсов и значительных усилий, связанных с эксплуатацией. Инфраструктура сервисных гридов состоит из набора сервисов, обеспечивающих доступ к брокерам ресурсов, информационным службам, хранилищам данных, вычислительным ресурсам. Пользователи сервисных гридов имеют соответствующие права доступа к предоставляемым сервисам. Контроль доступа к ресурсам осуществляется посредством сертификатов безопасности. Хорошо известны следующие технологии создания сервисных гридов, как Globus, LCG-2/gLite (EGEE), ARC и Unicore.
На нижнем уровне рассматриваемой иерархии находятся грид-системы персональных компьютеров (ГСПК). ГСПК основаны на наблюдении, что большую часть времени персональные компьютеры либо простаивают, либо загружены лишь на некоторую небольшую долю своей мощности. ГСПК обеспечивают возможность объединения свободных вычислительных мощностей домашних компьютеров и персональных компьютеров учреждений в единую распределенную систему для решения сложных вычислительных задач.
В отличие от сервисных гридов, грид-системы из персональных компьютеров легко установить и поддерживать. Как правило, требуется одна рабочая станция, на которой запускается серверная часть инфраструктуры. Пользователи со всего мира имеют возможность подключать свои персональные компьютеры к этому ресурсу, предоставляя тем самым свободные ресурсы своих компьютеров для работы приложений, размещенных на центральном сервере. Грид-системы из персональных компьютеров являются наиболее дешевым решением, обеспечивающим большую вычислительную мощность. ГСПК обладают огромным потенциалом роста — в
6 Работа выполнена при поддержке гранта РФФИ № 13-07-00768 А, программы 6П Проблемы создания высокопроизводительных, распределенных и облачных систем и технологий.
настоящее время в мире насчитывается более одного миллиарда персональных компьютеров и их число стремительно увеличивается.
К сожалению, далеко не все распределенные приложения могут эффективно выполняться на подобных системах из-за серьезных ограничений, накладываемых возможностями по передаче данных и высокой вероятностью отказа узлов, участвующих в вычислениях. Вместе с тем, достаточно широкий класс практических задач укладывается в модель управляющий-рабочие, которая является основной моделью приложения в ГСПК. К этому классу относятся многие переборные и комбинаторные задачи, моделирование методом Монте-Карло, задачи идентификации и многие другие. Для таких задач использование ГСПК оправдано и позволяет разгрузить суперкомпьютеры и сервисные гриды. Резюмируя можно сказать, что грид-системы персональных компьютеров являются дешевой альтернативой суперкомпьютерам и сервисным гридам и для ряда задач могут их успешно заменять.
Получившие в последнее время распространение облачные системы предоставляют по запросу аппаратные ресурсы, платформу для разработки или сервисы. По типу используемых ресурсов технологии облачных вычислений подразделяются на три основных группы:
Software As A Service (SaaS) — технология облачных вычислений, позволяющая использовать программное обеспечение, установленное на удаленном сервере. Наиболее известные примеры SaaS — это браузерные текстовые и графические редакторы, а также сервисы, позволяющие автоматизировать процесс создания типовых сайтов (например, интернет-магазинов).
Platform As A Service (PaaS) — технология облачных вычислений, позволяющая использовать удаленную виртуальную машину как некоторый сервис. Основное отличие PaaS от SaaS состоит в том, что в PaaS пользователь получает в свое распоряжение платформу (в большинстве случаев, виртуальную машину с установленной на ней операционной системой и набором базового ПО) для запуска в рамках данной платформы своего прикладного ПО. Наиболее известными примерами данной технологии являются сервисы Amazon, Google App Engine и Microsoft Azure, предоставляющие пользователю серверную платформу для загрузки своего программного кода. Также к PaaS можно отнести сервисы, предоставляющие услугу Remote Desktop.
Infrastructure As A Service (IaaS) — технология облачных вычислений, позволяющая на базе одной физической вычислительной инфраструктуры создавать и запускать другие вычислительные инфраструктуры. Многие современные реализации SaaS и PaaS являются надстройками над технологией IaaS.
Одной из актуальных задач распределенных вычислений, решаемых в настоящее время, является интеграция различных распределенных и параллельных систем. В данной работе рассматриваются различные варианты такой интеграции, а также опыт применения комбинированных инфраструктур для решения задач науки и обучения студентов.
Интеграция различных типов грид-инфраструктур
Механизм мостов, предоженный в работе [1], позволяет осуществлять интеграцию сервисных гридов и ГСПК на системном уровне, т.е. прозрачным для пользователя образом. На данный момент этот подход реализован для связи грид-инфраструктуры EGEE/EGI с несколькими ГСПК (Рис. 1). Суть подхода состоит в специальном программном компоненте 3G-Bridge (a Generic Grid to Grid bridge) который, опираясь на абстрактное понятие задания, может быть использован для интеграции двух грид-систем. По выполняемым функциям интегрирующее программное обеспечение можно подразделить на два типа:
• Мост EGEE ^ DG, обеспечивающий запуск заданий сервисного грида в инфраструктуре
ГСПК.
• Мост DG ^ EGEE, позволящий, наоборот, запускать задания ГСПК в инфраструктуре EGEE.
Мост EGEE => DG
Данное соединение функционирует как Computing Element (CE) сервисного грида, где задания вместо вычислительных узлов направляются в инфраструктуру грида из персональных компьютеров (BOINC, XWHEP, OurGrid). Взаимодействие различных типов грид-систем обеспечивается тремя основными программными компонентами:
^Функционирующий на стороне gLite модифицированный Computing Element, который отправляет принятые из инфраструктуры сервисного грида задания на удалённый мост. Данный CE поставляется в качестве модуля YAIM, и может быть установлен и настроен вместе с другими компонентами gLite.
2.На стороне сервера ГСПК функционирует специальный адаптер, отвечающий за получение заданий, их преобразование для новой инфраструктуры, и выполнение.
3.Репозиторий приложений (Application Repository — AR), содержащий информацию о всех приложениях, проходящих через данный мост.
Рис. 1. Основные элементы инфраструктуры, обеспечивающие взаимодействие разнородных грид-систем Мост DG=> EGEE
Поскольку принцип работы и основное программное обеспечение зависит от типа подключаемой инфраструктуры ГСПК, для каждой из них создана отдельная реализация моста:
• Мост BOINC=> EGEE, который функционирует как клиент BOINC, отправляя скачанные задания в виртуальную организацию EGEE. В инфраструктуре сервисного грида задание запускается специальной программой (Jobwrapper), которая которая запускает приложение BOINC, и эмулирует для него окружение клиента BOINC.
• Мост XWHEP => EGEE, подключающий рабочие узлы EGEE к гриду XWHEP путём запуска рабочих компонентов инфраструктуры в виде заданий EGEE.
• Мост OurGrid =>EGEE, который непосредственно запускает задания на вычислительных узлах виртуальной организации EGEE.
В рамках EGEE создана виртуальная организация desktopgrid.vo.edges-grid.eu, предназначенная для выполнения заданий ГСПК. Гриды из персональных компьютеров(включая три основных варианта: BOINC, XWHEP, OurGrid), подключённые к EDGeS, и поддерживающие запуск EGEE приложений, позволяют добровольцам внести свой собственный вклад в проект EGEE и инфраструктуру сервисного грида EGEE. Инфраструктура EDGeS, содержащая более 100 тыс. процессорных ядер создавалась на основе нескольких типов ГСПК и европейского грида EGEE/EGI. Использование гибридной вычислительной инфраструктуры в научных целях даёт следующие преимущества:
1. Операторы гридов из персональных компьютеров и сервисных гридов могут объединить свои системы посредством инфраструктуры EDGeS. Таким образом можно увеличить вычислительный ресурс, доступный для пользователей.
2. Менеджеры виртуальных организаций (ВО) EGEE или другого сервисного грида могут подключиться к виртуальной организации EDGeS, и таким образом добавить вычислительный ресурс в инфраструктуру, и запускать в ней свои приложения.
3. Потребители ресурсов, подключённые к EDGeS имеют в распоряжении больший вычислительный ресурс, чем на локальных гридах. Если используется приложение, портированное на несколько типов грид-систем, то соответствующие задания будут автоматически запускаться в нужных частях инфраструктуры.
4. Любому желающему предоставить свой вычислительный ресурс для нужд науки достаточно подключиться к одной из поддерживаемых EDGeS грид-систем, и таким
образом стать участником этой вычислительной инфраструктуры.
Интеграция грид-систем персональных компьютеров и многопроцессорных вычислительных комплексов
Другой пример интеграции высокопроизводительных ресурсов приведен в работе [2]. Разработанный авторами программный комплекс Cluster for BOINC Run (CluBORun), позволяет задействовать свободные ресурсы суперкомпьютеров для выполнение расчетов проектов добровольных вычислений на базе системы BOINC (Berkeley Open Infrastructure for Network Computing). Система состоит из следующих основных компонентов (Рис. 2):
1. Каталоги с экземплярами BOINC-клиента.
2. Файлы-флаги, соответствующие MPI-задачам. MPI-задачи при наличии свободных ресурсов запускаются на кластере. Каждая MPI-задача представляет собой несколько экземпляров BOINC-клиентов. При запуске задачи создается start-флаг, в случае необходимости его остановки — stop-флаг.
3. Текстовый файл all_tasks.txt — перечень запускаемых задач. Для каждой задачи указывается имя start-флага, имя stop-флага, путь к каталогу с экземплярами BOINC-клиентов и перечень экземпляров, которые надо запустить.
4. Исполняемый файл start_boinc, на вход которому в качестве параметров подается время работы, а также пути к соответствующим экземплярам BOINC-клиентов и файлам-флагам. Файл start_boinc запускает на каждом выделенном для задачи узле один BOINC-клиент. Работа BOINC-клиента прерывается при исчерпании времени работы, либо экстренно — при появлении stop-флага.
5. Скрипт catch_node.sh, предназначенный для анализа загрузки кластера и запуска модуля start_boinc. Данный скрипт запрашивает список всех задач, запущенных на кластере, а также список задач, стоящих в очереди (если таковые есть). Анализируя данный список, скрипт определяет, сколько BOINC-задач уже запущено на кластере и сколько их должно быть, исходя из числа свободных узлов и состава очереди кластера.
Г"
all_tasks. txt Список задач —|-
считывает
список задач
taslfOO 1. start
I
catch node.sh
запретивает очередь! кластера
task002.3tart|
Файлы - фла™ I запуска и I остановки
atart-fлагов
tas , .-t art
ЭкаемплЯры BOINC
mgijifo
taskN.stos -J^P^^L Lc2?______
I флаги
I запускаем statt boinc "il----
Выдает команду на
"запуск I ■ ■ tar t boino
BOINC 1
на узлах кластера
rajsitun
Г~ запускает и
останавливает Н ' экзеыплшп BOINC I
L _____j______
флаги
W
I
control node
compute node-1
Compute node-л
Рис. 2. Схема работы программного комплекса CIuBORun
Один из основных принципов работы CluBORun состоит в том, что управляемые им BOINС-вычисления не должны препятствовать запуску других задач в очереди кластера. Если запущенные BOINC-задачи требуется остановить (в очереди появились задачи, которые могли бы начать выполняться на высвобождаемых узлах), то скрипт catch_node.sh остановит необходимое количество BOINC-задач путем формирования stop-флагов.
При обнаружении свободных узлов скрипт catch_node.sh считывает список start-флагов. При наличии незапущенных задач они запускаются через систему управления заданиями с помощью команды mpirun. При вызове команды mpirun скрипт catch_node.sh передает ей следующие параметры:
• число ядер, занимаемых у вычислительного кластера (оно равно числу ядер CPU на узлах, которые предполагается занять задачей);
• время, на которое производится захват узла;
• путь к MPI-приложению, которое команда mpirun должна запустить на выбранном
узле;
• параметры, которые должны быть переданы самому MPI-приложению.
Изначально платформа BOINC не предназначена для проведения расчетов на
вычислительных кластерах. Кроме этого, при запуске приложений на кластере пользователям разрешены только те действия, которые не противоречат политике безопасности данного кластера.
Для задействования BOINC на кластерах используется специальное MPI-приложение. Основное требование к этому приложению — это возможность запустить на каждом используемом узле кластера один BOINC-клиент и корректно передать ему все ресурсы этого узла. При этом MPI-процессы не должны выполнять никаких вычислений, а нужны лишь для корректного запуска BOINC-расчетов на узлах (т.е. все вычисления выполняет BOINC-клиент). В нашем случае в роли MPI-приложения выступает описанное выше приложение start_boinc, которое запускается с помощью команды mpirun на n процессорных ядрах на узлах кластера (каждому ядру соответствует один процесс приложения start_boinc). Запущенные процессы start_boinc сначала распределяют между собой роли, а затем — следуют им. Всего есть три роли:
• координатор — процесс, распределяющий остальные роли между узлами, задающий соответствие между подчиненными процессами и запускаемыми экземплярами BOINC-клиентов, выдающий сигнал на остановку запущенных экземпляров BOINC-клиентов, сигнализирующий об окончании работы MPI-приложения в целом;
• владелец BOINC-клиента — процесс, запускающий на своем узле указанный ему координатором экземпляр BOINC-клиента;
• спящий процесс, который присутствует в системе до получения указания о том, что ему пора завершаться.
Таким образом, в рамках MPI-задачи, запускаемой на k узлах, среди всех параллельных процессов выделяется 1 координатор и k владельцев BOINC-клиентов. Остальные процессы являются спящими и ожидают от координатора команды на остановку.
Программный комплекс CluBORun был использован для подключения кластеров к решению задач в проекте добровольных вычислений SAT@home. С помощью CluBORun были найдены 17 новых пар ортогональных диагональных латинских квадратов порядка 10 (до этого были известны 3 такие пары). Также в SAT@home были решены 3 ослабленные задачи криптоанализа генератора ключевого потока Bivium. В некоторые периоды времени вклад задействованного с помощью CluBORun кластера МВС-100к[3] в производительность SAT@home достигал 40 %.
Интеграция грид-систем из персональных компьютеров и облачных систем
В предыдущих разделах рассматривалось применение распределенных сред для научных расчетов. Вместе с тем интеграция распределенных систем может быть весьма полезной для нужд ИТ-образования. В данном разделе рассмотрим технологию применения облачных технологий для создания виртуального полигона, предназначенного для обучения студентов технологиям ГСПК. Виртуальный полигон дает возможность развернуть по требованию необходимое количество виртуальных машин с присвоенными IP-адресами. На части машин установлено программное обеспечение BOINC-сервера, а на других — клиента BOINC. Далее студенты получают доступ к виртуальным машинами и выполняют задания практикума.
При проведении сравнительного анализа различных облачных платформ выбор пал на систему Xen Cloud Platform, т.к. данная платформа является наиболее отказоустойчивой, имеет наибольшее распространение, имеет наиболее обширную документацию и является бесплатной. При выборе реализации ГСПК для создания прототипа гибридной инфраструктуры была отобрана технология BOINC, т.к. данная технология является наиболее универсальной и распространенной. Подготовка специалистов работе с данной платформой является наиболее актуальной.
Использование технологии IaaS предполает создание новых виртуальных машин на основе некоторого, заранее приготовленного шаблона. Допустим, необходимо создать 30 BOINC-серверов. Для этого создается новая серверная виртуальная машина, на которую устанавливается необходимый набор системного программного обеспечения. Далее из данной виртуальной машины создается шаблон, затем на основе шаблона происходит клонирование нескольких
виртуальных машин. В качестве шаблона использовался чистый образ, содержащий операционную систему Linux Debian 6.0 (серверное программное обеспечение BOINC изначально спроектировано для работы под управлением данной операционной системы). С помощью специального командного файла производится настройка сетевых интерфейсов виртуальных машин для последующего использования в учебном процесса. Данная технология была применена для организации практических занятий по курсу «Архитектура и программное обеспечение высокопроизводительных вычислительных систем», читаемого в магистратуре факультета вычислительной математики и кибернетики МГУ. Заключение
В работе рассмотрены вопросы интеграции различных высокопроизводительных вычислительных ресурсов. Рассмотрена технология программных мостов, дающая возможность бесшовного прозрачного объединения различных распределенных ресурсов на системном уровне. Далее был приведен программный инструментарий для использования простаивающих ресурсов суперкомпьютеров в проектах добровольных вычислений на платформе BOINC. Также в работе рассматривалась технология интеграции распределенных ресурсов для нужд обучения студентов навыкам работы в системе BOINC.
В дальнейшем планируется расширение спектра решаемых прикладных задач на комбинированных распределенных инфраструктурах, а также, дальнейшая автоматизация развертывания учебных полигонов с использованием облачных технологий. Также перспективным направлением является интеграция распределенных ресурсов на программном уровне посредством сервисов, и создания сложных вычислительных сценариев в такой среде [5].
Литература
1. P. Kacsuk and G. Sipos: Multi-Grid, Multi-User Workflows in the P-GRADE Portal. Journal of Grid Computing, Vol. 3, No. 3-4, Springer Publishers, pp. 221-238, 2005.
2. М.О. Манзюк, О.С. Заикин, М.А. Посыпкин, CluboRUN: программный комплекс для использования свободных ресурсов вычислительных кластеров в boinc-расчетах / / Информационные технологии и вычислительные системы, № 4, с. 3-11, 2014.
3. Суперкомпьютерный центр РАН. URL: http://www.jscc.ru/scomputers.shtml.
4. Ritchie S. King «The Top 10 Programming Languages» // IEEE Spectrum. — 2011. URL: http://spectrum.ieee.org/at-work/tech-careers/the-top-10-programming-languages.
5. Sukhoroslov O., Afanasiev A. Everest: A Cloud Platform for Computational Web Services // In Proceedings of the 4th International Conference on Cloud Computing and Services Science (CLOSER 2014) SCITEPRESS — Science and and Technology Publications, 2014, pp. 411-416.