puseidr
Goto Top

NGINX Reverse Proxy + Tomcat 7 Cluster: Problem beim Restart eines Nodes

Hallo zusammen,
ich möchte einen kurzen Überblick über meine Cluster-Struktur geben und im Anschluss eine etwas speziellere Frage dazu stellen.

Ich habe vor einen einen Tomcat-Cluster (Tomcat7) mit mind. 3 Nodes (verteilt auf 3 Servern) zu betreiben, auf allen Nodes liegen ca. 500 WAR-Files. Die Session werden dynamisch (multicast) auf alle Nodes repliziert. Vor diesem Cluster ist (zur zeit noch) ein Nginx Reverse Proxy auf einerm weiteren Server (später wird der auch geclustert), als Load-Balancing-Methode habe ich Round Robin gewählt und den Nginx dementsprechend konfiguriert.
Der Cluster und das Load-Balancing funktioniert soweit jedoch gibt es einen unschönen Fehler beim Ausfall eines Nodes:

Wenn ein Node z.B. wegen Wartungsarbeiten oder einem Crash ausfällt werden keine Request vom Nginx an diesen Node geschickt (ist ja auch richtig so), ABER sobald der ausgefallene Node wieder startet und der Tomcat auf dem Node hochfährt (da dauert bei ca. 500 WARs ca 30-40Minuten) öffnet er bereits seine Ports (z.B. 8080) obwohl er noch gar nicht richtig fertig gestartet ist. Der Nginx merkt, dass der Port des Nodes geöffnet ist und schickt wieder Requests zu dem noch startenden Tomcat-Node. Dieser kann die Requests aber noch nicht verarbeiten...

Während des Starts des ausgefallenen Nodes gehen alle Requests auf den Node ins Leere, aber der Nginx merkt das nicht..

Nun zur eigentlichen Frage:
Kann man dem Tomcat-Node so konfigurieren, dass er erst den Port öffnet wenn er fertig gestartet ist, oder muss man am Nginx etwas ändern, damit er dieser Fehler nicht mehr auftritt?

Content-Key: 273773

Url: https://administrator.de/contentid/273773

Printed on: April 20, 2024 at 02:04 o'clock