Comment utiliser Nginx comme équilibreur de charge HTTP dans Linux

Comment utiliser Nginx comme équilibreur de charge HTTP dans Linux

Lorsqu'il s'agit de configurer plusieurs serveurs d'applications pour la redondance, l'équilibrage de la charge est un mécanisme couramment utilisé pour distribuer efficacement les demandes de service entrantes ou le trafic réseau à travers un groupe de serveurs back-end.

L'équilibrage de la charge présente plusieurs avantages, notamment une disponibilité accrue des applications grâce à la redondance, à une fiabilité accrue et à l'évolutivité (plus de serveurs peuvent être ajoutés dans le mélange lorsque le trafic augmente). Il entraîne également une amélioration des performances des applications et de nombreux autres avantages.

Lecture recommandée: Le guide ultime pour sécuriser, durcir et améliorer les performances du serveur Web Nginx

Nginx peut être déployé comme un efficace HTTP Load Balancer Pour distribuer le trafic réseau et la charge de travail réseau entre un groupe de serveurs d'applications, dans chaque cas renvoyant la réponse du serveur sélectionné au client approprié.

Les méthodes d'équilibrage de chargement soutenues par Nginx sont:

  • tournoi à la ronde - qui distribue des demandes aux serveurs d'application de manière à la ronde. Il est utilisé par défaut quand aucune méthode n'est spécifiée,
  • le moins connecté - Attribue la demande suivante à un serveur moins occupé (le serveur avec le moins de connexions actives),
  • ip-hash - où une fonction de hachage est utilisée pour déterminer quel serveur doit être sélectionné pour la prochaine demande en fonction de l'adresse IP du client. Cette méthode permet la persistance de session (lier un client à un serveur d'applications particulier).

En outre, vous pouvez utiliser des poids du serveur pour influencer Nginx Algorithmes d'équilibrage de charge à un niveau plus avancé. Nginx Prend également en charge les vérifications de la santé pour marquer un serveur en cas d'échec (pour une durée configurable, la valeur par défaut est dix secondes) si sa réponse échoue avec une erreur, évite ainsi de choisir ce serveur pour les demandes entrantes ultérieures pendant un certain temps.

Ce guide pratique montre comment utiliser Nginx en tant que HTTP Load Balancer pour distribuer des demandes de clients entrants entre deux serveurs ayant chacun une instance de la même application.

À des fins de test, chaque instance d'application est étiqueté (sur l'interface utilisateur) pour indiquer le serveur sur lequel il s'exécute.

Configuration de l'environnement de test

Balancer de chargement: 192.168.58.7 Application Server 1: 192.168.58.5 Application Server 2: 192.168.58.8 

Sur chaque serveur d'applications, chaque instance d'application est configurée pour être accessible à l'aide du domaine tecmintapp.lan. En supposant qu'il s'agit d'un domaine entièrement enregistré, nous ajouterions ce qui suit dans les paramètres DNS.

Un record @ 192.168.58.7 

Cet enregistrement indique aux demandes des clients où le domaine devrait directement vers, dans ce cas, le équilibreur de charge (192.168.58.7). Le DNS UN Les enregistrements acceptent uniquement les valeurs IPv4. Alternativement, le / etc / hôtes Le fichier sur les machines clients peut également être utilisé à des fins de test, avec l'entrée suivante.

192.168.58.7 Tecmintapp.lan 

Configuration de l'équilibrage de la charge Nginx en Linux

Avant de configurer l'équilibrage de la charge de Nginx, vous devez installer Nginx sur votre serveur en utilisant le gestionnaire de package par défaut pour votre distribution comme indiqué.

$ sudo apt install nginx [sur Debian / Ubuntu] $ sudo yum install nginx [sur Centos / Rhel]] 

Ensuite, créez un fichier de blocs de serveur appelé / etc / nginx / confre.d / loadbalancer.confli (Donnez un nom de votre choix).

$ sudo vi / etc / nginx / confre.d / loadbalancer.confli 

Puis copiez et collez la configuration suivante. Cette configuration est par défaut à la ronde-robin car aucune méthode d'équilibrage de charge n'est définie.

 Backend en amont serveur 192.168.58.5; serveur 192.168.58.8;  server écouter 80 default_server; écouter [::]: 80 default_server; server_name tecmintapp.lan; emplacement / proxy_redirect off; proxy_set_header x-real-ip $ Remote_addr; proxy_set_header x-Forwarded-for $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; proxy_pass http: // backend;  

Dans la configuration ci-dessus, le proxy_pass directive (qui doit être spécifiée à l'intérieur d'un emplacement, / / Dans ce cas) est utilisé pour transmettre une demande aux serveurs proxés HTTP référencés à l'aide du mot backend, dans le directive en amont (utilisé pour définir un groupe de serveurs). De plus, les demandes seront distribuées entre les serveurs en utilisant un mécanisme d'équilibrage pondéré.

Pour utiliser le moindre mécanisme de connexion, utilisez la configuration suivante

Backend en amont le moins_connet; serveur 192.168.58.5; serveur 192.168.58.8;  

Et pour activer ip_hash Mécanisme de persistance de session, utilisation:

Backend en amont ip_hash; serveur 192.168.58.5; serveur 192.168.58.8;  

Vous pouvez également influencer la décision d'équilibrage de charge à l'aide du serveur poids. En utilisant la configuration suivante, s'il y a six demandes de clients, le serveur d'applications 192.168.58.5 se verra attribuer 4 demandes et 2 ira 192.168.58.8.

Backend en amont serveur 192.168.58.5 poids = 4; serveur 192.168.58.8;  

Enregistrez le fichier et sortez-le. Assurez-vous ensuite que la structure de configuration Nginx est correcte après avoir ajouté les modifications récentes, en exécutant la commande suivante.

$ sudo nginx -t 

Si la configuration est OK, redémarrez et activez le service Nginx pour appliquer les modifications.

$ sudo systemctl redémarrer nginx $ sudo systemctl activer nginx 

Tester l'équilibrage de la charge Nginx en Linux

Pour tester le Nginx Équilibrage de chargement, ouvrez un navigateur Web et utilisez l'adresse suivante pour naviguer.

http: // tecmintapp.lan 

Une fois l'interface du site Web chargé, prenez note de l'instance d'application qui a chargé. Puis actualiser en continu la page. À un moment donné, l'application doit être chargée à partir du deuxième serveur indiquant l'équilibrage de la charge.

Vérifiez l'équilibrage de la charge de Nginx en Linux

Vous venez d'apprendre à vous installer Nginx En tant qu'équilibreur de charge HTTP dans Linux. Nous aimerions connaître vos réflexions sur ce guide, et en particulier sur l'utilisation de Nginx comme équilibreur de charge, via le formulaire de rétroaction ci-dessous. Pour plus d'informations, consultez la documentation Nginx sur l'utilisation de Nginx comme équilibreur de charge HTTP.