Citrix ADC

gRPC-Bridging

Wenn ein Client eine Anforderung über das HTTP/1.1-Protokoll sendet, unterstützt die Citrix ADC Appliance die Überbrückung von gRPC-Anforderungen über das HTTP/1.1-Protokoll, das mit dem gRPC-Server über HTTP/2-Protokoll konform ist. In ähnlicher Weise empfängt die Appliance bei der Reverse Bridging Client-gRPC-Anfrage über HTTP/2-Protokoll und führt Reverse-Bridging für gRPC-Anforderungen in Übereinstimmung mit dem gRPC-Server des HTTP/1.1-Protokolls durch.

Funktionsweise von gRPC Bridging

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

gRPC End-to-End-Konfiguration Funktionsdiagramm

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

  1. Wenn eine gRPC-Anforderung gesendet wird, überprüft die Citrix ADC Appliance, ob die Verbindung HTTP/1.1 ist und der Inhaltstyp application/grpc ist. Die HTTP/1.1-Anforderungen werden in die folgenden Pseudo-Header übersetzt.
  2. Beim Empfang einer gRPC-Anfrage auf HTTP/1.1. Verbindung, wie durch den Content-Type-Header angegeben, wandelt die ADC-Appliance die Anforderung in gRPC über HTTP/2 wie folgt um:
    :method: Method-name in HTTP/1.1 request
    :path: Path is HTTP/1.1 request
    content-type: application/grpc
  1. Basierend auf der Richtlinienauswertung beendet der virtuelle Lastausgleichsserver (mit dem an ihn gebundenen gRPC-Dienst) die Anforderung oder leitet sie über HTTP/2-Frames an den Back-End-gRPC-Server weiter.
  2. Wenn die Antwort auf eine HTTP/2-Verbindung vom gRPC-Server empfangen wird, puffert die Appliance, bis sie den HTTP/2-Trailer empfängt und dann nach dem gRPC-Statuscode sucht. Wenn es sich um einen gRPC-Fehlerstatus ungleich Null handelt, sucht die Appliance nach dem Mapping-HTTP-Statuscode und sendet eine geeignete HTTP/1.1-Fehlerantwort.

Konfigurieren der gRPC-Bridging über die CLI

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

  1. HTTP-Profil mit aktiviertem HTTP/2 und HTTP/2 direkt hinzufügen
  2. Aktivieren der globalen Back-End-HTTP/2-Unterstützung im HTTP-Parameter
  3. Hinzufügen des virtuellen Lastausgleichsservers vom Typ SSL/HTTP und Festlegen des HTTP-Profils
  4. Dienst für gRPC-Endpunkt hinzufügen und HTTP-Profil festlegen
  5. Binden des gRPC-Endpunktdienstes an den virtuellen Lastausgleichsserver
  6. Zuordnen des gRPC-Statuscodes zu HTTP-Antwort für einen gRPC-Status ungleich Null

HTTP-Profil mit aktiviertem HTTP/2 und HTTP/2 direkt hinzufügen

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

Geben Sie an der Eingabeaufforderung Folgendes ein:

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

Beispiel:

add ns httpProfile http2gRPC -http2Direct ENABLED -http2 ENABLED

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

So aktivieren Sie die HTTP-/2-Unterstützung auf der Serverseite mithilfe der Citrix ADC Befehlszeile.

Geben Sie an der Eingabeaufforderung Folgendes ein:

set ns httpParam -http2ServerSide( ON | OFF )

Beispiel:

set ns httpParam -http2ServerSide ON

Hinzufügen des virtuellen Lastausgleichsservers vom Typ SSL/HTTP und Festlegen des HTTP-Profils

So fügen Sie einen virtuellen Lastausgleichsserver mithilfe der Citrix ADC Befehlsschnittstelle hinzu

Geben Sie an der Eingabeaufforderung Folgendes ein:

add lb vserver <name> <service type> [(<IP address>@ <port>)] [-httpProfileName <string>]

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 Serverzertifikat binden.

Dienst für gRPC-Endpunkt hinzufügen und HTTP-Profil festlegen

So fügen Sie einen gRPC-Dienst mit HTTP-Profil mithilfe der Citrix ADC Befehlsschnittstelle hinzu.

