F5 Load Balancer sendet Anforderung bei Zeitüberschreitung erneut

8

Lassen Sie mich vorab sagen, dass ich kein Systemadministrator, sondern ein Programmierer bin.

Kürzlich haben unsere Systemadministratoren F5-Load-Balancer installiert. Seitdem ist mir aufgefallen, dass der Load Balancer jedes Mal, wenn eine Anfrage abläuft und eine 500 auslöst, dieselbe Anfrage an unseren anderen Server sendet. IIS sendet die Timeout-Antwort, obwohl das Skript tatsächlich noch ausgeführt wird. Selbst POST-Anforderungen werden dupliziert, wenn ein Skript länger als 5 Minuten ausgeführt wird. Dies scheint mir ein potenzielles Problem zu sein, insbesondere bei E-Commerce-Websites, bei denen die Kundenabrechnung eine Rolle spielt.

Dies ist nur ein Problem mit einigen unserer länger laufenden Skripte (aber es ist ein ernstes Problem). Mir wurde gesagt, dass dies ein erwartetes Verhalten ist, und wir müssen unseren Code ändern, um ihn anzupassen. Meine Fragen sind also:

  • Ist das erwartetes Verhalten?
  • Was ist der Vorteil, wenn der Load Balancer die Anforderung nach einer anderen Zeitüberschreitung repliziert, als wenn der Benutzer nicht aktualisieren muss?
  • Wenn mit dieser Architektur ein Skript ausgeführt wird, das entweder den Server blockiert oder Ressourcen blockiert, wird es auf beiden Servern ausgeführt. Ist das wirklich optimal?
Jim D.
quelle
Wenn Sie sagen, dass dieselbe Anforderung an den anderen Server gesendet wird, beziehen Sie sich auf die konfigurierten Integritätsprüfungen oder Benutzeranforderungen? Mein Sinn ist nein, aber es lohnt sich zu klären. Die Antwort darauf ändert die Antwort und / oder Vorschläge.
Mcauth
@mcauth sendet die Benutzeranforderung erneut. Wenn ein Benutzer eine Aktion ausführt, die einen 500-Fehler auslöst, sendet der Load Balancer dieselbe exakte Anforderung an den anderen Server und erstellt so zwei Antworten aus einer einzelnen HTTP-Anforderung.
Jim D
1
Ich bin schon ziemlich lange im Orbit von Big-IP und habe nie gewusst, dass eine Anfrage wiedergegeben wird, es sei denn, dies wird ausdrücklich angegeben, beispielsweise über eine iRule, die eine HTTP :: -Sammlung durchführt, um die Nutzdaten der Anfrage zu puffern . Sehr komisch. Ohne die laufende Konfiguration zu sehen, ist es sehr schwer zu sagen.
Mcauth
Stoßen Sie diesen Thread nur ein wenig an, um Sie wissen zu lassen, dass ich genau dasselbe Problem habe. Haben Sie weitere Probleme gelöst?
BitMask777
@ BitMask777 - Leider sind wir damit nie wirklich weiter gekommen. Dies ist immer noch das Verhalten des Load Balancers und wir haben uns "damit befasst".
Jim D

Antworten:

3

Schauen Sie sich diesen Eintrag zur passiven Anwendungsüberwachung in Big-IP an

Meine Antworten auf Ihre Fragen, so enttäuschend sie auch sein mögen, sind

  • Möglicherweise (hängt von der passiven Überwachungskonfiguration ab)

  • Benutzer sieht keinen Fehler

  • Vielleicht (Möchte ich meinen Benutzern Fehler liefern oder die Anfrage woanders versuchen?)

"Aktion bei Ausfall des Dienstes" ist eine konfigurierbare Einstellung.

Vierbeiner
quelle
Danke für deine Antwort. Sie haben Recht damit, dass es ein bisschen enttäuschend ist, ich hatte auf etwas Konkreteres gehofft. Ich denke, es ist konkret zu erklären, dass es einfach keine endgültige Antwort gibt.
Jim D
0

Wenn ein 500-Fehler auftritt, weist dies auf ein Problem auf dem Webserver hin. Der F5 leitet diesen Fehler dann einfach an den Verbindungsclient weiter. Die Anfrage wird nicht von selbst "erneut gesendet". Dies kann nur passieren, wenn der Client die Anforderung erneut versucht. Zu diesem Zeitpunkt könnte diese Anforderung möglicherweise an ein anderes Poolmitglied verteilt werden, obwohl es keine Garantie gibt und sie entweder auf der Persistenz oder der verwendeten Lastausgleichsmethode (Round Robin, geringste Verbindungen usw.) basiert.

Kurz gesagt, es sei denn, Sie haben eine wirklich verrückte iRule auf Ihrem F5, dies ist ein Verhalten, das durch das Skript selbst verursacht wird.

(Hinweis: Ich war anderthalb Jahre lang Nework Support Engineer für F5 und arbeitete mit dem LTM.)

James Shewey
quelle