Citrix ADC

gRPC-Bridging

Wenn ein Client eine Anfrage über das HTTP/1.1-Protokoll sendet, unterstützt die Citrix ADC Appliance die Überbrückung der gRPC-Anforderungen über das HTTP/1.1-Protokoll, das dem gRPC-Server über das HTTP/2-Protokoll entspricht. In ähnlicher Weise erhält die Appliance beim Reverse Bridging die Client-GrPC-Anforderung über das HTTP/2-Protokoll und führt eine Rückwärtsbrückenüberbrückung für die gRPC-Anforderungen in Übereinstimmung mit dem gRPC-Server des HTTP/1.1-Protokolls durch.

年代o funktioniert das GrPC-Bridging

In diesem Szenario überbrückt die Citrix ADC Appliance gRPC-Inhalte, die auf einer HTTP/1.1-Verbindung empfangen wurden, nahtlos und leitet sie über HTTP/2 an den Back-End-gRPC-Server weiter.

gRPC End-to-End-Konfigurationsfunktions-Diagramm

Das folgende Diagramm zeigt, wie Komponenten in einer gRPC-Bridging-Konfiguration miteinander interagieren.

  1. 要是一张GrPC-Anfrage gesendet将,pruft Ci死去trix ADC Appliance, ob die Verbindung HTTP/1.1 ist und der Inhaltstyp application/grpc ist. Die HTTP/1.1-Anfragen werden in die folgenden Pseudo-Header übersetzt.
  2. Nach Erhalt einer GrPC-Anfrage für die HTTP/1.1-Verbindung, wie im Content-Type-Header angegeben, wandelt die ADC-Appliance die Anfrage wie folgt in gRPC über HTTP/2 um:
:method: Method-name in HTTP/1.1 request :path: Path is HTTP/1.1 request content-type: application/grpc 
  1. Basierend auf der Richtlinienbewertung beendet der virtuelle Lastausgleichsserver (an den der gRPC-Dienst gebunden ist) die Anforderung oder leitet sie über HTTP/2-Frames an den Back-End-gRPC-Server weiter.
  2. Nach Erhalt der Antwort auf eine HTTP/2-Verbindung vom gRPC-Server puffert die Appliance, bis sie den HTTP/2-Trailer erhält und sucht dann nach dem GRPC-Statuscode. Wenn es sich um einen gRPC-Fehlerstatus ungleich Null handelt, sucht die Appliance nach dem Zuordnungsstatuscode und sendet eine geeignete HTTP/1.1-Fehlerantwort.

Konfigurieren der GRPC-Bridging über die CLI

Um GrPC-Bridging zu konfigurieren, müssen Sie die folgenden Schritte ausführen:

  1. Fügen Sie ein HTTP-Profil mit aktiviertem HTTP/2 und HTTP/2 hinzu
  2. Aktivieren der globalen Back-End-HTTP/2-Unterstützung im HTTP-Parameter
  3. Fügen Sie einen virtuellen Lastausgleichsserver vom Typ SSL/HTTP hinzu und legen Sie das HTTP-Profil fest
  4. Fügen Sie den Dienst für den GrPC-Endpunkt hinzu und legen Sie das HTTP-Profil fest
  5. Binden Sie den GrPC-Endpunktdienst an den virtuellen Lastausgleichsserver
  6. Ordnen Sie der HTTP-Statuscode der HTTP-Antwort zu, um einen gRPC-Status ungleich
  7. Konfigurieren Sie die gRPC-Pufferung nach Zeit und/oder Größe

Fügen Sie HTTP-Profil hinzu, wenn HTTP/2 und HTTP/2 direkt aktiviert sind

Um mit der Konfiguration zu beginnen, müssen Sie die HTTP/2-Funktion im HTTP-Profil aktivieren. Wenn der Client die HTTP 1.1-Anfragen sendet, überbrückt die Appliance die Anfrage und leitet sie an den Back-End-Server weiter.

您an der Eingabeaufforderung Folgendes ein:

add ns httpProfile - http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED )]

Beispiel:

add ns httpProfile http2gRPC -http2Direct ENABLED -http2 ENABLED

Aktivieren Sie die globale Back-End-HTTP/2-Unterstützung im HTTP-Parameter

Um die HTTP/2-Unterstützung global auf der Serverseite zu aktivieren, verwenden Sie die Citrix ADC Befehlszeile.

您an der Eingabeaufforderung Folgendes ein:

set ns httpParam -http2ServerSide( ON | OFF )

Beispiel:

set ns httpParam -http2ServerSide ON

Fügen Sie einen virtuellen Lastausgleichsserver vom Typ SSL/HTTP hinzu und legen Sie das HTTP-Profil fest

所以fugen您杯virtuellen Lastenausgleichsserver mit derCitrix ADCBefehlszeilenschnittstelle hinzu

