Распределенные вычисления: Часть 5. Интерфейс администрирования проекта BOINC

1. Введение

Мы продолжаем исследование платформы BOINC, предназначенной для создания и обеспечения работы проектов распределенных вычислений. Те, кому принцип «volunteer computing» интересен лишь с точки зрения пользователя, могут остановиться на первой статье (см. п. 1 раздела «Ресурсы»). Следующие статьи серии посвящены созданию и поддержке проектов на основе BOINC: во второй статье (п. 2 раздела «Ресурсы») рассказывается о базовой архитектуре сервера проектов BOINC, в следующих двух статьях («Ресурсы», п. 3 и 4) даются инструкции по развертыванию проекта распределенных вычислений и описываются основные служебные файлы и каталоги. В этой статье будет рассказано о том, как перенести администрирование проекта в онлайн с помощью специального веб-интерфейса. Также вы узнаете о том как быстро и без особых усилий создать форум для собственного проекта.

2. Управление проектом BOINC через браузер

Не только реализация алгоритмов взаимодействия клиентских программ привлекала внимание разработчиков проекта BOINC. Значительные усилия были потрачены на создание шаблонного веб-сайта проекта (главная страница этого сайта появлялась в третьей статье серии, см. п. 3 раздела «Ресурсы»). Это было сделано для того, чтобы авторы каждого нового проекта могли сразу же начинать привлекать пользователей и организовывать работу. Кроме различных возможностей по регистрации пользователей и команд, ведению статистики и предоставлению различной информации, касающейся проекта, шаблонный сайт содержит и собственный веб-интерфейс к системе управления проектом.

Далее будет подробно рассказано о том, что представляет из себя этот web-интерфейс администрирования, как получить к нему доступ и какие варианты идентификации/аутентификации доступны изначально.

2.1 Общая информация о веб-интерфейсе администрирования

По многим причинам управление проектом лучше выносить за пределы самого сервера. Основная из этих причин заключается в обеспечении безопасности — используя (правильно разработанный) веб-интерфейс администрирования, значительно сложнее своими ошибочными действиями кардинально навредить проекту. Уход от командной строки означает, что уже не нужно волноваться об опечатках, например, в команде удаления файла или при внесении изменений в базу данных… Кроме того, переходя на веб-администрирование, можно запретить удаленный доступ к серверу, сохраняя при этом возможности управления проектом из любой точки доступа к сети Интернет.

К основным возможностям интерфейса администрирования проекта BOINC относятся следующие:

  • просмотр содержимого базы данных;
  • просмотр профилей пользователей;
  • управление «специальными пользователями» (т. е. модераторами форума);
  • создание приложений проекта, редактирование информации о самих приложениях, их версиях и поддерживаемых платформах;
  • рассылка индивидуальных и многоадресных сообщений зарегистрированным пользователям проекта;
  • просмотр результатов вычислений, статистики использования ресурсов и т.п.;
  • управление рабочими заданиями;
  • просмотр лог-файлов;
  • просмотр сообщений об ошибках.

Получить доступ к интерфейсу управления можно по адресу http://boincserver.domain.ru/myapp_ops (естественно, адрес указан для проекта myapp, размещенного по адресу boincserver.domain.ru). Файлы PHP, реализующие весь упомянутый выше функционал, находятся в подкаталоге html/ops каталога проекта.

2.2 Получение доступа к интерфейсу администрирования

Набрав указанный ранее адрес веб-интерфейса администрирования, вы уже наверняка обнаружили, что для доступа к странице необходим какой-то пароль! Естественно, сделано это в целях обеспечения безопасности проекта — пользователь, попавший на эту страницу получает большие возможности по управлению проектом!

По умолчанию доступ к веб-интерфейсу администрирования ограничен с помощью файла .htaccess, лежащим в каталоге ~/projects/html/ops.

 boincadm@boincserver:~/projects/html/ops> more .htaccess
 AuthName "myapp"
 AuthType Basic
 AuthUserFile /home/boinc/projects/myapp//html/ops/.htpasswd
 require valid-user

Для того, чтобы иметь возможность проходить аутентификацию, необходимо в том же каталоге создать файл .htpasswd с именем и паролем администратора проекта BOINC с помощью специальной утилиты htpasswd2:

 boincadm@boincserver:~/projects/html/ops> htpasswd2 -cb ./.htpasswd boinc password

В результате, в указанном нами каталоге появится файл .htpasswd с именем пользователя и хэшем пароля, что позволит проходить аутентификацию при обращении к странице web-интерфейса администрирования.

