Как вариант можно использовать утилиту heartbeat для построения кластера. Она также умеет передавать сервисы между нодами. На самом деле, при создании кластера по "феншую" принято делать две сети, одна для общения между нодами, другая для общения с внешним миром. Но мне было лень поднимать еще один влан на ESX и я делал все в одной сети.
![]() |
Рис 2. Кластер с отдельным сердцебиением |
Что делает heartbeat? Будучи установленным на все нужные ноды, и одинаково настроенным. При запуске, на одной главной (мастер) ноде устанавливается сетевой под интерфейс с заданным ip адресом. Программа с определенной периодичностью рассылает пакеты в сети. Каждая нода отвечает на них, если по прошествии определенного времени нода не отвечает, он считается мертвой. Если мертвая нода оказалась та, что держит ip адрес, программа принимает решение поднять этот интерфейс на другой (слейв) ноде. Все логично и просто.
3) Настройка общего ip адреса.
Настройка heartbeat осуществляется тремя конфигами:
/etc/ha.d/authkeys
/etc/ha.d/ha.cf
/etc/ha.d/haresources
/etc/ha.d/authkeys
/etc/ha.d/ha.cf
/etc/ha.d/haresources
Для начала их нужно скопировать из доков:
# cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/
# cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/
Файлы authkeys и haresource должны быть одинаковыми на всех нодах, файл ha.cf должен отличаться только разделами mcast и ucast.
a) Файл authkeys, в нем проводится настройка аутентификации взаимодействия между нодами. На выбор три режима:
#1 crc
#2 sha1 HI!
#3 md5 Hello!
Проще всего использовать crc, она не требует генерации ключа.
# nano /etc/ha.d/authkeys
auth 1
1 crc
b) Дальше правим hersource, как не трудно догадаться - файл отвечает за поведение ресурсов.
# nano /etc/ha.d/haresources
node_1 IPaddr::192.168.0.15/24/eth0
Добавил одну строчку, в которой выбрал мастер ноду - node_1, тип ресурса - IPaddr, и присвоил ip-адресс интерфейсу.
c) Остается настроить ha.cf. В нем сосредоточены основные настройки, логирование и т.д.
# nano /etc/ha.d/ha.cf
debugfile /var/log/ha-debug #включаем дебаг в файл
logfile /var/log/ha-log # указываем файл логов
logfacility local0 # степень логов
keepalive 2 # время между биениями в секундах
deadtime 25 # время через которое нода считается мертвой
warntime 10 # время до сигнала в логах "late heatbeat"
initdead 50 # для восстановления сети после ребута
udpport 694 # порт для отправки сигналов
bcast eth1 # использовать этот интерфейс для бродкаста
ucast eth1 192.168.0.13 # интерфейс для юникаста
auto_failback off # не возвращать ресурс после восстановления ноды
node node_1 # перечисляем ноды
node node_2 #
Все, теперь обязательно проверям чтобы в файле /etc/hosts были прописаны все ноды и их адреса. Копируем файлы по нодам.
Запускаем heartbeat на всех нодах:
# service heartbeat start
Через некоторое время, на мастер ноде поднимется под интерфейс:
#ip addr show
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
link/ether 00:50:56:a1:00:52 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.13/24 brd 192.168.0.255 scope global eth1
inet 192.168.0.15/24 scope global secondary eth1
inet6 fe80::250:56ff:fea1:52/64 scope link
valid_lft forever preferred_lft forever
В случае падения этой ноды, такой же интерфейс будет поднят на другой.
Все, на этом мой кластер закончен. Думаю в следующий раз немного напишу про кворинговый диск.
Комментариев нет:
Отправить комментарий