ADC

Wiederholungsversuch anfordern, wenn die Antwort des Backend-Servers abgelaufen ist

Eine Wiederholung der Anforderung ist für ein weiteres Szenario verfügbar. Wenn ein Backend-Server mehr Zeit benötigt, um auf Anfragen zu antworten, führt die Appliance bei Timeout einen erneuten Lastausgleich durch und leitet die Anfrage an den nächsten verfügbaren Server weiter.

So funktioniert die Wiederholung von Anfragen, wenn die Antwort des Backend-Servers zu einem Timeout kommt

Das folgende Diagramm zeigt, wie die Komponenten miteinander interagieren:

So funktioniert die Wiederholung von Anfragen, wenn die Antwort des Backend-Servers zu einem Timeout kommt

  1. Der Vorgang beginnt mit der Aktivierung der Appqoe-Funktion auf Ihrer Appliance.
  2. Die Appqoe-Konfiguration hat den Parameter „RetryOnTimeout“ in Millisekunden.
  3. Wenn die Appliance eine Anfrage sendet und der Server mehr Zeit benötigt, um zu antworten, führt die Appliance einen Neulastausgleich auf der Grundlage des konfigurierten Timeout-Werts durch. Die Appliance setzt die Verbindung zurück, wählt einen anderen Dienst und leitet die Anfrage weiter, anstatt auf die Serverantwort zu warten.
  4. Nachdem der virtuelle Lastausgleichsserver die Antwort erhalten hat, leitet die Appliance die Antwort an den Client weiter. Die Verwendung eines Timeout-Parameters verhindert, dass die Appliance weiter auf eine Serverantwort wartet, was zu einem erhöhten RTT führt.
  5. Wenn die verfügbaren Backend-Server gleich oder kleiner als die Anzahl der Wiederholungsversuche sind und wenn bei allen Servern ein Timeout für die Anfrage auftritt, würde die Appliance einen internen Serverfehler von 500 melden. Betrachten Sie ein Szenario mit fünf verfügbaren Servern und der Wiederholungsanzahl, die auf sechs festgelegt ist. Wenn bei allen fünf Servern ein Timeout für die Anfrage auftritt, gibt die Appliance einen internen Serverfehler von 500 an den Client zurück.
  6. In ähnlicher Weise wartet die Appliance auf den letzten Dienst, wenn die Anzahl der Backend-Server die Anzahl der Wiederholungsversuche übersteigt und wenn der Backend-Server bei einer Anfrage ein Timeout durchführt, bis der Server eine Antwort sendet oder die Client-Leerlaufverbindung abläuft. Stellen Sie sich ein Szenario mit drei Back-End-Servern und der Wiederholungsanzahl vor, die auf zwei festgelegt ist. Wenn alle drei Server auf die Anfrage hin ein Timeout haben, wartet die Appliance weiter auf den dritten Dienst, bis der Server eine Antwort sendet oder die inaktive Client-Verbindung abläuft.

Konfigurieren Sie den Wiederholungsversuch (GET- und POST-Methode), wenn die Antwort des Backend-Servers zu einem Timeout führt

Um die Wiederholungsanfrage für die GET-Methode bei Timeout zu konfigurieren, müssen Sie die folgenden Schritte ausführen.

  1. Appqoe aktivieren
  2. Appqoe-Aktion konfigurieren
  3. Appqoe-Richtlinie hinzufügen
  4. Binden Sie die Appqoe-Richtlinie an den virtuellen Lastenausgleich

Hinweis:

Das Szenario „Wiederholungsversuch bei Timeout anfordern“ gilt auch für die POST-Methode.

Appqoe aktivieren

Geben Sie in der Befehlszeile Folgendes ein:

enable ns feature appqoe

Appqoe-Aktion für Timeout hinzufügen

Sie müssen die appqoe-Aktion so konfigurieren, dass sie es bei Timeout erneut versucht, und die Anzahl der Wiederholungsversuche definieren.

Geben Sie in der Befehlszeile Folgendes ein:

add appqoe action <name> -retryOnTimeout <msecs> -numRetries <positive_integer>

Beispiel:

add appqoe action appact1 -retryOnTimeout 35 –numRetries 5

Appqoe-Richtlinie hinzufügen

Um appqoe zu implementieren, müssen Sie die Appqoe-Richtlinie konfigurieren, um zu definieren, wie die Verbindungen in die Warteschlange gestellt werden.

Geben Sie in der Befehlszeile Folgendes ein:

add appqoe policy <name> -rule <rule> -action <name>

Beispiel:

add appqoe policy timeout_policy -rule http.req.method.eq(get) -action appact1

Binden Sie die Appqoe-Richtlinie an den virtuellen Lastenausgleich

Wenn ein Backend-Server lange braucht, um zu antworten, und wenn Sie möchten, dass der virtuelle Lastausgleichsserver die Anfrage an den nächsten verfügbaren Dienst weiterleitet, müssen Sie die Appqoe-Richtlinie an den virtuellen Balancing-Server binden.

Geben Sie in der Befehlszeile Folgendes ein:

bind lb vserver <name> ((<serviceName> (-policyName <string> [-priority <positive_integer>] [-gotoPriorityExpression <expression>] [-type ( REQUEST | RESPONSE )]

Beispiel:

bind lb vserver v1 -policyName timeout_policy -type REQUEST -priority 1

Konfigurieren Sie die AppQoE-Richtlinie für den erneuten Loadbalancing bei Timeout mithilfe der Citrix ADC GUI

  1. Navigieren Sie zu AppExpert > AppQoe > Richtlinien.
  2. Klicken Sie auf der Seite AppQoE-Richtlinien auf Hinzufügen.
  3. Legen Sie auf der Seite Create an AppQoE Policy die folgenden Parameter fest:

    a. Name. AppQoE-Richtlinienname b. Aktion. Fügen Sie eine Aktion hinzu oder bearbeiten Sie sie. Informationen zum Erstellen einer neuen Aktion finden Sie im Abschnitt AppQoE-Aktion erstellen. c. Expression. Wählen Sie den Richtlinienausdruck „http.req.method.eq (get)“ aus oder geben Sie ihn ein.

  4. Klicken Sie auf Erstellen und Schließen.

Konfigurieren Sie die AppQoE-Aktion für die Wiederholung von Anfragen mithilfe der Citrix ADC GUI

  1. Navigieren Sie zu AppExpert > AppQoe > Action.
  2. Klicken Sie auf der Seite AppQoE-Aktionen auf Hinzufügen.
  3. Stellen Sie auf der Seite „ AppQoE-Aktion erstellen “ den folgenden Parameter für den Wiederholungsversuch beim Antworttimeout des Backend-Servers ein: a. Versuchen Sie es erneut bei Timeout. Versuchen Sie es erneut, wenn das Anforderungs-Timeout (in Millisekunden) abgelaufen ist, wenn eine Anfrage an Backend-Server gesendet wird.
  4. Klicken Sie auf Erstellen und Schließen.
Wiederholungsversuch anfordern, wenn die Antwort des Backend-Servers abgelaufen ist