Nginx ne échoue pas lorsqu’il est utilisé pour l’équilibrage de charge

Nous utilisons Nginx pour équilibrer la charge entre deux serveurs d’applications en amont et nous aimerions être en mesure de prendre l’un ou l’autre lorsque nous y déploierons. Nous constatons que lorsque nous en fermons une, Nginx ne cède pas à l’autre. Il continue à envoyer des requêtes et à enregistrer des erreurs.

Notre directive amont a la forme suivante:

upstream app_servers { server 10.100.100.100:8080; server 10.100.100.200:8080; } 

En lisant les documents de Nginx, nous comprenons que nous n’avons pas besoin de spécifier explicitement les “max_fails” ou les “fail_timeout” car ils ont des valeurs par défaut raisonnables. (ie. max_fails de 1).

Une idée de ce qui pourrait nous manquer ici?

Merci beaucoup.

Selon la documentation …

max_fails = NUMBER – nombre de tentatives infructueuses de communication avec le serveur au cours de la période (affectée par le paramètre fail_timeout), après quoi il est considéré comme inopérant. S’il n’est pas défini, le nombre de tentatives est un. Une valeur de 0 désactive cette vérification. Ce qui est considéré comme un échec est défini par proxy_next_upstream ou fastcgi_next_upstream (sauf les erreurs http_404 qui ne comptent pas pour max_fails).

Selon la documentation, un échec est défini par proxy_next_upstream ou fastcgi_next_upstream .

Il continue à envoyer des requêtes et à enregistrer des erreurs.

S’il vous plaît vérifier le journal quels types d’erreurs ont été enregistrés, si ce n’est pas la valeur par défaut (erreur ou délai d’attente), alors vous pouvez vouloir le définir exclusivement dans proxy_next_upstream ou fastcgi_next_upstream.