Citrix ADC

gRPC mit der Responder Policy

Die Konfiguration der GrPC mit Responder Policy erklärt, wie eine Citrix ADC Appliance unterschiedliche Antworten auf GrPC-Anfragen über das HTTP/2-Protokoll liefert. Wenn Benutzer eine Website-Homepage anfordern, möchten Sie möglicherweise eine andere Homepage angeben, je nachdem, wo sich jeder Benutzer befindet oder welcher Browser der Benutzer verwendet.

Das folgende Diagramm zeigt die Komponenten, die interagieren.

GrPC mit einer Responder Policy

  1. Aktivieren Sie die Responder-Funktion auf der Appliance.
  2. Konfigurieren Sie die Responder-Aktion, um eine benutzerdefinierte Antwort zu generieren, eine Anfrage auf eine andere Webseite umzuleiten oder eine Verbindung zurückzusetzen.
  3. Konfigurieren Sie die Responder-Richtlinie zur Bestimmung der GrPC-Anforderungen (Traffic), für die eine Aktion durchgeführt werden muss.
  4. Binden Sie die Responder-Richtlinie an den virtuellen Lastausgleichsserver, um zu prüfen, ob der Datenverkehr mit dem Richtlinienausdruck übereinstimmt.
  5. Mithilfe einer Responder Policy können Sie basierend auf dem gPC-Statuscode Folgendes ausführen.

Konfigurieren Sie die GrPC-Anrufbeendigung mit der Responder Policy über die Befehlszeilenschnittstelle

Um die GrPC-Anrufbeendigung mit der Responder-Richtlinie zu konfigurieren, müssen Sie die folgenden Schritte ausführen:

  1. Aktivieren Sie die Responder-Funktion
  2. Eine Responder Action hinzufügen
  3. Fügen Sie eine Responder Policy hinzu und verknüpfen Sie die Responder Action
  4. Binden Sie die Responder Policy an den virtuellen Lastenausgleichsserver

Aktivieren Sie die Responder-Funktion

Um die Responder-Funktion verwenden zu können, müssen Sie sie zuerst aktivieren.

Geben Sie an der Eingabeaufforderung Folgendes ein:

enable ns responder

Fügen Sie die Responder Action hinzu

Nachdem Sie die Funktion aktiviert haben, müssen Sie die Responder-Aktion für die Verarbeitung der gRPC-Antwort basierend auf dem vom Back-End-Server zurückgegebenen Statuscode konfigurieren.

Geben Sie an der Eingabeaufforderung Folgendes ein:

add responder action <name> <type>

Beispiel:

add responder action grpc-act respondwith "HTTP/1.1 200 OK\r\nServer: NS-Responder\r\nContent-Type:application/grpc\r\ngrpc-status: 12\r\ngrpc-message: Not Implemented\r\n\r\n" + "Method: " + HTTP.REQ.URL+ "is not implemented."

Responder-Richtlinie hinzufügen

Nachdem Sie eine Responder-Aktion konfiguriert haben, müssen Sie als Nächstes eine Responder-Richtlinie konfigurieren, um die GrPC-Anforderung auszuwählen, auf die die Citrix ADC Appliance antworten muss.

Geben Sie an der Eingabeaufforderung Folgendes ein:

add responder policy <name> <expression> <action> [<undefaction>]-appFlowaction <actionName> Beispiel:

add responder policy grpc-resp-pol1 HTTP.REQ.URL.NE(“/helloworld.Greeter/SayHello”) grpc-act

Responder-Richtlinie an virtuellen Lastenausgleichsserver binden

Um eine Richtlinie in Kraft zu setzen, müssen Sie sie mit dem gRPC-Dienst an den virtuellen Lastausgleichsserver binden.

Geben Sie an der Eingabeaufforderung Folgendes ein:

bind responder global <policyName> <priority> [<gotoPriorityExpression> [-type <type>] [-invoke (<labelType> <labelName>)]

Beispiel:

bind lb vserver lb-grpc svc-grpc -policyName grpc-resp-pol1 –priority 100

Weitere Informationen zur Responder Policy finden Sie unter Thema Responder-Richtlinie .

Richtlinienausdrücke zum Abgleichen von GrPC-Protokollpufferfeldern

Die Citrix ADC Appliance unterstützt die folgenden Richtlinienausdrücke in der grPC-Konfiguration:

  • Zugriff auf den GrPC-Protokollpuffer. Der willkürliche gRPC-API-Aufruf stimmt mit der Nummer des Nachrichtenfelds mit den neuen Richtlinienausdrücken überein. In einer PI-Konfiguration werden die Übereinstimmungen nur mit den “Feldnummern” und “API-Pfad” durchgeführt.

  • GrPC-Header-Filterung. Die “HttpProfile” -Parameter für grPC werden verwendet, um das Standardverhalten des GrPC-Parsens (einschließlich GrPC-Richtlinienausdrücken) anzupassen. Die folgenden Parameter gelten für GrPC-Richtlinienausdrücke:

    • GrpClengthDelimitation. Es ist standardmäßig aktiviert und erwartet, dass die Protokollpuffer mit einer längengetrennten Nachricht angezeigt werden.

    • GrpCholdLimit. Der Standardwert ist 131072. Es ist die maximale Größe der Protokollpuffernachricht in Byte. Es ist auch die maximale Stringlänge und die maximale “Byte” -Feldlänge.

Konfigurieren Sie GrPC Advance Policy Ausdrücke mit der CLI

Geben Sie an der Eingabeaufforderung Folgendes ein:

set ns httpProfile <name> -http2 ( ENABLED | DISABLED ) -gRPCLengthDelimitation ( ENABLED | DISABLED ) -gRPCHoldLimit <int>

Beispiel:

set ns httpProfile http2gRPC -http2 ENABLED -gRPCLengthDelimitation ENABLED -gRPCHoldLimit 131072

Konfigurieren Sie GrPC-Header-Filterparameter mit der GUI

  1. Navigieren Sie zu System > Profile und klicken Sie auf HTTP-Profile.

  2. Scrollen Sie auf der Seite “ HTTP-Profil erstellen “ nach unten zum Abschnitt HTTP/3 und wählen Sie GrPC Length Delimitationaus.

    GrPc Längenabgrenzung

Das folgende Beispiel für einen Richtlinienausdruck zeigt einen Wert in Nachricht 5, Unternachricht 4 und Feld 3. Es ist ein 32-Bit-Int gleich 2.

http.req.body(1000).grpc.message(5).message(4).int32(3).eq(2)

Die folgenden Richtlinienausdrücke werden hinzugefügt, um die Nachrichtenfelder des GRPC-Protokollpuffers nach Zahlen abzugleichen:

  • message
  • double
  • float
  • int32
  • int64
  • uint32
  • uint64
  • sint64
  • sint32
  • fixed32
  • fixed64
  • sfixed32
  • sfixed64
  • bool
  • string
  • enum
  • Bytes

API-Pfadabgleich

Der API-Pfadabgleich wird verwendet, um dem korrekten gRPC-API-Aufruf zu entsprechen, wenn mehr als eine API verwendet wird. Stimmen Sie dem API-Pfad überein, der im Pseudo-Header ‘: path’ in der HTTP-Anfrage zu finden ist.

Beispiel:

http.req.header(":path").eq("acme.inventory.v1/ListBooks")
gRPC mit der Responder Policy