*.htaccess (англ. hypertext access) — это файл дополнительных настроек Apache и подобных ему web-серверов. При использовании файла .htaccess можно без изменения основного файла настроек httpd.conf задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах, например, устанавливать управляемый доступ к каталогам, переназначать типы файлов и т.д. .htaccess является подобием основного файла настроек httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги (если это не переопределяется директивами нижележащих файлов .htaccess). Возможность использования .htaccess в том или ином каталоге указывается в httpd.conf (директива AllowOverride). Наиболее часто файлы настроек .htaccess используют в следующих целях: 1) Авторизация и аутентификация Указываются ограничения на доступ для конкретного каталога. Как правило, используемые при этом имена и пароли пользователей хранятся в файле .htpasswd. 2) Обработка ошибок Изменение веб-страниц, передаваемых клиенту при возникновении ошибок на стороне сервера (например ошибка HTTP 404 Not Found). 3) Изменение URL-адресов Изменение длинных и излишне сложных URL-адресов на короткие и легко запоминающиеся. 4) Контроль кэша Управление клиентским кешированием (веб-браузерами и кеширующими прокси) для уменьшения использования полосы пропускания, загрузки сервера и задержек. Файл .htpasswd (англ. hypertext password) содержит имена и хэши паролей для доступа к ресурсам Apache и других подобных ему web-серверов. Файл состоит из строк, каждая из которых соответствует паре логин/хеш пароля. Логин отделяется от хеша двоеточием. Для создания файлов .htpasswd, добавления в них новых записей или модификации существующих используется утилита htpasswd2 (входит в состав Apache).

Рис. 1. Web-интерфейс администрирования проекта BOINC

Аутентификация при помощи пары файлов .htaccess и .htpasswd — не единственный способ разграничения доступа к системе администрирования проекта. Разработчиками платформы BOINC предусмотрены еще два варианта аутентификации:

 1. разрешение на доступ определенному списку пользователей;
 2. разрешение на доступ пользователям, у которых установлены флаги ADMIN или DEV 
    в forum_preferences.privileges (т. е. являющиеся администраторами и разработчиками проекта).

Если вас не устраивает ни один из предложенных вариантов разграничения доступа, вы всегда можете разработать свой (например, добавить проверку IP-адреса) — для этого нужны лишь базовые знания языка PHP. За предоставление доступа к веб-интерфейсу администрирования отвечает функция auth_ops() в файле ~/projects/myapp/html/project/project.inc:

 function auth_ops() {
     // проверка разрешений на доступ пропускается, если скрипт запущен из консоли
     if (!$_SERVER['REMOTE_ADDR']) {
         return;
     }
     // вход разрешен пользователю с идентификатором 1
     if (0) {
         auth_ops_userid(array(1));
         return;
     }
     // вход разрешен пользователям с установленными флагами ADMIN и DEV
     if (0) {
         auth_ops_privilege();
         return;
     }
     // по умолчанию доступ запрещен всем
     auth_ops_deny();
 }

Чтобы задействовать один из двух вариантов аутентификации, предусмотренных разработчиками платформы BOINC, необходимо убрать (всегда ложное) условие if (0). Естественно, что при использовании проверки на установленные флаги ADMIN и DEV, необходимо предоставить соответствующие полномочия тем пользователям, которые получат право управления проектом. Сделать это можно через тот же веб-интерфейс: запомнив идентификаторы пользователей-будущих администраторов и разработчиков проекта (ссылка Users главной страницы веб-интерфейса администрирования), нужно перейти по ссылке «Manage special users» и там для каждого из идентификаторов отметить необходимые галочки («Project administrator» или «Project developer» для флагов ADMIN и DEV соответственно). Теперь указанные пользователи смогут получить доступ к управлению проектом. Того же эффекта можно добиться, напрямую выполнив команду

 UPDATE forum_preferences SET special_user='0100000' WHERE userid='1'

в базе данных проекта (для пользователя с идентификатором 1, который должен стать администратором проекта или special_user='0010000' — для разработчика проекта).

3. Форум проекта

Для всех проектов BOINC очень важное значение имеет социальная составляющая, то есть работа с сообществом. Без большого числа пользователей-участников проект не получит необходимых вычислительных мощностей, а следовательно, будет медленнее продвигаться к своей цели. Поэтому важно помогать пользователям (особенно начинающим) решать неизбежно возникающие проблемы. Наиболее эффективный способ такой помощи заключается в организации форума. Однако и для создания форума вам не придется совершать лишних действий — все необходимое уже сделано разработчиками платформы BOINC!