您an der Eingabeaufforderung Folgendes ein:

add lb vserver [(@ )] [-httpProfileName ]

Beispiel:

add lb vserver lb-grpc HTTP 10.10.10.10 80 -httpProfileName http2gRPC

Hinweis:

Wenn Sie einen virtuellen Lastausgleichsserver vom Typ SSL verwenden, müssen Sie das Serverzertifikat binden. Weitere Informationen finden Sie unter Thema年代erverzertifikat binden.

Fügen Sie den Dienst für den GrPC-Endpunkt hinzu und legen Sie das HTTP-Profil fest

年代o fügen Sie mithilfe derCitrix ADCBefehlszeilenschnittstelle einen gRPC-Dienst mit dem HTTP-Profil hinzu.

您an der Eingabeaufforderung Folgendes ein:

add service ( | ) [-httpProfileName ]

Beispiel:

add service svc-grpc 10.10.10.10 HTTP 80 -httpProfileName http2gRPC

Binden Sie den GrPC-Endpunktdienst an den virtuellen Lastausgleichsserver

年代o binden Sie einen gRPC-Endpunktdienst mit der CLI an den virtuellen Lastausgleichsserver.

您an der Befehlszeilenschnittstelle Folgendes ein:

bind lb vserver

Beispiel:

bind lb vserver lb-grpc svc-grpc

Ordnen Sie den gRPC-Statuscode dem HTTP-Statuscode in der HTTP/1.1-Antwort zu

Im gRPC-Bridging-Szenario antwortet der gRPC-Dienst mit einem gRPC-Statuscode auf die Anfrage. Die Appliance ordnet den gRPC-Statuscode einem entsprechenden HTTP-Antwortcode und einer Ursache-Phrase zu. Die Zuordnung erfolgt auf der Grundlage der unten angegebenen Tabelle. Die Citrix ADC Appliance sendet beim Senden der HTTP/1.1-Antwort an den Client den HTTP-Statuscode und die Ursachenphrase.

gRPC Statuscode HTTP-Antwort-Statuscode Grundsatz der HTTP-Antwort
OK = 0 200 OK
CANCELLED = 1 499 *
UNKNOWN = 2 500 Interner Serverfehler
INVALID_ARGUMENT = 3 400 Ungültige Anforderung
DEADLINE_EXCEEDED = 4 504 Gatewaytimeout
NOT_FOUND = 5 404 *
ALREADY_EXISTS = 6 409 Konflikt
PERMISSION_DENIED = 7 403 Verboten
UNAUTHENTICATED = 16 401 Nicht autorisiert
RESOURCE_EXHAUSTED = 8 429 *
FAILED_PRECONDITION = 9 400 Ungültige Anforderung
ABORTED = 10 409 Konflikt
OUT_OF_RANGE = 11 400 Ungültige Anforderung
UNIMPLEMENTED = 12 501 Nicht implementiert
INTERNAL = 13 500 Interner Serverfehler
UNAVAILABLE = 14 503 Dienst ist nicht verfügbar
DATA_LOSS = 15 500 Interner Serverfehler

Konfigurieren Sie die gRPC-Pufferung nach Zeit und/oder Größe

Die Citrix ADC Appliance puffert die gRPC-Antwort vom Back-End-Server, bis der Response Trailer empfangen wird. Dies unterbricht bidirektionale GrPC-Anrufe. Wenn die GrPC-Antwort enorm ist, verbraucht sie außerdem eine beträchtliche Menge an Speicher, um die Antwort vollständig zu puffern. Um das Problem zu lösen, wurde die gRPC-Bridging-Konfiguration verbessert, um die Pufferung nach Zeit und/oder Größe zu begrenzen. Wenn die Puffergröße oder das Zeitlimit den Schwellenwert überschreitet, stoppt die Appliance die Pufferung und leitet die Antwort an den Client weiter, selbst wenn eine der Einschränkungen ausgelöst wird (entweder wird der Trailer nicht innerhalb der konfigurierten Puffergröße empfangen oder wenn das konfigurierte Timeout auftritt). Daher funktionieren die konfigurierten Richtlinien und ihre Ausdrücke (basierend auf dem grpc-statuscode) nicht wie erwartet.

Um die gRPC-Pufferung nach Zeit und/oder Größe durch die CLI zu beschränken, können Sie konfigurieren, wann Sie ein neues HTTP-Profil hinzufügen oder konfigurieren, wann Sie ein vorhandenes Profil ändern.

您an der Eingabeaufforderung Folgendes ein:

add ns httpProfile http2gRPC [-grpcHoldLimit ] [-grpcHoldTimeout ]

oder

set ns httpProfile http2gRPC [-grpcHoldLimit ] [-grpcHoldTimeout ]

Hierbei gilt:

