Pour assurer la continuité de service d'un serveur Web, il faut disposer d'au moins deux serveurs. Ceux-ci peuvent fonctionner en mode actif/passif avec l'outil Heartbeat où un seul serveur est actif à un instant donné, et l'autre prend le relais en cas de panne du premier.
Pour assurer une performance supplémentaire, on peut aussi choisir un fonctionnement en mode actif/actif avec l'outil HA Proxy. Dans cette configuration, les deux (ou plus) serveurs fonctionnent en simultané : on doit donc mettre en place un répartiteur de charge qui va renvoyer les demandes vers les différents serveurs selon différents critères : chacun son tour (round robin, en fonction de la puissance des machines, etc.
Pour installer HA Proxy :
apt update apt install haproxy
Pour vérifier la version installée :
haproxy -v
Juste après l'installation, le démon ne démarre pas car le fichier de configuration par défaut ne contient pas toutes les directives nécessaires. Il est nécessaire de procéder à une configuration minimale.
HA Proxy fonctionne sur deux parties :
La configuration complète du fichier est décrite ici https://cbonte.github.io/haproxy-dconv/2.6/configuration.html.
Le fichier de configuration est /etc/haproxy/haproxy.cfg . Dans ses options de base, on trouvera :
frontend <nomF_E> bind <IP_publiqueHaProxy>:<port> default_backend <nomB_E> backend <nomB_E> balance <modeRepartition> server <nomServ1> <ip_serv1>:<port_serv1> server <nomServ2> <ip_serv2>:<port_serv2>
frontend proxypublic bind 10.22.30.210:80 default_backend fermeweb backend fermeweb balance roundrobin server web1 192.168.100.212:80 server web2 192.168.100.215:80
haproxy -c -f /etc/haproxy/haproxy.cfg
Le fonctionnement de base, sur l'algorithme roundrobin (ou tourniquet : chacun son tour) peut être optimisé de plusieurs manières cumulables.
server web1 10.22.100.212:80 weight 100 server web2 10.22.100.212:80 weight 50
Le premier serveur recevra 2 fois plus de requêtes que le second
server web1 10.22.100.212:80 check server web2 10.22.100.212:80 check
Chaque serveur sera vérifié avant de lui adresser une requête.
server web1 10.22.100.212:80 maxconn 20 server web2 10.22.100.212:80 maxconn 20
Chaque serveur sera limité à 20 utilisateurs simultanément
les modes possibles :
Le fichier de configuration est haproxy.cfg . Dans ses options on devra mettre les ports en 443 et ajouter mode tcp :
frontend <nomF_E> mode tcp bind <IP_publiqueHaProxy>:443 default_backend <nomB_E> backend <nomB_E> balance <modeRepartition> mode tcp server <nomServ1> <ip_serv1>:443 server <nomServ2> <ip_serv2>:443
frontend proxypublic mode tcp bind 10.22.30.210:443 default_backend fermeweb backend fermeweb mode tcp balance roundrobin server web1 192.168.100.212:443 server web2 192.168.100.215:443