Итак, у нас в наличии 4 сервера HP, из которых 3 сервера будут объединены в кластер, а один будет консолью управления. На всех серверах будет развернут Linux SLES 10 SP2 и openMPI, также будет организован беспарольный доступ по SSH между консолью и серверами.
Приступим:
Устанавливаем Linux с минимальными настройками системы, необходимые пакеты можно будет доставить позже. Обратим внимание на то, что архитектура компонентов всех узлов кластера должна быть идентична.
Загружаем пакет openMPI на узлы кластера, собираем и устанавливаем их.
./configure
make
make install
После установки openMPI следующим шагом нашей работы будет компиляция программы вычисления числа Pi на каждом узле кластера. Для этого нам понадобится пакет libopencdk, который присутствует в YAST’e и исходный код программы вычисления числа Pi (flops.f). После того как пакет установлен, а программа помещена в ту директорию, которая будет одинакова на всех узлах кластера и узле управления (консоли), приступаем к компиляции программы:
mpif77 flops.f -o flops
Устанавливаем беспарольный доступ по ssh, тут все просто:
1) Заходим на консоль кластера и генерируем rsa-ключ командой:
ssh-keygen -t rsa
2) Копируем публичный ключ консоли (root/.ssh/id_rsa.pub) на все узлы кластера, в моем случае:
scp /root/.ssh/id_rsa.pub server1:/root/.ssh
3) На каждом узле кластера создаем файл доступа:
cat id_rsa.pub >> authorized_keys
Беспарольный доступ готов.
Следующий шаг — формирование файла со списком узлов всех наших кластеров назовем его openmpi.host и положим его в папку с нашей тестовой программой расчета числа Pi. Узлы в файле можно указывать, как по именам, так и просто, по адресам. Например:
192.168.0.1
192.168.0.2
192.168.0.3
Serv1
Serv2
Serv3
Итак, настройка консоли и узлов кластера закончена, переходим к стадии тестирования:
Запускаем программу на 1 сервере, для этого на узле управления запускаем команду:
mpirun -hostfile /var/mpi/openmpi.host -np 1 var/mpi/flops
Где:
–np число узлов кластер используемых при вычислениях.
Calculation time (s) — время вычисления операций.
Cluster speed (MFLOPS) — количество операций с плавающей запятой в секунду.
Получаем следующий результат:
Calculation time = 4.3
Cluster speed = 418 MFLOPS
Добавим еще 1 сервер в кластер:
mpirun -hostfile /var/mpi/openmpi.host -np 2 var/mpi/flops
Получаем следующий результат:
Calculation time = 1.82
Cluster speed = 987 MFLOPS
Добавим последний, 3 сервер в кластер:
mpirun -hostfile /var/mpi/openmpi.host -np 3 var/mpi/flops
Получаем следующий результат:
Calculation time = 1.18
Cluster speed = 1530 MFLOPS
Время вычисления операций (секунды):

Количество операций с плавающей запятой в секунду (MFLOPS):

Проанализировав полученные данные, можно сделать вывод, что при добавлении нового узла в кластер, производительность всей системы в целом возрастает на (1/N) * 100%.
Я не ставил себе целью в этой статье проанализировать варианты решения конкретных прикладных задач на кластерных решениях. Моя цель состояла в том, что бы показать эффективность работы кластерных систем. А также на примере продемонстрировать архитектуру построения кластерного элемента в структуре сети.
UPD: Спасибо за конструктивную критику uMg и 80x86, соответствующие изменения были внесены в статью.