grpcholdlimit. Maximale Größe in Byte, die gRPC-Pakete puffern dürfen, bis der Trailer empfangen wird. Sie können sowohl die Parameter als auch jeden einzelnen konfigurieren.

年代tandardwert: 131072 Mindestwert: 0 Maximaler Wert: 33554432

grpcholdtimeout. Maximale Zeit in Millisekunden, die gRPC-Pakete puffern dürfen, bis der Trailer empfangen wird. Der Wert sollte ein Vielfaches von 100 sein. Standardwert: 1000 Mindestwert: 0 Maximaler Wert: 180000

Beispiel:

add httpprofile http2gRPC -grpcholdlimit 1048576 -grpcholdtimeout 5000set httpprofile http2gRPC -grpcholdlimit 1048576 -grpcholdtimeout 5000

Konfigurieren Sie das GrPC-Bridging mit der GUI

Führen Sie die folgenden Schritte aus, um das GrPC-Bridging mithilfe der Citrix ADC GUI zu konfigurieren.

Fügen Sie ein HTTP-Profil mit aktiviertem HTTP/2 und HTTP/2 hinzu

  1. Navigieren Sie zu年代ystem > Profileund klicken Sie aufHTTP-Profile.
  2. Wählen SieHTTP/2im HTTP-Profil aus.

gRPC bridging add HTTP profile with http2 parameter

Aktivieren der globalen Back-End-HTTP/2-Unterstützung im HTTP-Parameter

  1. Navigieren Sie zu年代ystem > Einstellungen > HTTP-Parameter.
  2. Wählen Sie auf der Seite “HTTP-Parameter konfigurieren“ die OptionHTTP/2 auf Serverseiteaus.
  3. Klicken Sie aufOK.

gRPC überbrückt globales Back-End HTTP/2

Fügen Sie einen virtuellen Lastausgleichsserver vom Typ SSL/HTTP hinzu und legen Sie das HTTP-Profil fest

  1. Navigieren Sie zuTraffic Management > Load Balancing > Virtuelle Server.
  2. Klicken Sie aufHinzufügen, um einen virtuellen Lastausgleichsserver für gRPC-Datenverkehr zu erstellen.
  3. Klicken Sie auf der SeiteVirtueller Server für LastenausgleichaufProfile.
  4. Wählen Sie im AbschnittProfileden Profiltyp als HTTP aus.
  5. Klicken Sie aufOKund dann aufFertig.

gRPC Bridging globales Back-End HTTP/2 ermöglicht Load Balancing

Dienst für GrPC Endpoint hinzufügen und HTTP-Profil festlegen

  1. Navigieren Sie zuTraffic Management > Load Balancing > Services.
  2. Klicken Sie aufHinzufügen, um einen Anwendungsserver für gRPC-Datenverkehr zu erstellen.
  3. Wechseln Sie auf der SeiteLoad Balancing Servicezum AbschnittProfil.
  4. Fügen Sie unterProfileeinHTTP-Profilfür den GrPC-Endpoint hinzu.
  5. Klicken Sie aufOKund dann aufFertig.

gRPC bridging add service for the grpc endpoint

Bind-Dienst für GrPC-Endpunkt zum Lastenausgleich des virtuellen Servers

  1. Navigieren Sie zuTraffic Management > Load Balancing > Virtuelle Server.
  2. Klicken Sie aufHinzufügen, um einen virtuellen Lastausgleichsserver für gRPC-Datenverkehr zu erstellen.
  3. Klicken Sie auf der SeiteLoad Balancing Virtual Serverauf den AbschnittDienst- und Dienstgruppen.
  4. Wählen Sie auf der SeiteLoad Balancing Virtual Server Service Binding窝gRPC-Dienst来自,der gebunden了soll后。
  5. Klicken Sie auf年代chließenund dann aufFertig.

gRPC bridging bind service for gRPC endpoint

Konfigurieren Sie die gRPC-Pufferung nach Zeit und Größe mit der GUI

  1. Navigieren Sie zu年代ystem > Profileund klicken Sie aufHTTP-Profile.
  2. Wählen SieHTTP/2im HTTP-Profil aus.
  3. Legen Sie auf der SeiteHTTP-Profil konfigurierendie folgenden Parameter fest:

    1. grpcHoldTimeout. Geben Sie die Zeit in Millisekunden ein, um gRPC-Pakete zu puffern, bis der Trailer empfangen wird.
    2. grpcHoldLimit. Geben Sie die maximale Größe in Bytes ein, um gRPC-Pakete zu puffern, bis der Trailer empfangen wird.
  4. Klicken Sie aufOKundschließen.

gRPC bridging buffering by time and size

Ausführliche GUI-Prozeduren für das Binden von Service und Lastenausgleich virtueller Server finden Sie unter ThemaLoad Balancing.

gRPC-Bridging