ADC

gRPC mit der Responder Policy

Die Konfiguration der GrPC mit Responder Policy erklärt, wie eine NetScaler 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 an eine andere Webseite umzuleiten oder eine Verbindung zurückzusetzen.
  3. Konfigurieren Sie die Responder-Richtlinie zur Bestimmung der gRPC-Anfragen (Verkehr), bei denen eine Aktion ausgefü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 in der Befehlszeile 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 in der Befehlszeile 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-Anfrage auszuwählen, auf die die NetScaler-Appliance antworten muss.

Geben Sie in der Befehlszeile 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

Binden Sie die Responder-Richtlinie an den virtuellen Load-Balancing-Server

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

Geben Sie in der Befehlszeile 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 NetScaler 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 in der Befehlszeile 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