HA Proxy – Load Balanceur
Sous débian il existe ce logiciel qui permet de mettre en place un load balanceur entre plusieurs serveurs.
Je ne vais pas détailler ici l’installation car d’autres articles sur le web en parle, mais plutôt mettre le fichier de configuration qui m’as permis de faire fonctionner l’ensemble en https, avec la gestion des certificats (c’est sur ce point que j’ai pas mal galéré !)
Voici le fichier de conf (/etc/haproxy/haproxy.cfg) :
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
#On défini la partie frontend
frontend frontend-base
# On défini l'IP et le port sur lequel va écouter le proxy (IP du serveur HA)
bind 192.168.1.2:80
# on défini l'écoute sur le port 443, et on indique ou se situe le certificat du domaine
bind *:443 ssl crt /etc/haproxy/certs/mon_domaine.com.pem
http-request redirect scheme https unless { ssl_fc }
# On indique le nom de la partie backend dispo plus bas
default_backend backend-base
# On active le fait de ne pas forward les requêtes avec l'IP du proxy mais avec l'IP du ou des clients
option forwardfor
# On défini la partie backend
backend backend-base
# On utilise la méthode roundrobin pour le loadbalancing
balance roundrobin
# On défini les serveurs qui sont en backend
#Ici en http
#server server1 192.168.1.3:80 check
#server server2 192.168.1.4:80 check
cookie AMSERVERID insert indirect nocache maxlife 48h
option forwardfor
http-request set-header X-Client-IP %[src]
http-request set-header X-Forwarded-For %[src]
http-request set-header X-Forwarded-Server %[req.hdr(Host)]
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
#Ici en https
server AM1 192.168.1.3:443 ssl verify none check inter 30s cookie AM1
server AM2 192.168.1.4:443 ssl verify none check inter 30s cookie AM2
A connaitre aussi : haproxy -c -f /etc/haproxy/haproxy.cfg
Cette commande permettant de débuguer le fichier de conf
Pour relancer le service la commande : Service haproxy restart
En ce qui concerne le certificat il doit être au format PEM et ici : /etc/haproxy/certs/mon_domaine.com.pem
Quelques articles ressources :
Debian 10 : Créer un proxy load-balancer HAProxy HTTP – Notamax
HAProxy version 2.7.9-12 – Configuration Manual
HAProxy SSL Terminaison (déchargement) Tout ce qu’il faut savoir