Heartbeat

Le but de heartbeat c’est de garder un service allume à tout moment, comme les services roulent sur une machine si la machine tombe heartbeat va démarrer le service sur une autre machine.

hang01 /hang02 virt address : 192.168.100.225 hang01 = master

Pour faire cette manipulation, il faudra reprendre les snapshots fait tout'à l'heure. On va faire la restauration des machines avant de faire l'installation de keepalived. cat /etc/heartbeat/README.conf

You need three configuration files to make heartbeat happy, and they all go in this directory.

They are: ha.cf Main configuration file haresources Resource configuration file authkeys Authentication information

These first two may be readable by everyone, but the authkeys file must not be.

The good news is that sample versions of these files may be found in the documentation directory (providing you installed the documentation).

If you installed heartbeat using rpm packages then this command will show you where they are on your system: rpm -q heartbeat -d

If you installed heartbeat using Debian packages then the documentation should be located in /usr/share/doc/heartbeat

Ajouter nos fichiers de configuration dans le répertoire configuration

cd /usr/share/doc/hearbeat/
gunzip ha.cf.gz haresources.gz
cp ha.cf haresources authkeys /etc/heartbeat/
cd /etc/heartbeat

Editer la configuration:

nano /etc/heartbeat/hs.cf

debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local0
keepalive 2
deadtime 10
warntime 6
initdead 60
bcast ens18
node hang01
node hang02

# a la fin du fichier!
hang01 192.168.100.225/24/ens18 nginx

auth 2
2 sha1 0Poseidon

chmod 600 /etc/heartbeat/authkeys

systemctl disable nginx
systemctl restart heartbeat

cl_status hbstatus
cl_status nodestatus hang01

Script and service

Heartbeat se met en fonction qu’une fois le master ne répond pas sur l'interface réseau aux messages broadcast, donc il n’a rien à voir avec les services peu importe lesquelles.

Nous voulons que heartbeat bascule sur l'autre serveur dès que le service nginx tombe en panne.

Voici le script qui va tester l'état de nginx chaque 2 secondes si le service et découvert comme inactif, il va étendre le service heartbeat, cela va automatiquement faire le basculement sur la machine slave qui va prendre la main sur le service nginx.

#!/bin/bash
IFS=$'\n'

while true
do

ng_status=$(systemctl is-active nginx)
hb_status=$(systemctl is-active heartbeat)

if [[ $ng_status == inactive ]] && [[ $hb_status == active ]]; then
        systemctl stop heartbeat
elif [[ $ng_status == active ]] && [[ $hb_status == inactive ]]; then
        systemctl start heartbeat
fi

sleep 2
done

Suis le fichier de configuration service au démarrage. nano /lib/systemd/system/start_ha-hb.service

[Unit]
Description=Stoping and starting heartbeat
After=network-online.target

[Service]
Type=simple
ExecStart=/root/scripts/script_ha_hb.sh
Restart=allways

[Install]
WantedBy=multi-user.target


ln -s /lib/systemd/system/start_ha-hb.service /etc/systemd/system/multi-user.target.wants/
systemctl daemon-reload
systemctl enable start_ha-hb.service
systemctl start start_ha-hb.service

Conclusion

Ce projet m’a appris que parfois, c’est mieux faire ses propres outils.