Load balancing avec nginx : upstream, méthodes et health checks

Load balancing avec nginx

Load balancer nginx : upstream, méthodes, poids, santé | We.Inc

Configurez nginx en load balancer : le bloc upstream, round robin, least_conn, ip_hash et hash, les poids, max_fails et fail_timeout, les serveurs de secours, plus un générateur de configuration.

Pour répartir la charge avec nginx, listez vos serveurs d'application dans un bloc upstream et faites pointer proxy_pass vers son nom. Les requêtes tournent en round robin, sauf si vous ajoutez least_conn, ip_hash, hash ou random. Chaque ligne server peut porter un weight, un max_fails et un fail_timeout pour les contrôles de santé passifs, ainsi que les options backup ou down.

Méthodes de répartition de charge nginx

Répartir le trafic sur plusieurs copies d'une application est l'une des plus anciennes tâches de nginx, et toute la configuration tient en une douzaine de lignes. Le générateur ci-dessous écrit le bloc upstream à partir d'une liste de serveurs, signale les combinaisons que nginx refuse et affiche la part de requêtes de chaque serveur quand des poids s'appliquent. La référence qui suit couvre chaque paramètre de server avec sa valeur par défaut.

Questions fréquentes

nginx open source propose-t-il des health checks actifs ?

Non. La directive health_check fait partie de l'offre commerciale NGINX Plus. nginx open source s'appuie sur des contrôles passifs : si une requête vers un serveur échoue max_fails fois pendant fail_timeout, le serveur est écarté pendant fail_timeout, puis retesté avec du trafic réel.

Quelles sont les valeurs par défaut de max_fails et fail_timeout ?

max_fails vaut 1 par défaut et fail_timeout 10 secondes. Une seule tentative échouée écarte donc un serveur pendant dix secondes. Avec max_fails=0, le décompte est désactivé pour ce serveur.

Comment rendre les sessions persistantes (sticky) avec nginx ?

Utilisez ip_hash pour garder chaque adresse client sur un même serveur, ou hash avec une variable de cookie comme $cookie_session pour un contrôle plus fin. Les directives sticky basées sur les cookies n'existent que dans l'édition commerciale.

À quoi sert le paramètre weight ?

Il modifie le nombre de requêtes qu'un serveur reçoit par rapport aux autres. Avec des poids de 3, 1 et 1, le premier serveur reçoit environ trois requêtes sur cinq en round robin. Le poids par défaut est 1.

nginx peut-il répartir des connexions WebSocket ?

Oui. Faites pointer proxy_pass vers l'upstream et transmettez les en-têtes Upgrade et Connection. least_conn convient mieux que le round robin aux sockets de longue durée, car il compte les connexions que chaque serveur détient déjà.

Où placer chaque élément

Les contrôles de santé passifs, étape par étape

Paramètres de server et leurs valeurs par défaut

Paramètres d'une ligne server dans upstream

Exemples complets

Round robin avec un serveur de secours

Deux serveurs principaux se partagent la charge ; le troisième ne répond que si les deux sont hors service.

least_conn avec connexions réutilisées

keepalive garde en cache les connexions inactives vers les backends ; les deux lignes proxy rendent cela possible.

Affinité de cache par URL

Chaque URL retombe toujours sur le même serveur de cache ; consistent préserve la plupart des correspondances quand un serveur est ajouté ou retiré.

Nom de l'upstream

Méthode

Round robin (par défaut)

Clé de hash

Connexions keepalive inactives (0 pour aucune)

Serveurs

Adresse et port

Poids

fail_timeout (s)

Part

Retirer le serveur {n}

Ajouter un serveur

nginx refuse les serveurs backup avec hash, ip_hash et random. Retirez l'option backup ou changez de méthode.

Tous les serveurs principaux sont marqués down : aucun ne peut recevoir de trafic.

Configuration

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site