Debian 9 : HAproxy avec SSL – Pass-Through
Intallation de HAproxy sous Debian 9 avec gestion de SSL – Pass-Through
Articles liés : HAproxy : afficher les statistiques Debian 9 : HAproxy avec SSL – SSL Termination
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
Vérifier tester le fichier de configuration.
root@debian~#: haproxy -c -V -f /etc/haproxy/haproxy.cfg
sortie
Configuration file is valid
Redémarrer le service.
root@debian~#: systemctl restart haproxy
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 – Pass-Through
Éditer une nouvelle fois le fichier de configuration de haproxy
.
root@debian~#: vim /etc/haproxy/haproxy.cfg
aperçu du contenu du fichier
[…] 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