Geben Sie an der Eingabeaufforderung Folgendes ein:

add service <name> (<IP> | <serverName> ) <serviceType> <port> [-httpProfileName <string>]

Beispiel:

add service svc-grpc 10.10.10.10 HTTP 80 -httpProfileName http2gRPC

Binden des gRPC-Endpunktdienstes an den virtuellen Lastausgleichsserver

So binden Sie einen gRPC-Endpunktdienst mit der CLI an den virtuellen Lastausgleichsserver.

Geben Sie an der Befehlsschnittstelle Folgendes ein:

bind lb vserver <name> <serviceName>

Beispiel:

bind lb vserver lb-grpc svc-grpc

Zuordnen von gRPC-Statuscode zu HTTP-Statuscode in HTTP/1.1-Antwort

Im gRPC Bridging Szenario reagiert der gRPC-Dienst auf die Anforderung mit einem gRPC-Statuscode. Die Appliance ordnet den gRPC-Statuscode einem entsprechenden HTTP-Antwortcode und einer Ursachphrase 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 den Begründungssatz.

gRPC Statuscode HTTP-Antwort-Statuscode HTTP-Antwort-Grundsatz
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 der gRPC-Bridging über die GUI

Führen Sie die folgenden Schritte aus, um die gRPC-Bridging mithilfe der Citrix ADC Benutzeroberfläche zu konfigurieren.

HTTP-Profil mit aktiviertem HTTP/2 und HTTP/2 direkt hinzufügen

  1. Navigieren Sie zu System > Profile, und klicken Sie auf HTTP-Profile.
  2. Wählen Sie HTTP/2 im HTTP-Profil aus.

gRPC Bridging füge HTTP-Profil mit http2-Parameter hinzu

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

  1. Navigieren Sie zu System > Einstellungen > HTTP-Parameter.
  2. Wählen Sie auf der Seite HTTP-Parameter konfigurieren die Option HTTP/2 auf Serverseite aus.
  3. Klicken Sie auf OK.

gRPC Überbrückung globaler Back-End-HTTP/2

Hinzufügen des virtuellen Lastausgleichsservers vom Typ SSL/HTTP und Festlegen des HTTP-Profils

  1. Navigieren Sie zu Verkehrsverwaltung > Lastenausgleich > Virtuelle Server.
  2. Klicken Sie auf Hinzufügen, um einen virtuellen Lastausgleichsserver für den gRPC-Datenverkehr zu erstellen.
  3. Klicken Sie auf der Seite Virtueller Server für Lastenausgleich auf Profile.
  4. Wählen Sie im Abschnitt Profile den Profiltyp als HTTP aus.
  5. Klicken Sie auf OK und dann auf Fertig.

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

Dienst für gRPC-Endpunkt hinzufügen und HTTP-Profil festlegen

  1. Navigieren Sie zu Verkehrsverwaltung > Lastenausgleich > Dienste.
  2. Klicken Sie auf Hinzufügen, um einen Anwendungsserver für den gRPC-Datenverkehr zu erstellen.
  3. Wechseln Sie auf der Seite Load Balancing Service zum Abschnitt Profil.
  4. Fügen Sie unter ProfileHTTP-Profil für den gRPC-Endpunkt hinzu.
  5. Klicken Sie auf OK und dann auf Fertig.

gRPC Bridging Add Service für grpc Endpunkt

Binden Dienst für den gRPC-Endpunkt an den virtuellen Server des Lastausgleichs

  1. Navigieren Sie zu Verkehrsverwaltung > Lastenausgleich > Virtuelle Server.
  2. Klicken Sie auf Hinzufügen, um einen virtuellen Lastausgleichsserver für den gRPC-Datenverkehr zu erstellen.
  3. Klicken Sie auf der Seite für den Lastenausgleich auf den Abschnitt Dienst- und Dienstgruppen.
  4. Wählen Sie auf der Seite Bindung für den Lastenausgleich des virtuellen Serverdienstes den zu bindenden gRPC-Dienst aus.
  5. Klicken Sie auf Schließen und dann auf Fertig.

gRPC Bridging Bind-Dienst für gRPC-Endpunkt

Detaillierte GUI-Prozeduren finden Sie unter Lastausgleich.

gRPC-Bridging