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)