====== Пакет 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