Ключевые слова:cluster, freebsd, nfs, (найти похожие документы)
From: Сгибнев Михаил <http://www.dreamcatcher.ru>
Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC)
Subject: Вычислительный кластер под FreeBSD
Оригинал: http://www.dreamcatcher.ru/docs/cluster.html
Вычислительный кластер под FreeBSD
Кластер используется для обьединения двух и более компьютеров,
работающих как одно целое. Кластеры могут использоваться, чтобы
увеличить надежность и/или доступные вычилительные мощности. Кластер
Beowulf - группа обычно идентичных компьютеров PC, которые являются
сетевыми,обьединены в локальную сеть TCP/IP, и используют общие
разделяемые библиотеки и программы. Теперь прежде, чем буден нам
счастье, важно знать, что приложения должны быть написаны для mpicc
чтобы полностью использовать кластерный ресурс. Вы можете
консультироваться с вебсайтом lam для получения информации и обучающих
программ на эту тему. Итак, начнем.
Команды, выполняемые на сервере будут помечены - [сервер]
Команды, выполняемые на ноде кластера будут помечены - [нода]
Команды, выполняемые на всех компьютерах будут помечены - [все]
Первым, чем Вы должны озаботиться - каждая нода кластера должна иметь
DNS имя. Можно не использовать DNS, а пользоваться /etc/hosts.
Здесь не будет рассматриваться конфигурация BIND.
Затем Ваш сервер должен быть сконфигурирован как NFS сервер:
[сервер]
($:~)=> vi /etc/rc.conf
nfs_server_flags="-u -t -n 4 -h 10.0.5.100" #Replace with your
internal ip address.
mountd_enable="YES"
mountd_flags="-l -r"
rpcbind_enable="YES"
rpcbind_flags="-l -h 10.0.5.100" #Replace with your internal ip
address.
nfs_server_enable="YES"
Затем конфигурируем ноды как NFS клиенты:
[нода]
($:~)=> vi /etc/rc.conf
nfs_client_enable="YES"
Следующим этапом экспортируем /home:
[сервер]
($:~)=> vi /etc/exports
/home -maproot=0:0 -network 10.0.5.0 -mask 255.255.255.0
теперь клиенты должны примонтировать его:
[нода]
($:~)=> vi /etc/fstab
10.0.5.100:/home /home nfs rw 0 0
Удостоверьтесь, что NFS работает должным образом перед продолжением.
Следующим этапом устанавливаем lam-mpi. Это должно быть сделано на
всех компьютерах кластера.
[все]
($:~)=> cd /usr/ports/net/lam
($:~)=> make install clean
Устанавливаем вспомогательное программное обеспечение, которое поможет
нам в мониторинге кластера.
[все]
($:~)=> cd /usr/ports/sysutils/ganglia-monitor-core
($:~)=> make install clean
На сервере ставим web-интерфейс к ganglia. HTTP сервер должен быть
установлен с поддержкой PHP и поддержкой графической библиотеки GD.
[сервер]
($:~)=> cd /usr/ports/sysutils/ganglia-webfrontend
($:~)=> make install clean
Теперь конфигурирование.
[все]
($:~)=> cp /usr/local/etc/gmond.conf.sample /usr/local/etc/gmond.conf
($:~)=> vi /etc/gmond.conf
Есть два важных параметра, остальные меняйте по Вашему разумению:
Сперва установите имя кластера:
[все]
name "ClusterName"
Затем интерфейс, используемый кластером:
[все]
mcast_if xl0
($:~)=> cp /usr/local/etc/gmetad.conf.sample
/usr/local/etc/gmetad.conf
Теперь проверьте работу мониторинга кластера. Должна быть запись в
web-интерфейсе для каждого компьютера кластера.
[все]
data_source "ClusterName"10 node1.yourdomain.com:8649
node2.yourdomain.com:8649
Удостоверьтесь, что ClusterName соответствует названию в gmond.conf
файле конфигурации. Значение 10 - интервал опроса компьютеров в
кластере.
Теперь, когда мониторинг настроен, приступим к настройке самого
кластера.
[все]
($:~)=> vi /usr/local/etc/lam-bhost.def
Конфигурируется это легко. Запишите полное имя каждой ноды.
[все]
Node1.yourdomain.com
Node2.yourdomain.com
Попробуем запустить все это дело...
[все]
($:~)=> mv /usr/local/etc/rc.d/gmetad.sh.sample
/usr/local/etc/rc.d/gmetad.sh
($:~)=> mv /usr/local/etc/rc.d/gmond.sh.sample
/usr/local/etc/rc.d/gmond.sh
($:~)=> /usr/local/etc/rc.d/gmetad.sh start
($:~)=> /usr/local/etc/rc.d/gmond.sh start
На сервере запускаем из под непривилегированного пользователя:
[сервер]
($:~)=> lambood -dv
Вы должны увидеть примерно такую картину:
lamboot: boot schema file: /usr/local/etc/lam-bhost.def
lamboot: opening hostfile /usr/local/etc/lam-bhost.def
lamboot: found the following hosts:
lamboot: n0 node1.yourdomain.com
lamboot: n1 node2.yourdomain.com
lamboot: resolved hosts:
lamboot: n0 node1.yourdomain.com --> 10.0.5.100
lamboot: n1 node2.yourdomain.com --> 10.0.5.105
lamboot: found 2 host node(s)
lamboot: origin node is 0 (node1.yourdomain.com)
Executing hboot on n0 (node2.yourdomain.com - 1 CPU)...
lamboot: attempting to execute "hboot -t -c lam-conf.lam -d -v -I
" -H 10.0.5.100 -P 57552 -n 0 -o 0 ""
hboot: process schema = "/usr/local/etc/lam-conf.lam"
hboot: found /usr/local/bin/lamd
hboot: performing tkill
hboot: tkill
hboot: booting...
hboot: fork /usr/local/bin/lamd
[1] 44660 lamd -H 10.0.5.100 -P 57552 -n 0 -o 0 -d
hboot: attempting to execute
Executing hboot on n1 (node2.yourdomain.com - 1 CPU)...
lamboot: attempting to execute "/usr/bin/ssh node2.yourdomain.com
-n echo $SHELL"
lamboot: got remote shell /usr/local/bin/bash
lamboot: attempting to execute "/usr/bin/ssh node2.yourdomain.com
-n hboot -t -c lam-conf.lam -d -v -s -I "-H 10.0.5.100 -P 57552 -n
1 -o 0 ""
hboot: process schema = "/usr/local/etc/lam-conf.lam"
hboot: found /usr/local/bin/lamd
hboot: performing tkill
hboot: tkill
hboot: booting...
hboot: fork /usr/local/bin/lamd
[1] 53214 lamd -H 10.0.5.100 -P 57552 -n 1 -o 0 -d
topology done
lamboot completed successfully
И это хорошо... Добавляем клиентов:
[сервер]
($:~)=> lamnodes
n0 node1.yourdomain.com:1
n1 node2.yourdomain.com:1
Поздравляю! Вы кластеризованы :-) Вы можете открыть браузер и
просмотреть /usr/local/www/data-dist/ganglia и окончательно
донастроить кластер.
Теперь что с этим кластером делать?
Некоторые команды, которые я использую:
[сервер]
($:~)=> tping N
1 byte from 1 remote node and 1 local node: 0.002 secs
1 byte from 1 remote node and 1 local node: 0.001 secs
1 byte from 1 remote node and 1 local node: 0.001 secs
Tping команда - то же самое как утилита ping, но это используется,
чтобы прозвонить узлы в кластере. N (верхний регистр) означает все
узлы в кластере. Если бы я только хотел прозвонить
node2.yourdomain.com, то я использовал бы lamnodes команду, чтобы
узнать, что число, связанное с тем узлом тогда выполняет tping n1 (n1
является node2.yourdomain.com)
Другая возможность - я могу находиться на одной машине и говорить
кластеру запускать приложения на других машинах и делать вывод на
монитор. Пропробуем.
[сервер]
($:~)=> lamexec N echo "hi"
hi
hi
Пинги, это конечно, дело хорошее, но не совсем то, для чего нужен
кластер. Предлагаю заняться самостоятельным изучением lamexec, для
оценки всех его возможностей.
Оригинал на английском: http://www.bsdhound.com/newsread.php?newsid=205
Здраствуйте, подскажите кто-нибудь зачем нужно шарить home через nfs? Можно ли как-то продублировать сервер? чтобы при падении сервера, все быстренько продолжило работать на другом?