Festlegen der maximalen Fehleranzahl für Upstream-Server in NGINX

1

Ich habe eine mit Tornado erstellte Anwendung, die auf zwei 16-Kern-Servern mit einem Front-End-Server mit Nginx ausgeführt wird. Die Bereitstellungsrichtlinien für Tornado schlagen eine Instanz der App pro CPU-Heilung vor, sodass insgesamt 32 Instanzen der Anwendung ausgeführt werden.
Das Problem mit Nginx besteht darin, dass NGINX alle 32 Instanzen überprüft, bevor ein Fehler zurückgegeben wird, wenn auf den App-Servern ein Fehler auftritt, der dazu führt, dass alle Instanzen nicht verfügbar sind (was zu einem Verbindungs-Timeout führt). Das Verbindungs-Timeout ist auf 5 Sekunden eingestellt, sodass es länger als 2:30 Minuten dauern würde, bis NGINX tatsächlich etwas an den Benutzer zurücksendet, das besagt, dass es fehlgeschlagen ist.
Gibt es eine Möglichkeit, die Anzahl der Server zu begrenzen, die NGINX erneut versucht, bevor ein Fehler an den Benutzer gesendet wird? IE überprüft es, dass zwei Server dann einfach aufgeben und nicht alle durchlaufen?

Verschmieren
quelle

Antworten:

0

Sie können eine weitere Ebene von Proxys hinzufügen, indem Sie nginx auf jedem Backend-Server einrichten, sodass im Upstream-Abschnitt des Frontends nur zwei Server anstelle von 32 aufgeführt werden.

AlexD
quelle