BLOG | NGINX

Équilibrage de charge avec NGINX et NGINX Plus, partie 1

NGINX-Partie-de-F5-horiz-black-type-RGB
Vignette d'Owen Garrett
Owen Garrett
Publié le 20 février 2014

NGINX est un proxy accélérateur capable d’une large gamme d’applications basées sur HTTP. Sa mise en cache, son traitement des connexions HTTP et son déchargement augmentent considérablement les performances des applications, en particulier pendant les périodes de forte charge.

Éditeur – NGINX Plus Release 5 et versions ultérieures peuvent également équilibrer la charge des applications basées sur TCP. L'équilibrage de charge TCP a été considérablement étendu dans la version 6 par l'ajout de contrôles de santé, de reconfiguration dynamique, de terminaison SSL, etc. Dans NGINX Plus Release 7<.htmla> et versions ultérieures, l'équilibreur de charge TCP présente une parité fonctionnelle complète avec l'équilibreur de charge HTTP. La prise en charge de l’équilibrage de charge UDP a été introduite dans la version 9.

Vous configurez l'équilibrage de charge TCP et UDP dans le contexte de flux au lieu du contexte http . Les directives et paramètres disponibles diffèrent quelque peu en raison des différences inhérentes entre HTTP et TCP/UDP ; pour plus de détails, consultez la documentation des modules HTTP et TCP Upstream.

NGINX Plus étend les capacités de NGINX en ajoutant des fonctionnalités d’équilibrage de charge supplémentaires : contrôles de santé , persistance de session , surveillance de l’activité en direct et configuration dynamique de groupes de serveurs à charge équilibrée .

Cet article de blog vous guide tout au long de la configuration de NGINX pour équilibrer la charge du trafic vers un ensemble de serveurs Web. Il met en évidence certaines des fonctionnalités supplémentaires de NGINX Plus.

Pour en savoir plus, vous pouvez également consulter le Guide d’administration NGINX Plus et l’article de suivi de celui-ci, Équilibrage de charge avec NGINX et NGINX Plus, partie 2 .

Trafic proxy avec NGINX

Nous commencerons par acheminer le trafic vers une paire de serveurs Web en amont. La configuration NGINX suivante est suffisante pour mettre fin à toutes les requêtes HTTP sur le port 80 et les transférer de manière circulaire sur les serveurs Web du groupe en amont :

http { serveur {
écoute 80 ;

emplacement / {
proxy_pass http://backend ;
}
}

backend en amont {
serveur web-serveur1 : 80 ;
serveur web-serveur2 : 80 ;
}
}

Avec cette configuration simple, NGINX transmet chaque requête reçue sur le port 80 au serveur Web 1 et au serveur Web 2 à tour de rôle, établissant une nouvelle connexion HTTP dans chaque cas.

Définition de la méthode d'équilibrage de charge

Par défaut, NGINX utilise la méthode Round Robin pour répartir le trafic de manière uniforme entre les serveurs, informé par un « poids » facultatif attribué à chaque serveur pour indiquer sa capacité relative.

La méthode de hachage IP distribue le trafic en fonction d'un hachage de l'adresse IP source. Les requêtes provenant de la même adresse IP client sont toujours envoyées au même serveur en amont. Il s'agit d'une méthode de persistance de session brute qui est recalculée chaque fois qu'un serveur tombe en panne ou récupère, ou chaque fois que le groupe en amont est modifié ; NGINX Plus offre de meilleures solutions si la persistance de session est requise.

La méthode Least Connections achemine chaque requête vers le serveur en amont avec le moins de connexions actives. Cette méthode fonctionne bien lors du traitement d’un mélange de demandes rapides et complexes.

Toutes les méthodes d’équilibrage de charge peuvent être ajustées à l’aide d’un paramètre de pondération facultatif sur la directive du serveur . Cela a du sens lorsque les serveurs ont des capacités de traitement différentes. Dans l'exemple suivant, NGINX dirige quatre fois plus de requêtes vers web-server2 que vers web-server1 :

backend en amont { zone backend 64k; least_conn; serveur web-server1 poids=1; serveur web-server2 poids=4 ; }

Dans NGINX, les poids sont gérés indépendamment par chaque processus de travail. NGINX Plus utilise un segment de mémoire partagée pour les données en amont (configuré avec la directive zone ), de sorte que les poids sont partagés entre les travailleurs et le trafic est distribué plus précisément.

Détection de panne

S'il y a une erreur ou un délai d'attente lorsque NGINX tente de se connecter à un serveur, de lui transmettre une demande ou de lire l'en-tête de réponse, NGINX réessaie la demande de connexion avec un autre serveur. (Vous pouvez inclure la directive proxy_next_upstream dans la configuration pour définir d'autres conditions pour réessayer la demande.) De plus, NGINX peut retirer le serveur défaillant de l'ensemble des serveurs potentiels et tenter occasionnellement des requêtes contre lui pour détecter quand il récupère. Les paramètres max_fails et fail_timeout de la directive server contrôlent ce comportement.

NGINX Plus ajoute un ensemble de contrôles de santé hors bande qui effectuent des tests HTTP sophistiqués sur chaque serveur en amont pour déterminer s'il est actif, ainsi qu'un mécanisme de démarrage lent pour réintroduire progressivement les serveurs récupérés dans le groupe à charge équilibrée :

serveur web-server1 slow_start=30s;

Un piège courant : réparer l'en-tête de l'hôte

Très souvent, un serveur en amont utilise l’en-tête Host dans la requête pour déterminer le contenu à diffuser. Si vous recevez des imprévus404 des erreurs du serveur ou toute autre chose suggérant qu'il diffuse le mauvais contenu, c'est la première chose à vérifier. Incluez ensuite la directive proxy_set_header dans la configuration pour définir la valeur appropriée pour l'en-tête :

location / { proxy_pass http://backend; # Réécrivez l'en-tête 'Host' avec la valeur de la requête client # ou le nom du serveur principal proxy_set_header Host $host ; # Alternativement, mettez la valeur dans la configuration : #proxy_set_header Host www.example.com; }

Équilibrage de charge avancé avec NGINX Plus

Une gamme de fonctionnalités avancées dans NGINX Plus en fait un équilibreur de charge idéal devant des fermes de serveurs en amont :

Pour plus de détails sur l’équilibrage de charge avancé et le proxy, consultez l’article de suivi de celui-ci, Équilibrage de charge avec NGINX et NGINX Plus, partie 2 .

Pour essayer NGINX Plus, démarrez votre essai gratuit de 30 jours dès aujourd'hui ou contactez-nous pour discuter de vos cas d'utilisation d'équilibrage de charge .


« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."