Heartbeat - серце кластеру
Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.
|
|
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 - мережева файлова система та DRDB: 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 сервіси, завантажувати 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)


