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)
