HeartBeat
Heartbeat - керуюча програма, що є серцем високонадійного та продуктивного кластеру на основі Лінукс. Вона запускає скрипти при старті сервісів чи коли комп'ютер вмикається/вимикається.
Версія 1 (альфа)
Встановлення
Опис можна прочитати тут: heartbeat.8
В Gentoo встановлюємо так:
# emerge sys-cluster/heartbeat
В Debian виконуємо:
# apt-get install heartbeat
Налаштування heartbeat
В каталозі документації /usr/doc/heartbeat-*/
можна знайти хороші приклади
файлів authkeys
, ha.cf
, haresources
, котрі раджу скопіювати в /etc/ha.d/
heartbeat для Apache
heartbeat для DHCP
heartbeat для DNS
heartbeat для Firewalls
heartbeat для LVS
heartbeat для LDAP
heartbeat для NFS поверху DRDB
Детальна інструкція по NFS: NFS - мережева файлова система та DRBD: Drbd - кластер дисків.
Приклад конфігурації /etc/ha.d/authkeys
:
# cat /etc/ha.d/authkeys
....
auth 2
1 crc
2 sha1 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere
3 md5 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere
Приклад конфігурації /etc/ha.d/ha.cf
для обох вузлів той же, за вийнятком
ucast eth0 10.0.0.10
замість 10.0.0.11
. Вузли з'єднані також через послідовний
порт:
# cat /etc/ha.d/ha.cf
keepalive 1
deadtime 10
warntime 5
initdead 60
udpport 694
baud 19200
serial /dev/ttyS0
ucast eth0 10.0.0.11
auto_failback on
watchdog /dev/watchdog
node primarydhcp
node secondarydhcp
auto_failback off
, тобто переключення при відключені вузла без підтвердження
адміном DRBD цілісності не відбудеться.
Тільки для Debian: створимо маленький скрипт heartbeat resource
, бо коли
виспиться він краще працює ;-).
# echo 'sleep $1' > /etc/heartbeat/resource.d/sleep
# chmod 755 /etc/heartbeat/resource.d/sleep
Він використовується для створення короткої паузи протягом відключення вузла. Для запобігання помилці "Stale NFS file handle" в дистрі Debian, можливо проблему вже розв'язали. http://lists.linbit.com/pipermail/drbd-user/2004-June/001107.html
Створення ще одного "heartbeat resource" скрипта для Debian, що вбиває всі сервіси NFS для належного вимкнення.
# echo 'killall -9 nfsd' > /etc/heartbeat/resource.d/killnfsd
# chmod 755 /etc/heartbeat/resource.d/killnfsd
Це значить, що скрипт не завжди спиняє всі запущені процеси nfsd. Що може привести до отримання клієнтом помилки "Stale NFS file handle" при спробі зміни вузла.
Приклад конфігурації /etc/ha.d/haresources
для обох вузлів той же. Вказує
heartbeat робити поточний активний вузол DRBD основним, монтувати файлову систему,
вбивати всі завантажені сервіси NFS, завантажувати їх назад, очікувати секунду і
переходити до спільної адреси ІР.
Для Gentoo:
# cat /etc/ha.d/haresources
host-a drbddisk::drbd-resource-0 \
Filesystem::/dev/drbd0::/diskless/10.0.0.101::reiserfs \
nfs \
IPaddr::10.0.0.12/24/eth0
Для Debian:
# cat /etc/ha.d/haresources
host-a drbddisk::drbd-resource-0 \
Filesystem::/dev/drbd0::/diskless/10.0.0.101::reiserfs \
killnfsd \
nfs-common \
nfs-kernel-server \
sleep::3 \
IPaddr::10.0.0.12/24/eth0
На клієнтських машинах відповідно прописуємо:
# mkdir /mnt/root-10.0.0.101
# echo "diskcluster:/diskless/10.0.0.101 /mnt/root-10.0.0.101 nfs defaults 0 0" >> /etc/fstab
# mount -a
Для бездискових станцій можна по аналогії в DRDB загнати і /home, /opt, /usr
# cat /diskless/10.0.0.101/etc/fstab
diskcluster:/diskless/10.0.0.10 / nfs sync,hard,intr,rw,nolock,rsize=8192,wsize=8192 0 0
diskcluster:/opt /opt nfs sync,hard,intr,ro,nolock,rsize=8192,wsize=8192 0 0
diskcluster:/usr /usr nfs sync,hard,intr,ro,nolock,rsize=8192,wsize=8192 0 0
diskcluster:/home /home nfs sync,hard,intr,rw,nolock,rsize=8192,wsize=8192 0 0
# замість наступної стрічки безпечніше і краще використовувати логи через мережу.
diskcluster:/var/log /var/log nfs hard,intr,rw 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs noatime,nodev,nosuid,noexec 0 0
#none /dev/pts devpts gid=5,mode=620 0 0
none /proc/bus/usb usbfs defaults 0 0
#Тільки для кластерів openMosix
none /mnt/mfs mfs dfsa=1 0 0
# for SELinux suport
none /selinux selinuxfs defaults 0 0
"diskcluster" мусить розв'язуватись в спільну адресу ІР кластера 10.0.0.12.
heartbeat для Postfix
heartbeat для Postgresql
heartbeat для Proxy
Література
--Svyat 18:51, 1 жов 2005 (EEST)