Сегодня отмечается всплеск интереса к облачным вычислениям со стороны разных специалистов, однако далеко не у каждого системного программиста имеется регулярный доступ к мощным распределенным центрам обработки данных, что затрудняет отладку, верификацию и внедрение приложений. Одной из инициатив по созданию открытой для исследователей облачной инфраструктуры стал проект OpenCirrus, включающий и российский сегмент
Университетский кластер: интеграция образования, науки и индустрии
Массовое внедрение технологий параллельного и распределенного программирования сдерживается из-за отсутствия квалифицированных специалистов, что приводит к снижению спроса на высокопроизводительные системы и простою дорогостоящей аппаратуры. Программа «Университетский кластер» призвана сформировать экосистему для подготовки кадров, владеющих современными технологиями параллельных и распределенных вычислений. |
Для проведения различных исследований при разработке системных программных средств специалистам часто необходим доступ к полномасштабным распределенным центрам обработки данных; например в США за счет бюджета, выделяемого Национальным научным фондом, исследователям предоставляются сервисы Amazon, Google, IBM и Microsoft. Однако такие программы ориентированы на разработчиков прикладного ПО, а для специалистов в области разработки системных программных средств, занимающихся созданием аппаратуры и программных инфраструктур, задача с доступом к таким ресурсам не решена. Одной из инициатив по созданию открытой для исследователей облачной инфраструктуры стал проект OpenCirrus [ 1 ], целью которого является создание открытого испытательного стенда на базе распределенных центров обработки данных для поддержки разработчиков, работающих в сфере создания прикладных и системных средств для облаков.
В рамках программы «Университетский кластер» ряд российских организаций присоединились к проекту OpenCirrus и совместно образовали «Российский центр компетенции» (РЦК).
Проект OpenCirrus
OpenCirrus – это стенд, объединяющий распределенные центры обработки данных с целью стимулирования инновационной деятельности в системных и прикладных исследованиях в сфере облаков и активизации усилий по разработке и реализации стека программного обеспечения с открытым исходным кодом. Системным программистам пока не удается получить регулярный доступ к мощным распределенным центрам обработки данных, что затрудняет окончательную отладку, верификацию и внедрение их работ.
Проект OpenCirrus поддерживается компаниями HP, Intel и Yahoo! при содействии Национального научного фонда США и объединяет разработчиков системного и прикладного ПО из различных научно-исследовательских центров. В 2009-2010 годах к проекту присоединились Университет штата Иллинойс, Технологический институт Карлсруэ, Центр развития информационных и коммуникационных технологий при правительстве Сингапура, Российская академия наук, Исследовательский институт электроники и телекоммуникаций Южной Кореи, Малазийский институт микроэлектронных систем и Университет Карнеги-Меллона. В текущем состоянии стенд OpenCirrus (рис. 1) состоит из 10 узлов (Северная Америка, Европа и Азия). Каждый узел предоставляет доступ к кластерам, содержащим не менее 1000 ядер. Авторизованные пользователи могут получить доступ к любому узлу Open Cirrus, используя одни и те же учетные данные.
Рис. 1. Испытательный стенд проекта OpenCirrus |
Проект OpenCirrus преследует четыре главные цели.
Содействие исследованиям и разработкам по системному ПО для облаков. Сейчас доступ к крупномасштабным центрам обработки данных при разработке и тестировании новых систем и сервисов предоставляется только программистам компаний — поставщиков сервисов: Yahoo!, Google, Amazon и Microsoft. Остальным исследователям приходится использовать модельные среды, а OpenCirrus призван обеспечить две возможности: доступ к аппаратуре и программному обеспечению нижнего уровня (установка новых версий ОС, прямой доступ к аппаратуре и т. п.), а также параллельный доступ к гетерогенной распределенной структуре.
Поддержка новых облачных приложений. Обеспечение платформы для выполнения реальных приложений и сервисов — важная часть OpenCirrus, и здесь важно обеспечить возможности разработки новых прикладных моделей для определения необходимого уровня системной поддержки. Кроме того, OpenCirrus позволяет построить платформы для создания новых видов интегрированных приложений и сервисов, выполняемых сразу в нескольких центрах обработки данных.
Предоставление пользователям доступа к совокупности экспериментальных данных. Разработчики масштабных приложений нередко испытывают недостаток в наборах данных, необходимых для проведения качественных оценочных расчетов, опирающихся на реальные экспериментальные данные. Сайты стенда OpenCirrus позволяют исследователям получать, хранить и совместно использовать такие наборы данных, как результаты сканирования веб-страниц или графики рабочей нагрузки ЦОД. Указанные возможности могут превратить стенд OpenCirrus в своего рода клуб исследователей, имеющих одинаковые научные интересы, в рамках которого они могут не только обмениваться тестовыми и другими наборами данных, но и разрабатывать эталонные тесты для приложений, работающих в облаках.
Предоставление аппаратуры и программных инструментов стенда для поддержки разработки новых стеков свободного ПО. Стенд OpenCirrus должен служить платформой, которую сообщество свободного ПО сможет использовать для разработки и оценки своих программ и интерфейсов для всех уровней стека облаков.
В отличие от кластеров, используемых компаниями Google, IBM, Microsoft и Amazon, в OpenCirrus можно совместно использовать физические и виртуальные машины. Разработчики могут самостоятельно подготовить к работе серверы и кластеры стенда, получив доступ с правами администратора к выделенной аппаратуре, что позволяет обеспечить автономную работу на сетевом уровне и восстанавливать статус своего сегмента стенда в случае сбоев. В отличие от систем с унифицированной архитектурой (например, PlanetLab), OpenCirrus объединяет сайты, работающие на различных кластерах и использующие различные сервисы и инструменты. Эти сайты работают в разных организациях, подчиняясь принятым в них правилам и используя различные методы обеспечения конфиденциальности. Общность обеспечивается глобальными сервисами глобальной регистрации и контроля доступа. Несмотря на то что некоторые локальные сервисы могут на различных сайтах отличаться, использование стандартных решений и настроек позволит поддерживать согласованное администрирование. В отличие от централизованного подхода, как например Emulab, проект OpenCirrus использует множество центров обработки данных, что позволяет проводить независимые исследования при совместном использовании ресурсов.
Архитектура сервисов
Для создания единого согласованного вычислительного ресурса необходимо обеспечить:
- прямой доступ исследователей к физическим ресурсам (пароли администратора, разрешение на установку системного ядра, доступ к процессорам, базовым чипсетам, памяти), предполагающий, что некоторые ресурсы, в частности ресурсы сети, необходимые для правильной изоляции сегментов, как например конфигурации переключателей виртуальной локальной вычислительной сети, были виртуальными или недоступными;
- сопряжение операционных окружений за счет определения минимального множества сервисов, которое должен поддерживать каждый сайт;
- поддержку режима квазипромышленной эксплуатации, предполагающую обеспечение доступа к реальным сценариям использования приложений (эмуляция реальной рабочей нагрузки, трассировка, тестирование и т. п.);
- доступность глобальных сервисов с любого узла (единый сервис распознавания паролей и аутентификации, глобальный мониторинг и сервис хранения массивов данных для конфигурационных файлов, промежуточных результатов или бинарных файлов).
Архитектура стека сервисов
Типичный сайт OpenCirrus (рис. 2) состоит из сервиса первичного домена, сервиса основного домена и системных сервисов.
Рис. 2. Архитектура стека сервисов проекта OpenCirrus |
Сервисом основного домена является Zoni — программный компонент, отвечающий за управление физическими ресурсами кластера и предоставление пользователям доступа к серверу как к «голому железу» для исследования программного обеспечения системы. Этот компонент поддерживает пять основных функций: распределение серверных узлов; выделение групп узлов, называемых доменами; подготовка к работе основного программного обеспечения домена; внешнее управление сетью (по дополнительному каналу); устранение неполадок в выделенных узлах. Zoni поддерживает данные от всех доступных ресурсов кластера.
Пользователи запрашивают распределение физических узлов по различным причинам, и одной из распространенных является необходимость проведения контролируемых измерений производительности. Кроме того, распределение требуется при постановке экспериментов над системным программным обеспечением работы сети; например разработка новой системы управления кластером может потребовать возможности управления сервером протокола динамической конфигурации хоста DHCP. Такие эксперименты должны быть изолированы от других работ в стенде как для сохранения целостности данных, так и для устойчивости кластера. Распределение узлов, изолированных от остальной части кластера таким способом, позволяет сформировать домен. Например, можно, программируя переключатели кластеров, создавать виртуальные локальные сети.
Вычисления с акцентом на данные
Необходимость обработки петабайтных массивов данных вызвала к жизни новые подходы, которые получили название Data-Intensive Computing. |
Чтобы загрузить домен для удаленных пользователей, Zoni предоставляет механизм установки программного обеспечения хотя бы на один из выделенных узлов. Сейчас эта возможность обеспечивается с помощью процесса, основанного на загрузке по сети, однако, даже если программное обеспечение может быть предоставлено надлежащим образом, нет гарантии, что оно будет правильно работать. Поэтому Zoni также предоставляет пользователям средства внеполосной отладки и управления — сейчас основным средством такой отладки является доступ с удаленной консоли, а средство управления состоит в основном из удаленного управления питанием. Оба средства обеспечиваются с помощью интеллектуального интерфейса управления платформой Intelligent Platform Management Interface (IPMI).
Не все пользователи кластера заинтересованы в управлении доменом Zoni — некоторых интересует разработка сервисов более высоких уровней, а других интересует просто использование предлагаемых системных сервисов. Для обслуживания двух последних групп пользователей один из доменов каждого сайта получает статус первичного домена и обеспечивает стабильный набор сервисов для промышленного использования.
MapReduce — будущее баз данных
Реляционные СУБД – продукты своего времени и не могут вечно оставаться образцами совершенства. Есть все основания полагать, что в недалеком будущем свое место займут параллельные СУБД, использующие программную конструкцию MapReduce. |
Для поддержки пользователей, работающих с очень большими наборами данных, служит HDFS, файловая система файлов Hadoop, которая обеспечивает объединение памяти всех узлов домена. Основным свойством HDFS является поддержка обработки данных с учетом их местоположения – файловая система экспортирует адреса блоков данных таким образом, чтобы сервисы времени выполнения могли распределять вычислительные задачи по обработке блоков данных на те узлы файловой системы, на которых эти блоки физически размещены. Эта возможность позволяет уменьшить нагрузку на кластерную сеть.
Для поддержки разнообразных потребностей пользователей сервисы первичного домена имеют средства управления виртуальной машиной, обеспечивающие удобный механизм распределения ресурсов для различных пользователей и сервисов. Hadoop, например, реализует парадигму программирования MapReduce и предлагает популярную систему поддержки выполнения для построения облачных сервисов. Другой популярной системой поддержки выполнения, обеспечивающей сервис распределения заданий, является планировщик кластерного времени Maui вместе с распределителем ресурсов Torque. Предоставляя два сервиса через непересекающиеся множества виртуальных машин, администратор первичного домена может динамически корректировать пул ресурсов, доступных каждому сервису в соответствии с его потребностями. Пользователи, для выполнения заданий которых недостаточно возможностей одного из имеющихся сервисов каркаса приложений, могут затребовать свой собственный пул виртуальных машин.
Различные сайты могут выбрать любой из сервисов, поддерживающих интерфейс EC2 для веб-сервисов компании Amazon, например Tashi или Eucalyptus. Отметим, что Tashi – это система управления кластером с открытым исходным кодом, поддерживающая облачные вычисления на больших наборах данных и разрабатываемая в рамках проекта Apache Incubator специально для OpenCirrus. Хотя Tashi аналогична другим системам управления логическими кластерами виртуальных машин, она отличается тем, что поддерживает исследования по совместному планированию вычислений, распределению памяти и распределению вычислительных мощностей.
На рис. 3 показан пример сочетания различных сервисов OpenCirrus. Кластер подразделяется на четыре домена. Первый используется для исследования низкоуровневых систем, где исследователи устанавливают собственные ядра ОС и выполняют собственные экспериментальные коды и сервисы. На втором домене выполняется система управления виртуальными машинами, предоставляющая пользователям виртуальные кластеры, которые совместно выполняются на физических узлах в домене Zoni. На этих виртуальных кластерах пользователи строят свои собственные сервисы и приложения. Третий домен обеспечивает специальный сервис хранения, который могут использовать приложения, выполняемые на втором домене. Четвертый домен предлагает «песочницу» для разработки следующих версий Tashi.
Рис. 3. Пример возможной структуры взаимодействия сервисов стенда OpenCirrus |
Для упрощения работы в OpenCirrus требуется много дополнительных сервисов домена утилит; например, сервис мониторинга Ganglia не только позволяет администратору следить за здоровьем кластера, но и облегчает сбор кластерных оперативных данных, которые могут использоваться в будущих исследовательских проектах. Обычная сетевая файловая система удобна для хранения скриптов пользователей, небольших наборов данных и небольших выходных файлов. Утилиты сайта также могут обеспечивать возможности для отслеживания ресурсов, потребляемых пользователями и управления энергопотреблением кластера.
Объединенная структура OpenCirrus
Для поддержки совместных экспериментов с привлечением ресурсов различных организаций участники проекта используют небольшой набор общих «глобальных» сервисов, которые работают на сайтах участников для поддержки общей инфраструктуры. Общие сервисы обеспечивают:
- единый вход — доступ сразу ко всем предоставленным сайтам с одинаковыми полномочиями;
- глобальный мониторинг — средство оценки степени исправности стенда, определения занятости сайтов;
- поддержку каталогов пользователей, которые монтируются на каждом сайте в области общих сервисов, что обеспечивает возможность размещения небольших файлов, как например скрипты выполнения и конфигурационные файлы, для проведения экспериментов;
- глобальную память для доступа со всех сайтов к некоторым наборам данных, либо с помощью репликации, либо через любую другую технологию распределения;
- автоматическое планирование распределения задания на кластеры, оптимальные по некоторому критерию (балансировка нагрузки, минимизация пересылок данных, минимизация энергопотребления и т. п.);
- отслеживание ресурсов, потребляемых пользователями, обмен разрешениями на передачу данных (кредитами), в зависимости от потребляемых ресурсов.
Сегодня стенд OpenCirrus используется на системном уровне и уровне приложений в сотне исследовательских проектов на десяти сайтах, и в большей части этих проектов OpenCirrus предлагает проведение экспериментов в реальном масштабе времени, а также совместное использование общего стека сервисов и обеспечения взаимодействия между слоями. Исследования системного уровня, например исследование организации сетей, мощности и систем охлаждения, позволяют лучше изучить особенности загрузки облаков и оптимизировать работу приложений.
Российский сегмент
Вычислительная инфраструктура российского сегмента OpenCirrus состоит из вычислительных кластерных систем, размещенных на площадках организаций, входящих в его состав. Скоростные каналы связи на базе Gigabit Ethernet позволяют обеспечить управление и мониторинг вычислительными узлами Института системного программирования РАН, Межведомственного суперкомпьютерного центра РАН и Российского научного центра "Курчатовский институт" из единого центра в ИСП РАН, где размещается общее для всех вычислительных узлов хранилище данных. Кроме того, обеспечивается единая точка доступа ко всем предлагаемым сервисам и осуществляется централизованная авторизация пользователей.
На инфраструктуре российского сегмента развернут стандартный набор сервисов OpenCirrus. Сервис, поддерживающий инфраструктуру обработки больших массивов данных в модели MapReduce, реализован с использованием пакета Hadoop и обеспечивает хранение данных в распределенной, отказоустойчивой файловой системе HDFS, работу с распределенной базой данных HBase, средства обработки больших массивов данных по технологии MapReduce и систему параллельного программирования на основе языка высокого уровня Pig. Сервис Virtual Cluster реализован с использованием пакета Tashi и позволяет обеспечить управление логическими кластерами виртуальных машин. Сервис Physical Resource Set предлагает доступ к аппаратуре на физическом уровне с выбранным системным окружением (в текущей версии реализация сервиса базируется на пакете Zoni). Наиболее частыми задачами пользователей, связанными с использованием российского сегмента, являются вычисления с применением MPI, поэтому, наряду со стандартными сервисами OpenCirrus, в российском сегменте был развернут сервис Parallel Compute, обеспечивающий выполнение программ на высокопроизводительных вычислительных системах с распределенной или общей памятью в парадигме "инфраструктура как сервис" (Infrastructure as a Service, IaaS). Этот сервис дает пользователям возможность выполнения программ на системах общего назначения, использующих современные графические акселераторы. В рамках сервиса Parallel Compute запуск программ выполняется с использованием глобальной системы диспетчеризации GridWay. Чтобы запустить параллельную программу, пользователю необходимо ввести в систему описание grid-задания, где указать имя выполняемой программы, значения ее аргументов, описание требуемого окружения и описание структуры результатов выполнения программы. GridWay дает пользователю возможность указывать зависимости запуска заданий и контролировать их завершение, формируя поток, в котором одни задания используют данные, полученные при выполнении других. Пользователь, применяя различные скриптовые языки совместно с командным языком диспетчера GridWay, может создавать и управлять потоками заданий, для которых поддерживаются различные сценарии выполнения.
На российском сегменте развернут дополнительный сервис системного уровня – сервис виртуальных машин Elastic Cloud Service, аналогичный сервисам Amazon EC2 и Amazon S3 и совместимый с ними по интерфейсам.
Сервис виртуальных машин организован средствами среды Eucalyptus, реализованной в соответствии с концепцией IaaS и обеспечивающей доступ пользователей к виртуальным серверам для установки требуемого системного окружения (ОС, системные и прикладные библиотеки и т.п.). В рамках сервиса виртуальных машин, предлагаемого российским сегментом OpenCirrus, поддерживается работа с гипервизорами Xen и KVN. Управлять виртуальными серверами пользователи могут через терминальные команды или Web-консоль HybridFox, встраиваемую в браузер FireFox на стороне пользователя и позволяющую управлять загрузочными образами виртуальных машин, запускать и останавливать виртуальные машины, управлять виртуальными машинами, управлять динамическим распределением IP-адресов, управлять ключами авторизации, управлять виртуальными блочными устройствами хранения данных.
Существующие сегодня стенды облаков можно подразделить на две группы: стенды для исследовательских целей и стенды изучения поведения приложений (см. таблицу). Стенды Google/IBM, TeraGrid и Microsoft Windows Azure поддерживают исследования прикладного уровня, не обеспечивают доступ к аппаратуре на уровне «голого железа» или доступ к ОС с правами администратора. В частности, стенд Google/IBM настроен на сервис Hadoop и направлен на исследование приложений, работающих с большими объемами данных. Стенд TeraGrid – многосайтовая инфраструктура, используемая, в основном, для поддержки научных исследований. Стенд Open Cloud Testbed предназначен для исследования программного обеспечения облачных вычислений связующего слоя и объединяет четыре 32-узловых сайта. Такие стенды, как PlanetLab и Emulab, также разработаны для поддержки системных исследований.
Таблица. Испытательные стенды для облаков |
PlanetLab состоит из нескольких сотен распределенных машин и предназначен для поддержки сетей на больших территориях, а также для исследования распределенных систем. Хотя он и не предоставляет доступа к аппаратуре на уровне «голого железа», он предоставляет доступ к OS с правами администратора. EmuLab представляет собой стенд, в котором каждый пользователь может зарезервировать несколько десятков машин и получить эксклюзивный доступ к оборудованию на уровне «голого железа». EmuLab предоставляет также механизм для эмуляции различных характеристик сети.
Остальные работы по организации облачных вычислений, в частности известные проекты Reservoir и RightScale, не являются собственно стендами. В проекте Reservoir (Resources and Servers Visualization without Barriers, "Визуализация ресурсов и серверов без барьеров"), финансируемом EС, разрабатываются средства развертывания ИТ-сервисов и управления их административными доменами. В проекте RightScale разрабатывается платформа управления облачными сервисами.
***
Сервисы системного уровня, созданные в рамках проекта OpenCirrus, доступны как часть платформы «Университетский кластер», включающей также другие сервисы системного уровня: ведение совместных проектов (Workspace Service), организация вебинаров (Webinar Service). Сегодня платформа «Университетский кластер» используется, например, для создания веб-лаборатории в области механики сплошных сред. В рамках этой лаборатории обеспечен облачный сервис на основе свободных прикладных пакетов SALOME [2], ParaView и OpenFOAM [3]. Постановка заданий на счет осуществляется с помощью метапланировщика GridWay, и, таким образом, сервисы уровня приложений базируются на сервисах системного уровня.
Работа проводится в рамках реализации ФЦП "Научные и научно-педагогические кадры инновационной России" на 2009-2013 годы, ГК N 02.740.11.0665 от 29 марта 2010 года.
Литература
- Arutyun I. Avetisyan, Roy Campbell, Indranil Gupta, Michael T. Heath, Steven Y. Ko, Gregory R. Ganger, Michael A. Kozuch, David O'Hallaron, Marcel Kunze, Thomas T. Kwan, Kevin Lai, Martha Lyons, Dejan S. Milojicic, Hing Yan Lee, Yeng Chai Soh, Ng Kwang Ming, Jing-Yuan Luke, Han Namgoong. Open Cirrus: A Global Cloud Computing Testbed. Computer, April 2010.
- Andre Ribes, Christian Caremoli, Salome platform component model for numerical simulation, compsac, vol. 2, 31st Annual International Computer Software and Applications Conference, 2007.
- Weller H.G., Tabor G., Jasak H., Fureby C., A tensorial approach to computational continuum mechanics using object oriented techniques, Computers in Physics, 1998. vol.12, № 6.
Арутюн Аветисян, Сергей Гайсарян, Олег Самоваров, Эшсоу Хашба ({arut, ssg, samov, eshsou}@ispras.ru) — сотрудники Института системного программирования РАН (Москва).