====== Пакет HEARTBEAT ======
Преимущества перед CARP и VRRP
* Возможность управления временными характеристиками взаимодействия узлов
* Возможность распределения сервисов по узлам кластера
===== Установка и базовая настройка =====
==== Debian/Ubuntu ====
root@nodeN:~# apt install heartbeat
debian11# cat /etc/rc.local
#!/bin/sh
mkdir /run/heartbeat/
root@nodeN:~# zless /usr/share/doc/heartbeat/ha.cf.gz
root@nodeN:~# cd /etc/ha.d/
==== FreeBSD ====
[nodeN:~] # pkg install heartbeat
[nodeN:~] # ln -s /usr/local/bin/perl /usr/bin/perl
[nodeN:~] # ls /usr/local/share/doc/heartbeat/
[nodeN:~] # cd /usr/local/etc/ha.d/
==== Debian/Ubuntu/FreeBSD ====
* При использовании 2-го интерфейса будут ошибки в логах из-за общей среды передачи. Для исправления ситуации можно использовать 0-ой интерфейс.
nodeN# cat ha.cf
#bcast eth0
#bcast eth2
#ucast eth1 172.16.1.Y
#ucast eth2 slave
deadtime 30
initdead 120
auto_failback off
node node1.corpX.un
node node2.corpX.un
debugfile /var/log/ha-debug
logfile /var/log/ha-log
nodeN# cat authkeys
auth 1
1 sha1 heartbeatpass
nodeN# chmod 600 authkeys
===== Управление ресурсами =====
nodeN# ls /etc/init.d/
nodeN# ls /etc/ha.d/resource.d/
node1# /etc/ha.d/resource.d/IPaddr2 192.168.X.10/32/eth0 start
node1# /etc/ha.d/resource.d/IPaddr2 192.168.X.10/32/eth0 stop
nodeN# cat haresources
node1.corpX.un IPaddr2::192.168.X.10/32/eth0 proftpd
#node2.corpX.un \
# IPaddr::192.168.X.20/32 \
# IPaddr2::192.168.X.20/32/eth0 \
# smbd
Комментарии, пробелы после \ и пустые строки не допустимы!
В freebsd использовать IPaddr, в Linux IPaddr2 (иначе может привязать адрес не к тому интерфейсу)
===== Запуск/Остановка =====
==== Debian/Ubuntu ====
root@nodeN:~# systemctl enable heartbeat
root@nodeN:~# systemctl start heartbeat
root@nodeN:~# systemctl disable heartbeat
root@nodeN:~# systemctl stop heartbeat
==== FreeBSD ====
[nodeN:~] # service heartbeat rcvar
[nodeN:~] # service heartbeat start
===== Отладка =====
nodeN# tail -f /var/log/ha-debug
nodeN# cat /var/log/ha-debug | grep -v ERR | grep -v autotoken
nodeN# service heartbeat status
nodeN# cl_status nodestatus nodeN.corpX.un