Article original Publié le : 21 aout 2022 Mise à jour le : – |
Simple test d’un comportement de load balancer haproxy avec 2 fronts
Un brouillon que j’avais conservé, je ne sais plus de quel site quand je testais l’alerting sous Prometheus.
L’idée était de simuler quand un nœud est indispo et de récupérer les diverses métriques avec le contexte /stats.
Installer les paquets haproxy et python
1 |
$ sudo apt install haproxy python |
Créer un répertoire test et un fichier index.html et y copié le contenu
1 |
$ mkdir test && cd test |
1 |
$ vim index.html |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>Page de test - index.html</title> </head> <body> <h1>Page de test - index.html</h1> <p>Bienvenue dans le turfu les gars ! </body> </html> |
Puis éditer le fichier de conf d’Haproxy et remplacer tout par le contenu ci-dessous
1 |
$ sudo vim /etc/haproxy/haproxy.cfg |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
defaults mode http timeout server 5s timeout connect 5s timeout client 5s frontend stats bind *:8886 stats enable stats uri /stats stats refresh 5s frontend url bind *:8887 use_backend back_url backend back_url server srv_ha1 127.0.0.1:8888 server srv_ha2 127.0.0.1:8889 |
Redémarrer le service et vérifier son status
1 |
$ sudo systemctl restart haproxy.service |
1 |
$ sudo systemctl status haproxy.service |
Ouvrir 2 terminaux pour simuler le comportement de 2 fronts avec le module python SimpleHTTPServer
1 |
$ python -m SimpleHTTPServer 8888 |
1 |
$ python -m SimpleHTTPServer 8889 |
Lancer la page web avec l’adresse du serveur et le port 8887 (frontend url)
Pour visualiser les stats lancer le port 8886 suivie de l’uri /stats
Tester le load balancing en rafraîchissant la page web ou un curl dans une boucle
1 |
$ while true; do curl http://192.168.3.241:8887; done |
Dans ma capture d’écran ci-dessus, je redirige les ports 8887 et 8886 par 9997 et 9996 liés à mon labs