GNU/Linux >> Tutoriels Linux >  >> Ubuntu

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

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

  1. S'assurer que le serveur est à jour
  2. Installer HAProxy
  3. Configurer HAProxy en tant qu'équilibreur de charge
  4. Tester la configuration
  5. 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  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 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.


Ubuntu
  1. Comment installer et configurer Algo VPN Server sur Ubuntu 20.04

  2. Comment installer et configurer le serveur DHCP sur Ubuntu 20.04

  3. Comment installer et configurer le serveur Redis dans Ubuntu

  4. Comment configurer l'équilibreur de charge HAProxy

  5. Comment installer et configurer l'équilibreur de charge HAProxy sur Debian 11

Comment installer et configurer le serveur Web Apache sur Ubuntu

Comment installer et configurer le serveur LAMP sur Ubuntu

Comment installer et configurer le serveur OpenLDAP sur Ubuntu 16.04

Comment installer et configurer le serveur VNC sur Ubuntu 20.04

Comment installer et configurer VNC sur Ubuntu Server 20.04

Comment installer et configurer le serveur DNS sur Ubuntu 16.04 LTS