© Георгиевский Анатолий, 01.02.2006 - 19.02.2006

Опыт развертывания вычислительного кластера на GNU/Linux

Кластеризация всей страны

Хочется поделиться идеологией кластеризации машин под управлением Linux. Линукс и без того представляет сложность для рядового пользователя, а настройка сервисных функций кажется чем-то невероятно сложным. Да, это так. Задача этой статьи разъяснить структуру и принципы управления кластером.

Постановка задачи

Итак, если есть N вычислительных узлов, как заставить их работать слаженно, производя вычисления над одной задачей? Ответ: Нужен интерфейс обмена сообщениями (MPI), установленный на каждом вычислительном узле.

Только этого не достаточно. Надо придумать эффективный механизм загрузки программы. Программа компилируется на одном из компьютеров, а затем должна быть скопирована на все компьютеры кластера – процедура утомительная и бессмысленная, если производить её вручную.

Можно сформулировать задачу иначе. Все компьютеры кластера должны получить доступ к сетевой папке, должны запустить эту программу от имени определенного пользователя, а результаты вычислений сложить опять-таки в какую-то сетевую папку.

Решение

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

  1. Необходимо организовать аутентификацию пользователей в сети. Прогрессивный способ стоится на использовании базы данных LDAP. LDAP представляет из себя директорию (дерево объектов), в которой хранятся пароли и все индивидуальные настройки пользователей. Кстати, Микрософт тоже использует LDAP-протокол для представления Active Directory. Именно желание подружить пользователей Windows с Linux-ом подвигло нас выбрать именно это решение. Для организации директории мы использовали OpenLDAP сервер, в Linuх сервис называется slapd. LDAP – это просто директория, в которой можно хранить всё что угодно. Slapd реализует протокол доступа к содержимому директории.
  2. Нужно средство перенаправления запросов на аутентификацию. В Linuх такое средство называется Name Service Switch, (NSS). Указание в настройках службы последовательности аутентификации позволяет перенаправить запросы в подсистеме PAM. Средство перенаправления запросов позволяет использовать разные механизмы аутентификации и разные способы хранения учетных записей. Нас интересует перенаправление запросов на сервер LDAP. Средства перенаправления аутентификации устанавливается пакетами libnss_ldap и libpam_ldap, каждое из которых требует настройки на сервер аутентификации (в терминологии Микрософт – контроллер домена).
  3. Необходимо, чтобы автоматически подключалась сетевая папка пользователя. В ходе регистрации LDAP пользователю назначается домашний каталог. После процедуры аутентификации пользователь попадает в свою домашнюю папку. Решение, которое мы сформулировали, сводится к автоматическому подключению удаленной сетевой папки, расположенной на файловом сервере. Папка /home, расположенная на файловом сервере, монтируется в локальную папку /home. Таким образом, содержимое пользовательской папки становится доступным на любом компьютере. Чудо заключается в том, что таким образом можно получить готовое окружение для запуска программного обеспечения используя централизованное управление учетными записями.
  4. Следующим требованием организации нашего кластера является возможность эффективного взаимодействия с пользователями Windows. Для этой цели мы используем сервис доступа к файлам, Samba 3. Samba, так же как и NT сервера поддерживает файловые сервисы и контроллер домена для Window и Linux. Пользователи linux могут подключать дисковые ресурсы с использованием файловой системы smbfs, свойственной Windows. Пользователи windows могут использовать те же дисковые ресурсы, те же файлы, что и пользователи linux.

Результаты

  • Нам удалось подружить пользователей двух систем и организовать пространство для совместной работы, обеспечив при этом централизованное управление учетными записями и файловыми ресурсами.
  • Нам удалось создать конфигурацию серверов и персональных компьютеров, позволяющую эффективно использовать вычислительные ресурсы кластера под управлением Linux и кластера организованного на базе компьютерного класса под управлением Windows.
  • Мы надеемся, что перевод контроллера домена и файловых сервисов на платформу GNU/Linux позволит существенным образом повысить готовность системы в целом.

Необходимость перевода контроллера домена с платформы Windows Server мы сформулировали, когда количество учетных записей превысило несколько сотен. Особенно остро вопрос встал в ходе создания учебного класстера. Имеется некоторая специфика использования контроллера домена и файловых ресурсов в задачах параллельного программирования, которая для нас определила неизбежность перевода системы на платформу Linux. При одновременном запуске задач на двадцати или пятидесяти компьютерах, контроллер домена должнен произвести соответствующее количество операций регистрации одного и того же пользователя, чья учетная запись используется при запуске приложения, распространить по сети копии исполняемых файлов, подключить соответствующее количество сетевых папок и обеспечить их совместное использование. Увы, компьютеры под управлением Windows не позволяют производить аутентификацию более 7 сеансов одновременно. При этом установка соединения затягиватеся на несколько секунд важных для процесса инициализации MPI-приложений.

Практические советы пользователям

Установление доверительных отношеий между компьютерами кластера

Начинается всё очень просто, с генерации персонального ключа к учетной записи. Сертификат кодируется секретным образом с применением пользовательского пароля и в итоге состоит из двух компонент, ключей. Одним ключом можно открыть, а другим закрыть. Ключ можно завизировать авторитетным способом, подкрепить авторитетом организации, печать на него поставить,.. и всем раздать. Что одним ключом закрыто, открыть может только владелец второго, открывательного ключа. На этом самом принципе построена вся система шифрования соединений, на том же принципе строится система шифрования при авторизации пользователей.

Для свободного перемещения между компьютерами кластера можно реализовать аутентификацию с применением персональных ключей. Закрывательный (секретный) и открывательный (открытый - public) ключи для своей учетной записи можно создать командой

$ ssh-keygen -t rsa
$ cp .ssh/id_rsa.pub .ssh/authorized_keys

В скрытой папке .ssh/ будет создано два ключа пригодных для создания соединения. Вторая команда копирует ключ для проверки подлинности (открытый ключ) в список авторизованных пользователей. Эта операция выполняется самим пользователем и касается только прав доступа к его собственой учетной записи.

В нашей системе домашний каталог пользователя находится на файловом сервере, и доступен любому вычислительному узлу кластера. При установке соединения между компьютерами кластера по ssh или scp для данной учетной записи пароль запрашиваться не будет.

Такие отношения между компьютерами называются доверительными (trusted computing). Пользователь проходит аутентификацию на любом из компьютеров кластера или на любом из компьютеров входящих в домен, а затем имеет возможность беспрепятственного решния своих задач на компьютерах кластера. Например, это оказывается очень полезно для запуска одинаковых приложений или скриптов на нескольких компьютерах кластера.

(1 февраля 2006 г. - 19 февраля 2006 г.)