Рубрика:
Карьера/Образование /
Пятая пара
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ПАВЕЛ ПОВАЛЯЕВ, бакалавр, Московский авиационный институт (национально исследовательский университет), pavel.povalyev@gmail.com
Программный комплекс автоматической установки связи с системой распределенных вычислений
В данной статье представлена разработка программного комплекса для облегчения установки и настройки распределенной платформы Berkeley Open Infrastructure for Network Computing (BOINC)
Данный комплекс позволяет значительно сократить время, затрачиваемое сотрудниками на его разборку. Для реализации данной системы был выбран скриптовый язык программирования BASH, эта программа реализована при помощи скриптового консольного приложения, для хранения информации используется база данных MySQL.
В исследованиях по математике, физике и в других науках требуется обработка информации или вычисление расчетных операций. С этой целью были созданы системы, способные сократить время обработки в десятки раз. Сделаны разнородные программные «прослойки» между управляющим сервером и вычислительными узлами. Одна из таких «прослоек» – BOINC.
В данной статье рассмотрим следующие задачи:
- Как автоматизировать установку системы.
- Как настроить подключение к серверу.
- Как запустить виртуальный BOINC-сервер.
- Как создать проект на сервере.
- Как настроить BOINC-клиент для работы с нашим проектом.
Была поставлена цель создать систему, автоматизирующую процесс установки и настройки приложений клиент-серверного приложения Berkeley Open Infrastructure for Network Computing (BOINC) для разработки проектов системы распределенных вычислений BOINC. Далее нужно запустить BOINC-клиенты на компьютерах для работы над созданным проектом.
Нужно иметь понимание о кластерах. Кластер – это многопроцессорный набор, многоядерный компьютер, на котором выполняются задачи пользователя, связанные высокоскоростной сетью и объединенные специальным программным обеспечением. Для расчетных операций используются кластерные (распределенные) вычисления. Именно открытая программная платформа Berkeley Open Infrastructure for Network Computing организует распределенные вычисления.
Платформа BOINC-клиент-сервер состоит из программы-клиента и составного сервера BOINC, это дает возможность использовать несколько компьютеров в качестве сервера.
На сегодняшний день при установке и настройке платформы необходимо потратить много временных ресурсов. Для того чтобы уменьшить расход времени на данные операции, было принято решение разработать сервис для автоматического установления связи с системами распределенных технологий.
Программный комплекс предоставляет следующий функционал: автоматическую установку и настройку платформы для распределенных вычислений, связь и взаимодействие пользователей с данными платформами, а также обработку и хранение информации в ходе распределенных вычислений.
BOINC-сервер – центральный сервер, к которому делают запросы клиентские машины. Рассмотрим алгоритм автоматической сборки и установки сервера BOINC (см. рис. 1).
Рисунок 1. Алгоритм сборки и установки сервера
Для установки сервера потребуется:
- Определить установленный на компьютере дистрибутив (Ubuntu или Debian).
- В зависимости от установленной операционной системы добавить репозитории, совместимые с нашим дистрибутивом.
Выполняем с правами администратора следующие команды:
- подключаемся и добавляем репозиторий, в котором хранится пакет PHP 5, необходимый для запуска веб-сервера (который входит в состав BOINC):
# sudo add-apt-repository ppa:ondrej/php -y
- обновляем данные репозитория:
# sudo apt-get update
Скачиваем и устанавливаем всех необходимые для сборки BOINC-сервера пакеты и библиотеки:
# sudo apt-get install -y git apache2 python-pip m4 pkg-config autoconf automake perl libtool build-essential libssl-dev mysql-server libmysqlclient-dev libmysqld-dev curl libcurl4-openssl-dev software-properties-common python-software-properties php5.6 php5.6-mysql libapache2-mod-php5.6 php5.6-mbstring php5.6-simplexml
Клонируем репозиторий с исходным кодом BOINC-сервера:
# git clone https://github.com/BOINC/BOINC.git BOINC-server
Переходим в папку со скаченными файлами:
# cd BOINC-server
Конфигурируем и готовимся к сборке сервера:
#./_autosetup 1>../server-autosetup.log 2>../server-autosetup-error.log
#./configure --disable-manager --disable-client 1>../server-config.log 2>../server-config-error.log
- Параметр 1>./*.log – перенаправление стандартного потока в указанный файл.
- Параметр 2>./*.error.log – вывод сообщений об ошибках в указанный файл.
- Скрипт configure – означает, что компиляция будет только серверной части и дополнительных библиотек – если установка идет успешно, об этом скажет последняя строчка, выведенная с помощью скрипта.
- Параметры --disable-manager и --disable-client – указывают конфигуратору, что в процессе сборки нашего проекта не надо собирать manager и client.
--- Build Components: ( libraries server) ---
Обратите внимание на сообщения, выдаваемые в ходе работы скрипта configure, возможно, будут выведены предупреждения наподобие этого:
checking if CFLAG '-include fcgi_stdio.h' works... no
configure: WARNING: fcgi-stdio.h not found.
------------------------------------------------------------
Disabling FCGI. Will not build components that require FCGI
------------------------------------------------------------
Если это не привело к ошибкам скрипта, вам можно либо игнорировать предупреждения, что может привести к возможным проблемам в будущем, либо установить недостающие компоненты и использовать скрипт заново.
Сборка сервера:
# make 1>../server-make.log 2>../server-make-error.log
Создание проекта:
# ./tools/make_project —db_passwd='123123' --db_user='root' --delete_prev_inst --drop_db_first --url_base="http://unixubuntu.my-BOINC-test-project.com" testappw
Параметрами --db_passwd и --db_user мы указываем логин и пароль для доступа к базе данных.
Скрипт выводит сообщения процесса сборки нового проекта. Прежде всего устанавливаются параметры, связанные с доступом к веб-странице проекта (здесь *server –IP*– это имя сервера в сети):
Creating project ' my_example_app ' (short name ' meapp '):
PROJECT_ROOT = /home/BOINCadm/projects/ meapp /
URL_BASE = http://*server -IP*/
HTML_USER_URL = http://* server -IP*/ meapp /
HTML_OPS_URL = http://* server -IP*/meapp_ops/
CGI_URL = ://*server -IP*/meapp_cgi/
KEY_DIR = /home/BOINCamd/projects/meapp/keys/
DB_NAME = meapp
Затем создаются необходимые каталоги.
Setting up server: creating directories
Происходит генерация криптографических ключей.
Keys don't exist in /home/BOINCadm/projects/meapp/keys/; generate them? [Y/n]
Setting up server files: generating keys
Копирование необходимых файлов, создание таблиц базы данных и файлов настроек, установка независимых от приложения служб:
Setting up server files: copying files
Setting up database
Setting up server files: writing config files
Setting up server files: linking cgi programs
update_translations finished
Done installing default daemons
Настройка веб-страницы. Перед настройкой Apache нужно установить правильные права доступа на папку, где содержится сама страница.
# chmod –R 755 html/*
Настройки веб-сервера Apache для нового проекта содержатся в файле testappw.httpd.conf. Откроем файл, в котором мы видим, что данная конфигурация была сгенерирована для Apache 2.2, так как у нас установлена версия Apache 2.4, нам нужно заменить:
Order deny, allow
Deny from all
на:
Require all denied
И:
Order allow, deny
Allow from all
на:
Require all granted
Содержимое файлов настроек подключается либо напрямую, либо через основной файл настроек (все действия необходимо выполнить с правами root):
# root@BOINCserver:/home/BOINCadm/projects/meapp>
# cat meapp.httpd.conf >> /etc/apache2/httpd.conf
Необходимо перезапустить сервер Apache:
# root@BOINCserver:/home/BOINCadm/projects/meapp>
# /etc/init.d/apache2 restart
Установим пароль для доступа к административной части:
# sudo htpasswd -c html/ops/.htpasswd admin
Мы видим главную страницу тестового проекта Berkeley Open Infrastructure for Network Computing, с помощью нее мы связываемся с пользователями нашего проекта. Данная страница является шаблоном сайта проекта, который в дальнейшем необходимо модифицировать (или заменить) под нужды проекта. Для написания программы инсталлятор автоматической установки и развертывания BOINC-сервера использовался скриптовый язык программирования Bash.
Была поставлена цель создать систему, автоматизирующую процесс установки и настройки приложений клиент-серверного приложения BOINC |
Для автоматической установки BOINC-сервера нужно ввести адрес сервера, название проекта, а также пароль от администратора веб-страницы:
read -p "url to server: http://" -e BOINC_URL
BOINC_URL="http://$BOINC_URL"
read -p "project_name: " -e BOINC_NAME
read -p "password for admin web-page: " -e ADMIN_PASSW
echo "url: $BOINC_URL"
echo "project_name: $BOINC_NAME"
- "url to server: http://" -e BOINC_URL – ввод с клавиатуры адреса BOINC-сервера;
- "project_name: " -e BOINC_NAME – ввод с клавиатуры названия проекта;
- "password for admin web-page: " -e ADMIN_PASSW – введение пароля от администратора веб-сервера.
За определение установленного на компьютере дистрибутива отвечает специальная команда:
# dpkg -s lsb-release >/dev/null 2>/dev/null || sudo apt-get -y install lsb-release
# LINUX_DIST=$(lsb_release -a 2>/dev/null | grep "Distributor ID:")
Здесь:
- lsb-release – проверка на установку программы lsb-release, которая отвечает за определение дистрибутива;
- install lsb-release – установка программы, если не была найдена;
- "Distributor ID:" – получение установленного дистрибутива.
Для успешной работы инсталлятора нужно настроить веб-сервер Apache.
# python -c "exec(\"f=open(''${BOINC_NAME}'.httpd.conf', 'r')\\nf2 = open('BOINC.httpd.conf', 'w') \\nfor line in f: f2.write(line .replace('Order deny,allow', '') .replace('Order allow,deny', '') .replace('Allow from all', 'Require all granted') .replace('Deny from all', 'Require all denied'))\")"
# sudo sh -c "cp BOINC.httpd.conf /etc/apache2/ BOINC.httpd.conf"
# sudo sh -c "echo 'Include BOINC.httpd.conf' >> /etc/apache2/apache2.conf"
Здесь представлен код изменения конфигурации Apache на более новую версию. Пайтоновская программа открывает файл с конфигурацией для Apache и заменяет строчки. Помимо представленного выше исходного кода, для хранения информации используется база данных, работа с которой происходит на языке MySQL.
Рассмотрим схему базы данных (см. рис. 2). На рисунке представлены следующие таблицы:
- workunit – описание рабочих заданий для выполнения.
- app_version – описание версий приложений.
- app – хранится информация о приложениях, используемых в рамках проекта.
- credited_job – хранение сведений о пользователе и об описании вычислений.
- platform – указываются программно-аппаратные платформы, «известные» проекту.
- user – сведения о пользователе и связанных с ними хостах.
- result – результаты вычислений по конкретным рабочим заданиям.
- host_app_version – описание версии приложения хостинга.
- user_submit_app – отправка и отслеживание пользователем задания.
Рисунок 2. Схема базы данных
В ходе выполнения работы был проведен анализ компонентов и архитектуры системы Berkeley Open Infrastructure for Network Computing в целях автоматизации установки и запуска приложения, а также создания проекта для задач пользователя. Был предложен алгоритм для автоматической сборки и установки сервера. Для простого использования данного алгоритма была написана программа-инсталлятор на скриптовом языке программирования Bash и использована база данных MySQL.
- https://www.ibm.com/developerworks/ru/library/l-grid/index.html.
- https://ru.wikipedia.org/wiki/Кластер_(группа_компьютеров).
Ключевые слова: распределенные вычисления, вычислительные узлы, автоматизация, Berkeley Open Infrastructure for Network Computing (BOINC), дистрибутив, языки программирования Bash и Python, клиент-сервер, Apache, репозиторий, скрипт, клиент-приложение, конфигурирование, база данных, MySQL.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|