Skip navigation

Debian 9 : HAproxy avec SSL

Intallation de HAproxy sous Debian 9 avec gestion de SSL

IP Rôle Nom de l’hôte
172.16.0.10 HAproxy ha
172.16.0.11 Server web 1 web1
172.16.0.12 Server web 2 web2

: le type de load balancing pour cette procédure est le roundrobin.

Sur ha, installation de haproxy.

root@debian~#: apt install -y haproxy

Configuration de HAproxy sans SSL

Changer le type de redirection de http (couche 7 du modèle OSI) vers tcp (couche 4 du modèle OSI).

root@debian~#: vim /etc/haproxy/haproxy.cfg

aperçu du contenu du fichier

[…]
defaults
    log     global
    mode    tcp
    option  tcplog
[…]

Dans ce même fichier ajouter les frontend et les backend.

aperçu du contenu du fichier

[…]
frontend www
   bind *:80
   default_backend web

backend web
   balance roundrobin
   mode tcp
   server web1 172.16.0.11:80 check
   server web2 172.16.0.12:80 check

haproxy est en place, pour le tester il suffit naviguer sur http://172.16.0.10/ qui mène à l’un des serveur web.

Pour s’assurer que le load balancing fonctionne comme attendu, faire un tail -f sur le fichier de logs haproxy.

root@debian~#: tail -f /var/log/haproxy.log

aperçu du contenu du fichier

Jan 12 14:01:59 ha haproxy[842]: 172.16.0.1:51560 [12/Jan/2019:14:01:50.314] www web/web1 1/0/8963 1513 -- 0/0/0/0/0 0/0
Jan 12 14:02:13 ha haproxy[842]: 172.16.0.1:51564 [12/Jan/2019:14:02:05.964] www web/web2 1/0/8002 503 -- 0/0/0/0/0 0/0
Jan 12 14:02:30 ha haproxy[842]: 172.16.0.1:51566 [12/Jan/2019:14:02:14.537] www web/web1 1/0/15912 1266 -- 0/0/0/0/0 0/0
Jan 12 14:02:43 ha haproxy[842]: 172.16.0.1:51572 [12/Jan/2019:14:02:31.980] www web/web2 1/0/11195 754 -- 0/0/0/0/0 0/0
Jan 12 14:02:45 ha haproxy[842]: 172.16.0.1:51576 [12/Jan/2019:14:02:44.026] www web/web1 1/0/1685 754 -- 0/0/0/0/0 0/0
Jan 12 14:02:49 ha haproxy[842]: 172.16.0.1:51580 [12/Jan/2019:14:02:47.417] www web/web2 1/0/1962 752 -- 0/0/0/0/0 0/0

: On voit que le frontend www fait appel au backend web lui-même renvoyant vers web1 ou web2.

Configuration de HAproxy avec SSL

Éditer une nouvelle fois le fichier de configuration de haproxy.

root@debian~#: vim /etc/haproxy/haproxy.cfg

aperçu du contenu du fichier

[…]
frontend http
    bind *:80
    mode http
    redirect scheme https if !{ ssl_fc }

frontend https
    bind *:443
    option tcplog
    mode tcp
    default_backend www

backend www
    mode tcp
    balance roundrobin
    server web1 172.16.0.11:443 check
    server web2 172.16.0.12:443 check

Cette fois 2 frontend sont présent http et https. Le frontend http gère les requêtes non SSL pour les rediriger vers le frontend https via l’option redirect scheme https if !{ ssl_fc }.
Le frontend https lui, renvoie vers le backend www.

De la même façon que précédement, le load balancing peut être vérifier via les logs de haproxy.

root@debian~#: tail -f /var/log/haproxy.log

aperçu du contenu du fichier

Jan 12 14:41:53 ha haproxy[896]: 172.16.0.1:40432 [12/Jan/2019:14:41:53.720] https www/web2 1/0/6 1680 CD 1/0/0/0/0 0/0
Jan 12 14:42:01 ha haproxy[896]: 172.16.0.1:40434 [12/Jan/2019:14:42:01.474] https www/web1 1/0/6 1680 CD 1/0/0/0/0 0/0
Jan 12 14:42:07 ha haproxy[896]: 172.16.0.1:40436 [12/Jan/2019:14:42:02.940] https www/web2 1/0/4411 2771 -- 0/0/0/0/0 0/0
Jan 12 14:42:09 ha haproxy[896]: 172.16.0.1:40444 [12/Jan/2019:14:42:09.344] https www/web1 1/0/7 1680 CD 1/0/0/0/0 0/0
Jan 12 14:42:15 ha haproxy[896]: 172.16.0.1:40446 [12/Jan/2019:14:42:15.727] https www/web2 1/0/6 1680 CD 1/0/0/0/0 0/0
Jan 12 14:42:22 ha haproxy[896]: 172.16.0.1:40448 [12/Jan/2019:14:42:17.872] https www/web1 1/0/4639 2493 -- 0/0/0/0/0 0/0

Afficher les statisques de HAproxy

Éditer la configuration de HAproxy.

root@debian~#: vim /etc/haproxy/haproxy.cfg

aperçu du contenu du fichier

[…]
listen stats
    bind :9000
    mode http
    stats enable
    stats hide-version
    stats realm HAproxy-statistics
    stats uri /haproxy_stats
    stats auth user:password
Option Description
listen stats Définie une section d’écoute nommé « stats »
bind :9000 Port d’écoute permettant d’accéder à la page de statistiques
stats enable Active la page de statistique
stats hide-version Cache la version de HAproxy
stats realm HAproxy-statistics Titre de la page de statistiques
stats uri /haproxy_stats URL d’accés à la page de statistiques
stats auth user:password Identifiant permettant d’accéder à la page de statistiques

Suivant cette configuration les statistiques sont accessible à : http://172.16.0.10:9000/haproxy_stats

by | January 12, 2019 | No Comments | Système | Tags : clus cluster sécurité ssl