La haute disponibilité de HAProxy :
Heartbeat et l'IP virtuelle
HAProxy balance la charge, mais qui balance HAProxy ? Deux répartiteurs en cluster, une IP virtuelle qu'ils se passent de main en main, et un battement de coeur qui décide qui est vivant.
1 · Présentation
Heartbeat (LinuxHA) met plusieurs serveurs Linux en cluster pour le fail-over : un serveur « passif » attend, prêt à prendre le relais du serveur « actif » en panne. Le cluster détient une IP virtuelle par laquelle les clients passent, plutôt que par l'IP d'un serveur.
Le but simplifié : qu'il y ait TOUJOURS une réponse au ping vers l'IP virtuelle, quel que soit le serveur qui la porte.
Cornucopia · Application Pratique sur le Terrain
Appliquer les configurations optimisées pour soutenir les pics de consultation des abonnés de la ferme.
2 · Installation
Après avoir vérifié l'interconnectivité des deux serveurs (un simple ping) :
3 · Configuration
Les fichiers de configuration doivent être identiques sur les deux serveurs, dans /etc/ha.d (ou /etc/heartbeat, lien symbolique). Trois fichiers suffisent : ha.cf, authkeys et haresources.
uname -n) plutôt que par leurs IP. Pour
les tests, le fichier /etc/hosts fait la résolution; en production,
c'est le rôle d'un serveur DNS comme Bind9.3.1 · Le fichier ha.cf
Sur les deux serveurs :
3.2 · Le fichier authkeys
Par sécurité, restreindre les droits du fichier :
3.3 · Le fichier haresources
Les actions à mener au basculement : quand un serveur passe de passif à actif, il lit ce fichier. Ici : prendre l'IP virtuelle.
3.4 · Correctif pour Ubuntu récent
Ubuntu ne nomme plus ses interfaces réseau de la même manière, ce qui casse la configuration par défaut de Heartbeat. Sur Ubuntu Server 24.04 LTS et versions ultérieures, installer d'abord :
Puis corriger l'interface par défaut :
Remplacer
OCF_RESKEY_nic_default="eth0" par
OCF_RESKEY_nic_default="enp0s8", puis :
4 · Démarrage et test
Démarrer le service sur chaque serveur :
Le test facile de l'IP virtuelle
5 · Faire en sorte que HAProxy utilise l'IP virtuelle
5.1 · Autoriser le binding d'une IP non locale
Ajouter à la fin :
Application immédiate (ou attendre le prochain démarrage) :
5.2 · Reconfigurer HAProxy sur l'IP virtuelle
- Dans frontend site_http :
remplacer
bind 192.168.56.40:80(IP locale) par l'IP virtuelle192.168.56.49. - Dans frontend site_https :
remplacer
bind 192.168.56.40:443par192.168.56.49.
6 · Que fait-on avec WordPress ?
WordPress doit connaître l'adresse par laquelle on le joint : lui donner l'IP virtuelle au lieu de celle qu'il avait jusqu'à maintenant.
Références d'origine : it-connect.fr - Clustering et haute disponibilité sous Linux avec Heartbeat · howtoforge.com - High availability load balancer with HAProxy and Heartbeat · Document du cours recréé en HTML pour la semaine 8 · Le préalable : le balancement HAProxy avec deux serveurs Varnish.