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.