**Распределенные вычисления: Часть 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**'' {{:ru:chast5_myapp_ops.jpg|}} Аутентификация при помощи пары файлов .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**'' {{:ru:chast5_myapp_forum1.jpg|}} и в раздел «Вопросы и ответы» (так эти форумы называются по умолчанию — ищите ссылки на главной странице проекта в разделе Сообщество): ''**Рис. 3. Дополнительный форум проекта BOINC**'' {{:ru:chast5_myapp_forum2.jpg|}} **4. Заключение** Платформа BOINC не зря завоевала такую большую популярность среди проектов распределенных вычислений. Разработчики позаботились о том, чтобы упростить развертывание проекта и добавили изрядное количество полезных мелочей. К таким «мелочам» относится, в частности, веб-интерфейс к системе администрирования. Он позволяет обойтись без использования потенциально опасных протоколов удаленного доступа к серверу, оставляя возможность управления проектом через любую точку Интернет-доступа. Форум проекта обеспечивает удобство взаимодействия с участниками проекта, позволяя коллективно решать насущные вопросы и помогать новичкам. И создание форума проекта, и организация доступа к веб-интерфейсу администрирования не требуют особых дополнительных усилий со стороны администратора проекта — обо всем позаботились разработчики платформы BOINC! Эта статья заканчивает большую тему, посвященную администрированию проектов BOINC. Настало время перейти непосредственно к программированию приложений, способных повысить эффективность расчетов благодаря использованию большого числа слабо взаимодействующих между собой узлов. Именно такие приложения и придают смысл распределенным вычислениям «volunteer computing». ---- Статья взята с http://www.ibm.com