Программный комплекс автоматической установки связи с системой распределенных вычислений::Журнал СА 3.2018
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

 Читать далее...

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9886
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8100
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8200
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5195
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5873
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 Программный комплекс автоматической установки связи с системой распределенных вычислений

Архив номеров / 2018 / Выпуск №3 (184) / Программный комплекс автоматической установки связи с системой распределенных вычислений

Рубрика: Карьера/Образование /  Пятая пара

Павел Поваляев ПАВЕЛ ПОВАЛЯЕВ, бакалавр, Московский авиационный институт (национально исследовательский университет), 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. Алгоритм сборки и установки сервера

Рисунок 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. Схема базы данных

Рисунок 2. Схема базы данных

В ходе выполнения работы был проведен анализ компонентов и архитектуры системы Berkeley Open Infrastructure for Network Computing в целях автоматизации установки и запуска приложения, а также создания проекта для задач пользователя. Был предложен алгоритм для автоматической сборки и установки сервера. Для простого использования данного алгоритма была написана программа-инсталлятор на скриптовом языке программирования Bash и использована база данных MySQL.

  1. https://www.ibm.com/developerworks/ru/library/l-grid/index.html.
  2. https://ru.wikipedia.org/wiki/Кластер_(группа_компьютеров).

Ключевые слова: распределенные вычисления, вычислительные узлы, автоматизация, Berkeley Open Infrastructure for Network Computing (BOINC), дистрибутив, языки программирования Bash и Python, клиент-сервер, Apache, репозиторий, скрипт, клиент-приложение, конфигурирование, база данных, MySQL.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru