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

Vous aimerez aussi...