Рассмотрим еще один вариант быстрого развертывания кластера. Прежде чем перейти к технологическим вопросам, определим требования, которые мы предъявляем нашему будущему кластеру.
- Установка кластера должна быть максимально простой
- Установка должна быть выполнена только на одной машине - сервере кластера
- Узлы кластера не должны требовать какой-либо конфигурации
- Кластер должен позволять использовать в качестве узлов бездисковые станции или машины, умеющие выполнять удаленную загрузку по сети (например, в случае использования для кластера сети рабочих станций)
- Кластер не должен требовать синхронизации файловой системы, вместо этого должна использоваться сетевая файловая система
Сеть кластера у нас будет 192.168.1.0/24.
Опишем простую процедуру установки подобного кластера. Действия, которые необходимо выполнить следующие:
- Устанавливаем на будущий сервер кластера операционную систему Linux. Например используем для этого дистрибутив ALT Linux. Система может быть установлена как основная, так и как дополнительная (если используется мультизагрузка).
- Конфигурируем сетевой интерфейс. В качестве ip-адреса сервера выбираем 192.168.1.33. В качестве имени сервера указываем node33.cluster.org.
- Скачиваем архив проекта ThinCluster.
- В файл /etc/hosts записываем содержимое файла /download/hosts.txt.
- Устанавливаем в систему необходимые компиляторы, SSH-клиент, SSH-сервер, NFS-сервер, TFTP-сервер, DHCP-сервер.
- Прописываем в файле /etc/exports каталоги в кторые будет осуществляться доступ по сети.
- Создаем в системе пользователя mpiuser с uid=500, gid=500 и домашней директорией /home/mpiuser
- Создаем каталог /home/mpiuser/.ssh, содержимое которого берем из архива mpiuser-ssh.tar.gz
- Устанавливаем в каталог /usr/local/mpich систему MPICH. Как это делать читаем здесь.
- Создаем конфигурационный файл DHCP /etc/dhcpd.conf, в котором описываем загружаемые узлы кластера. Пример такого конфигурационного файла можно взять в архиве dhcpd.conf.tar.gz. В этом файле описан только один узел, тот, которому присваивается адрес 192.168.1.199. Этот узел является главным и он должен загружаться первым. Вы должны будете поправить файл dhcpd.conf, прописав реальный MAC-адрес сетевой карточки главного узла.
- Создаем каталог /usr/local/linux/ws, в который помещаем корневую файловую систему для узлов кластера. Образ файловой системы берем из файла nfsroot.tar.bz2. Извлечение из архива производим командой tar jxvfp nfsroot.tar.bz2.
- В корневую директорию TFTP-сервера (/var/lib/tftpboot) кладем ядро Linux, которое будет загружаться на узлах сервера. Ядро можем найти в файле bzImage.tar.gz.
- Туда же кладем начальный загрузчик PXE, который находим в архиве pxelinux.tar.gz.
- В каталог /var/lib/tftpboot/pxelinux.cfg кладем конфигурационные файлы, описывающие параметры загрузки для каждого узла кластера. Файлы можно взять в архиве pxelinux.cfg.tar.gz. Узел, которому DHCP присваивает адрес 192.168.1.199, является главным и должен загружаться первым.
- Кластер готов. Теперь мы можем последовательно загрузить узлы кластера, начиная со 192.168.1.199 и выполнить на нем параллельную программу. Для этого после загрузки всех узлов логинимся к серверу как пользователь mpiuser и запускаем параллельную программу, как это описано ранее.
Базовая операционная система сервера кластера может быть как основной и единственной ОС компьютера, который выступает в роли сервера кластера, так и дополнительной ОС при использовании мультизагрузки. В качестве узлов кластера могут выступать как бездисковые станции, поддерживающие режим удаленной загрузки (PXE или с дискет), так и обычные рабочие станции. В последнем случае файловые системы рабочих станций не используются (хотя и могут).
Загрузка кластера должна выполняться строго последовательно, во избежание возможных глюков:
- Загружаем операционную систему сервера кластера
- Выполняем загрузку главного узла - станции, MAC-адресу которой присваивается ip 192.168.1.199
- Последовательно загружаем все остальные узлы кластера.
В текущей версии проекта кластер жестко привязан к ip-адресам. Сеть кластера должна быть 192.168.1.0/24. Адрес сервера кластера должен быть 192.168.1.33. Адрес главного узла кластера должен быть 192.168.1.199. Перенастройка диапазона адресов потребует внесения изменений в некоторые файлы и скрипты сервера и корневой файловой системы узлов кластера. В следующих версиях это ограничение будет снято. Если вас не устраивает выбранный диапазон, вы можете получить консультации по замене сетевых адресов, обратившись лично ко мне.