ADC

Wiederholungsversuche anfordern, wenn die Antwort auf den Backend-Server abgeht

Die Wiederholung von Anfragen ist für ein weiteres Szenario verfügbar, in dem die Appliance, wenn ein Back-End-Server mehr Zeit benötigt, um auf Anfragen zu antworten, nach dem Timeout einen erneuten Lastausgleich durchführt und die Anfrage an den nächsten verfügbaren Server weiterleitet.

So funktioniert die Wiederholung der Anforderung, wenn eine Zeitendigung der Backend-Server-Antwort

Das folgende Diagramm zeigt, dass die Komponenten miteinander interagieren:

So funktioniert die Wiederholung der Anforderung, wenn eine Zeitendigung der Backend-Server-Antwort

  1. Der Prozess 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 erneuten Lastausgleich basierend auf dem konfigurierten Timeoutwert 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 weiterhin auf eine Serverantwort wartet, die zu einem erhöhten RTT führt.
  5. Wenn die verfügbaren Back-End-Server gleich oder kleiner als die Anzahl der Wiederholungen sind und wenn alle Server ein Timeout für die Anforderung haben, würde die Appliance einen internen 500-Serverfehler beantworten. Betrachten Sie ein Szenario mit fünf verfügbaren Servern und der Wiederholungsanzahl, die auf sechs festgelegt ist. Wenn alle fünf Server ein Timeout für die Anforderung haben, gibt die Appliance einen internen 500-Serverfehler an den Client zurück.
  6. Wenn die Anzahl der Backend-Server höher ist als die Anzahl der Wiederholungsversuche und wenn der Back-End-Server bei einer Anfrage ein Timeout hat, wartet die Appliance weiterhin auf den letzten Dienst, bis der Server eine Antwort oder ein Timeout für die Verbindung mit dem Client sendet. Stellen Sie sich ein Szenario mit drei Back-End-Servern und der Wiederholungsanzahl vor, die auf zwei festgelegt ist. Wenn bei allen drei Servern ein Timeout aufwies, wartet die Appliance weiterhin auf den dritten Dienst, bis der Server eine Antwort sendet oder die Verbindungszeit des Clients im Leerlauf hat.

Konfigurieren Sie die Wiederholung der Anfrage (GET und POST-Methode), wenn eine Zeitendigung der Rücksende-Serverant

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

  1. aktiviere appqoe
  2. Konfigurieren der appqoe Aktion
  3. Appqoe Richtlinie hinzufügen
  4. Binden Sie die Appqoe-Richtlinie an den virtuellen Lastenausgleich

Hinweis:

Das Szenario “Wiederholung der Anforderung bei Zeitüberschreitung gilt auch für die POST-Methode.

aktiviere appqoe

Geben Sie an der Eingabeaufforderung Folgendes ein:

enable ns feature appqoe

Fügen Sie eine appqoe Aktion für Timeout hinzu

Sie müssen die appqoe-Aktion konfigurieren, um es bei einem Timeout erneut zu versuchen und die Anzahl der Wiederholungsversuche zu definieren.

Geben Sie an der Eingabeaufforderung 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 festzulegen, wie die Verbindungen in die Warteschlange gestellt werden.

Geben Sie an der Eingabeaufforderung 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 Server mit Lastenausgleich

Wenn ein Back-End-Server lange braucht, um zu antworten, und wenn Sie möchten, dass der virtuelle Lastausgleichsserver die Anforderung an den nächsten verfügbaren Dienst weiterleitet, müssen Sie die appqoe-Richtlinie an den Ausgleich des virtuellen Servers binden.

Geben Sie an der Eingabeaufforderung 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 der AppQoE-Richtlinie für das erneute Loadbalancing bei Timeout mithilfe der Citrix ADC GUI

  1. Navigieren Sie zu AppExpert > AppQoe > Richtlinien.
  2. Klicken Sie auf der AppQoe-Richtlinienseite 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. Ausdruck. Wählen Sie den Richtlinienausdruck “http.req.method.eq (get)” aus oder geben Sie ein.

  4. Klicken Sie auf Erstellen und Schließen.

Konfigurieren der Appqoe-Richtlinie für das erneute Loadbalancing-Server-Response-Zeit

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

  1. Navigieren Sie zu AppExpert > AppQoe > Aktion.
  2. Klicken Sie auf der AppQoE -Aktionsseite auf Hinzufügen.
  3. Legen Sie auf der Seite AppQoE Action erstellen den folgenden Parameter für die Wiederholung auf Back-End-Server-Antwortzeiten fest: a. Wiederholen Sie es bei Timeout. Wiederholen Sie das Timeout bei Anforderung (in Millisec), wenn Sie eine Anfrage an Backend-Server senden.
  4. Klicken Sie auf Erstellen und Schließen.

Konfigurieren Sie die AppQoE-Aktion für die Wiederholung der Anforderung für Backend-Server-Response-Timeout und

Wiederholungsversuche anfordern, wenn die Antwort auf den Backend-Server abgeht