*BOINC (Berkeley Open Infrastructure for Network Computing — Открытая платформа Университета Беркли для сетевых вычислений) — это свободная (распространяется под лицензией GNU LGPL) программная платформа для проведения распределенных вычислений по принципу «volunteer computing». Система BOINC была разработана в Калифорнийском университете в Беркли под руководством Дэвида Андерсона (David Anderson) командой, создавшей легендарный проект SETI@home. Основным мотивом разработки системы послужила нехватка свободных вычислительных мощностей для обработки данных, поступающих от радиотелескопов. Именно поэтому разработчики решили привлечь вычислительные ресурсы и объединить сообщества нескольких научных проектов. Для решения этой масштабной задачи и была создана программная платформа BOINC. На текущий момент в проектах, основанных на BOINC, используются более 340 тысяч активных компьютеров, а суммарная производительность вычислительных мощностей участников проекта превышает 1,9 Петафлопс, что с лихвой перекрывает возможности самого мощного из суперкомпьютеров. Суммарную статистику проектов, основанных на платформе BOINC, можно увидеть на официальной странице http://boinc.berkeley.edu/ (EN).

Форум проекта BOINC создается буквально одной командой:

 root@/home/boinc/projects/myapp/html/ops/> php create_forums.php

Однако, выполнив ее сразу, вы увидите следующее сообщение:

 edit script to use your forum names, and remove the die()

Разработчики указывают на то, что необходимо изменить стандартную структуру форума перед его созданием. Сделать это нужно в том самом файле create_forums.php, который фигурировал в предыдущей команде. Здесь (ближе к концу файла) вы увидите следующие строки:

 $catid = create_category(0, ", 0);
 create_forum($catid, 0, "Science", "Discussion of this project\'s science");
 create_forum($catid, 1, "Number crunching", "Credit, leaderboards, CPU performance");
 create_forum($catid, 2, "Cafe", "Meet and greet other participants");
 $catid = create_category(0, "Platform-specific problems", 1);
 create_forum($catid, 0, "Windows", "Installing and running BOINC on Windows");
 create_forum($catid, 1, "Unix/Linux", "Installing and running BOINC on Unix and  Linux");
 create_forum($catid, 2, "Macintosh", "Installing and running BOINC on Mac OS/X");
 $catid = create_category(1, "General issues", 1);
 create_forum($catid, 3, "Getting started", "Creating your account");
 create_forum($catid, 4, "Preferences", "Using preferences");
 create_forum($catid, 5, "Wish list", "What new features would you like to see?");
 create_forum($catid, 6, "Web site", "Issues involving this web site");

Они и описывают структуру форума. Конечно, вы можете оставить все как есть (или хотя бы перевести на родной язык названия разделов), а можете полностью изменить структуру, добавив новые разделы.

После этого закомментируйте или удалите строку

 die("edit script to use your forum names, and remove the die()\n");

и снова запускайте команду

 root@/home/boinc/projects/myapp/html/ops/> php create_forums.php

Теперь любой участник вашего проекта BOINC сможет попасть в раздел «Доска объявлений»:

Рис. 2. Основной форум проекта BOINC

и в раздел «Вопросы и ответы» (так эти форумы называются по умолчанию — ищите ссылки на главной странице проекта в разделе Сообщество):

Рис. 3. Дополнительный форум проекта BOINC

4. Заключение

Платформа BOINC не зря завоевала такую большую популярность среди проектов распределенных вычислений. Разработчики позаботились о том, чтобы упростить развертывание проекта и добавили изрядное количество полезных мелочей. К таким «мелочам» относится, в частности, веб-интерфейс к системе администрирования. Он позволяет обойтись без использования потенциально опасных протоколов удаленного доступа к серверу, оставляя возможность управления проектом через любую точку Интернет-доступа. Форум проекта обеспечивает удобство взаимодействия с участниками проекта, позволяя коллективно решать насущные вопросы и помогать новичкам. И создание форума проекта, и организация доступа к веб-интерфейсу администрирования не требуют особых дополнительных усилий со стороны администратора проекта — обо всем позаботились разработчики платформы BOINC!

Эта статья заканчивает большую тему, посвященную администрированию проектов BOINC. Настало время перейти непосредственно к программированию приложений, способных повысить эффективность расчетов благодаря использованию большого числа слабо взаимодействующих между собой узлов. Именно такие приложения и придают смысл распределенным вычислениям «volunteer computing».


Статья взята с http://www.ibm.com

 
ru/chast_5.txt · Последние изменения: 2011/12/11 13:11 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Driven by DokuWiki