Haproxy est populaire pour l'équilibrage de charge en raison de son efficacité, de sa fiabilité et de sa faible empreinte mémoire et CPU. L'équilibrage de charge est une solution courante pour distribuer horizontalement des applications Web sur plusieurs hôtes tout en offrant aux utilisateurs un point d'accès unique au service.
Il peut être installé sur les principales distributions Linux. Dans ce guide, nous apprendrons comment installer et configurer l'équilibreur de charge HAProxy sur Ubuntu 20.04.
Vérifiez également :
- Comment installer et configurer l'équilibreur de charge HAProxy sur Rocky Linux/Alma Linux 8
- Comment installer et configurer l'équilibreur de charge HAProxy sur Debian 11
Algorithmes d'équilibrage de charge HAProxy
Les algorithmes d'équilibrage sont utilisés pour décider vers quel serveur du backend chaque connexion est transférée. Certaines des options utiles sont les suivantes :
- Roundrobin : chaque serveur est utilisé à tour de rôle en fonction de son poids. Il s'agit de l'algorithme le plus fluide et le plus juste lorsque le temps de traitement des serveurs reste également réparti. Cet algorithme est dynamique, ce qui permet d'ajuster les pondérations des serveurs à la volée.
- Leastconn : le serveur avec le plus petit nombre de connexions est choisi. Round-robin est effectué entre les serveurs avec la même charge. L'utilisation de cet algorithme est recommandée pour les sessions longues, telles que LDAP, SQL, TSE, etc., mais il n'est pas très bien adapté aux sessions courtes telles que HTTP.
- Premier : le premier serveur avec des emplacements de connexion disponibles reçoit la connexion. Les serveurs sont choisis de l'identifiant numérique le plus bas au plus élevé, qui correspond par défaut à la position du serveur dans la batterie. Une fois qu'un serveur atteint sa valeur maxconn , le serveur suivant est utilisé.
- Source : l'adresse IP source est hachée et divisée par le poids total des serveurs en cours d'exécution pour désigner le serveur qui recevra la requête. De cette façon la même adresse IP client atteindra toujours le même serveur tandis que les serveurs restent les mêmes.
Table des matières
- S'assurer que le serveur est à jour
- Installer HAProxy
- Configurer HAProxy en tant qu'équilibreur de charge
- Tester la configuration
- Mot de passe protégeant la page de statistiques HAProxy
1. S'assurer que le serveur est à jour
Avant de continuer, assurons-nous que le serveur est à jour. Utilisez cette commande pour y parvenir :
sudo apt update
sudo apt upgrade -y
2. Installer Haproxy
Le paquet fournissant haproxy est disponible dans le référentiel Debian par défaut. Installez à l'aide de cette commande :
sudo apt install -y haproxy
Confirmez l'installation avec cette commande :
$ apt-cache policy haproxy
haproxy:
Installed: 2.0.13-2ubuntu0.3
Candidate: 2.0.13-2ubuntu0.3
Version table:
*** 2.0.13-2ubuntu0.3 500
500 http://eu-west-3.ec2.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
100 /var/lib/dpkg/status
2.0.13-2 500
500 http://eu-west-3.ec2.archive.ubuntu.com/ubuntu focal/main amd64 Packages
3. Configurer HAProxy comme équilibreur de charge
Pour configurer HAProxy en tant qu'équilibreur de charge, nous devons lui indiquer le type de connexions qu'il doit écouter et où les connexions doivent être relayées. Cela se fait en créant un fichier de configuration /etc/haproxy/haproxy.cfg
avec les paramètres de définition.
Équilibrage de charge sur la couche 4
Lors de l'installation, HAProxy aura déjà un modèle pour configurer l'équilibreur de charge. Ouvrez le fichier de configuration à l'aide de votre éditeur de texte, j'utilise vim :
sudo vim /etc/haproxy/haproxy.cfg
Ajoutez ce contenu pour configurer l'interface d'écoute et l'interface principale vers lesquelles le trafic sera équilibré.
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server <server1 name> <private IP 1>:80 check
server <server2 name> <private IP 2>:80 check
Remplacez le
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server web_server_1 10.70.5.41:80 check
server web_server_2 10.70.5.187:80 check
Ce qui précède définit un équilibreur de charge de couche 4 avec un nom de front-end http_front écoutant le numéro de port 80, qui dirige ensuite le trafic vers le backend par défaut nommé http_back. L'URI de statistiques supplémentaires /haproxy?stats
active la page de statistiques à cette adresse spécifiée.
Équilibrage de charge sur la couche 7
Nous pouvons également configurer l'équilibreur de charge pour qu'il fonctionne sur la couche 7. Ceci est utile lorsque des parties de votre application Web se trouvent sur différents hôtes. Ceci peut être accompli en conditionnant le transfert de connexion par exemple par l'URL.
Ouvrez le fichier de configuration à l'aide de votre éditeur de texte, j'utilise vim :
sudo vim /etc/haproxy/haproxy.cfg
Ajoutez ensuite ces configurations
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server <server name> <private IP>:80 check
server <server name> <private IP>:80 check
backend blog_back
server <server name> <private IP>:80 check
server <server name> <private IP>:80 check
Le frontal déclare une règle ACL nommée url_blog qui s'applique à toutes les connexions dont les chemins commencent par /blog. Use_backend définit que les connexions correspondant à la condition url_blog doivent être servies par le backend nommé blog_back, tandis que toutes les autres requêtes sont gérées par le backend par défaut.
Côté backend, la configuration configure deux groupes de serveurs, http_back comme avant et le nouveau appelé blog_back qui héberge spécifiquement les connexions à example.com/blog.
Après avoir effectué les configurations, enregistrez le fichier et redémarrez HAProxy avec la commande suivante.
sudo systemctl restart haproxy
Si vous obtenez des erreurs ou des avertissements au démarrage, vérifiez la configuration pour toute erreur de frappe, puis essayez de redémarrer à nouveau.
Configuration SSL
Si vous avez un fichier de clé privée et un fichier de certificat que vous souhaitez utiliser avec HAProxy, combinez-les avec cette commande.
cat citizix.fullchain.pem citizix.key > citizix.pem
Configurez ensuite HAProxy pour utiliser le certificat SSL sur le frontend.
frontend http_front
bind *:80
bind *:443 ssl crt /etc/letsencrypt/live/apps.citizix.com/citizix.pem
4. Tester la configuration
Avec le HAProxy configuré et en cours d'exécution, ouvrez l'adresse IP publique de votre serveur d'équilibrage de charge dans un navigateur Web et vérifiez que vous êtes correctement connecté à votre backend. Le paramètre stats uri dans la configuration active la page de statistiques à l'adresse définie.
http://<Haproxy public IP>/haproxy?stats
Lorsque vous chargez la page de statistiques et que tous vos serveurs sont répertoriés en vert, votre configuration a réussi !
La page de statistiques contient des informations utiles pour suivre vos hébergeurs Web, y compris les temps de fonctionnement et d'arrêt et le nombre de sessions. Si un serveur est répertorié en rouge, vérifiez qu'il est sous tension et que vous pouvez lui envoyer un ping depuis la machine d'équilibrage de charge.
Si votre équilibreur de charge ne répond pas, vérifiez que les connexions HTTP ne sont pas bloquées par un pare-feu. Vérifiez également que HAProxy est en cours d'exécution avec la commande ci-dessous.
sudo systemctl status haproxy
5. Mot de passe protégeant la page de statistiques HAProxy
Cependant, avoir la page de statistiques simplement répertoriée à l'avant est ouverte à tous, ce qui n'est peut-être pas une si bonne idée. Au lieu de cela, vous pouvez le configurer avec son propre numéro de port en ajoutant l'exemple ci-dessous à la fin de votre haproxy.cfg
dossier. Remplacez le nom d'utilisateur et le mot de passe par quelque chose de sécurisé.
listen stats bind *:8181 stats enable stats uri / stats realm Haproxy\ Statistics stats auth username:password
Après avoir ajouté le nouveau groupe d'écoute, supprimez l'ancienne référence à l'URI des statistiques du groupe frontal. Une fois terminé, enregistrez le fichier et redémarrez HAProxy.
sudo systemctl restart haproxy
Ensuite, ouvrez à nouveau l'équilibreur de charge avec le nouveau numéro de port et connectez-vous avec le nom d'utilisateur et le mot de passe que vous avez définis dans le fichier de configuration.
http://<load balancer public IP>:8181
Vérifiez que vos serveurs signalent toujours tout en vert, puis ouvrez uniquement l'adresse IP de l'équilibreur de charge sans aucun numéro de port sur votre navigateur Web.
http://<load balancer public IP>/
Si vos serveurs principaux ont au moins des pages de destination légèrement différentes, vous remarquerez qu'à chaque fois que vous rechargez la page, vous obtenez la réponse d'un hôte différent.
Conclusion
C'est ça! Dans ce guide, nous avons appris à installer et à configurer HAProxy pour équilibrer la charge du trafic. Cela augmentera les performances et la disponibilité de votre application Web.