GNU/Linux >> Tutoriels Linux >  >> Rocky Linux

Comment installer et configurer l'équilibreur de charge HAProxy sur Rocky Linux/Alma Linux 8

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 Rocky Linux 8. Ce guide fonctionne également sur d'autres distributions basées sur RHEL 8 comme Alma Linux et Oracle Linux.

Vérifiez également :

  • Comment installer et configurer l'équilibreur de charge HAProxy sur Debian 11
  • Comment installer et configurer l'équilibreur de charge HAProxy sur Ubuntu 20.04

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é pour les 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

  1. S'assurer que le serveur est à jour
  2. Installer HAProxy
  3. Configurer HAProxy en tant qu'équilibreur de charge
  4. Tester la configuration

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 dnf -y update

2. Installer Haproxy

Le package fournissant haproxy est disponible dans le Rocky Linux Repos par défaut. Installez à l'aide de cette commande :

sudo dnf install -y haproxy

Confirmez l'installation avec cette commande :

$ rpm -qi haproxy
Name        : haproxy
Version     : 1.8.27
Release     : 2.el8
Architecture: x86_64
Install Date: Tue 11 Jan 2022 09:39:45 PM UTC
Group       : System Environment/Daemons
Size        : 4446585
License     : GPLv2+
Signature   : RSA/SHA256, Wed 19 May 2021 05:13:23 AM UTC, Key ID 15af5dac6d745a60
Source RPM  : haproxy-1.8.27-2.el8.src.rpm
Build Date  : Wed 19 May 2021 02:37:50 AM UTC
Build Host  : ord1-prod-x86build004.svc.aws.rockylinux.org
Relocations : (not relocatable)
Packager    : [email protected]
Vendor      : Rocky
URL         : http://www.haproxy.org/
Summary     : HAProxy reverse proxy for high availability environments
Description :
HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high
availability environments. Indeed, it can:
 - route HTTP requests depending on statically assigned cookies
 - spread load among several servers while assuring server persistence
   through the use of HTTP cookies
 - switch to backup servers in the event a main one fails
 - accept connections to special ports dedicated to service monitoring
 - stop accepting connections without breaking existing ones
 - add, modify, and delete HTTP headers in both directions
 - block requests matching particular patterns
 - report detailed status to authenticated users from a URI
   intercepted from the application

Vous pouvez vérifier le numéro de version installé avec la commande suivante.

haproxy -v

Ceci est la sortie sur ma machine

$ haproxy -v
HA-Proxy version 1.8.27-493ce0b 2020/11/06
Copyright 2000-2020 Willy Tarreau <[email protected]>

L'installation est alors terminée. Continuez ci-dessous avec les instructions de configuration de l'équilibreur de charge pour rediriger les requêtes vers vos serveurs Web.

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  par ce que vous voulez appeler vos serveurs sur la page des statistiques et la  par les adresses IP privées des serveurs vers lesquels vous souhaitez diriger le trafic Web. C'est la configuration que j'utilise sur mon serveur

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 auparavant 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 des statistiques

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.


Rocky Linux
  1. Comment installer et configurer docker dans Rocky Linux/Centos 8

  2. Comment installer et configurer Ansible sur Rocky Linux/CentOS 8

  3. Comment installer Erlang sur Rocky Linux/Alma Linux/CentOS 8

  4. Comment installer et utiliser Podman dans Rocky Linux/Alma Linux/Centos 8

  5. Comment installer et configurer PHP et Nginx (LEMP) sur Rocky Linux/Alma Linux 8

Comment installer et configurer HAProxy sur Rocky Linux 8

Comment installer et configurer Fail2ban sur Alma Linux 8

Comment installer PHP 8 sur Alma Linux et Rocky Linux

Comment installer et configurer Mono sur Rocky Linux 8 et CentOS 8

Comment installer et configurer TensorFlow sur Rocky Linux 8

Comment installer et configurer OpenCV sur Rocky Linux 8.4