Рубрика:
Карьера/Образование /
Пятая пара
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ПАВЕЛ ПОВАЛЯЕВ, Московский авиационный институт (национальный исследовательский университет), магистр
Программный комплекс для автоматической связи с платформой BOINC
В статье рассказывается о том, как облегчить установку и настройку данного программного комплекса
В исследованиях в математики, физики и многих других науках требуется обработка информации или вычисление расчетных операций. С этой целью были созданы системы, способные сократить время обработки в десятки раз. Для этого были созданы разнородные программные «прослойки» между управляющим сервером и вычислительными узлами. Одна из таких «прослоек» BOINC.
В данной статье будут решены следующие задачи:
- автоматизировать установку системы;
- настроить подключение к серверу;
- запустить виртуальный BOINC-сервер;
- создать проект на сервере;
- настроить BOINC-клиент для работы с проектом.
Была поставлена цель создать систему, автоматизирующую процесс установки и настройки приложений BOINC-клиент и BOINC-сервер для разработки проектов системы распределенных вычислений BOINC. Далее нужно запустить BOINC-клиенты для работы над созданным проектом.
BOINC-сервер – центральный сервер, к которому делают запросы клиентские машины. Рассмотрим алгоритм сборки и установки сервера. Общую схему можем увидеть на рис. 1.
Рисунок 1. Алгоритм сборки и установки сервера
В данной работе нам нужно иметь понимание о кластерах. Кластер – это многопроцессорный, многоядерный компьютер, на котором выполняются задачи пользователя, связанные высокоскоростной сетью и объединенные специальным программным обеспечением. Для расчетных операций используются кластерные (распределенные) вычисления. Именно открытая программная платформа BOINC организует распределенные вычисления.
Платформа BOINC-клиент-сервер состоит из программы-клиента и составного сервера BOINC, это дает возможность использовать несколько компьютеров в качестве сервера.
Разработка алгоритма автоматической сборки и установки сервера BOINC
Для установки сервера потребуется выполнить следующее.
Шаг 1. Определяем установленный на компьютере дистрибутив (Ubuntu или Debian).
Шаг 2. В зависимости от установленной операционной системы добавляются совместимые репозитории с нашим дистрибутивом.
Выполняем с правами администратора команды:
Подключаемся и добавляем репозиторий, в котором хранится пакет PHP 5, необходимый для запуска веб-сервера (который входит в состав BOINC):
sudo add-apt-repository ppa:ondrej/php -y
Обновляем данные репозитория:
sudo apt-get update
Шаг 3. Cкачивание и установка всех необходимых для сборки 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
Шаг 4. Клонируем репозиторий с исходным кодом BOINC-сервера:
git clone https://github.com/BOINC/BOINC.git BOINC-server
Шаг 5. Переходим в папку со скачанными файлами:
cd BOINC-server
Шаг 6. Конфигурирование и подготовка к сборке сервера:
./_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
------------------------------------------------------------
Если это не привело к ошибкам скрипта, вам можно либо игнорировать предупреждения, что может привести к возможным проблемам в будущем, либо установить недостающие компоненты и использовать скрипт по новой.
Шаг 7. Сборка сервера:
make 1>../server-make.log 2>../server-make-error.log
Шаг 8. Создание проекта:
./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
Шаг 9. Настройка веб-страницы. Перед настройкой 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
Мы видим главную страницу тестового проекта BOINC, с помощью нее мы связываемся с пользователями нашего проекта (см. рис. 2). Данная страница является шаблоном сайта проекта, который в дальнейшем необходимо модифицировать или заменить под нужды проекта.
Рисунок 2. Веб-страница
Для написания программы инсталлятор автоматической установки и развертывания BOINC-сервера использовался скриптовый язык программирования Bash.
Для автоматической установки 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 и заменяет строчки.
В ходе исследования была выполнена следующая работа:
- определение дистрибутива;
- скачивание и установка пакетов и библиотек;
- конфигурирование и сборка сервера;
- создание проекта;
- настройка веб-страницы;
- проверка функциональности проекта в рамках сервера BOINC;
- разработана программа на языке программирования Bash;
- тестирование разработанной программы.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|