Citrix ADC

gRPC End-to-End-Konfiguration

Die gRPC-End-to-End-Konfiguration funktioniert, indem eine gRPC-Anfrage von einem Client über HTTP/2-Protokoll gesendet wird und die vom gRPC-Server geantworteten GrPC-Nachrichten erneut weiterleitet.

Funktionsweise der End-to-End-gRPC-Konfiguration

Das folgende Diagramm zeigt, dass eine gRPC-Konfiguration in einer Citrix ADC Appliance funktioniert.

Funktionsdiagramm der gRPC-Konfiguration

  1. Um die gRPC-Konfiguration bereitzustellen, müssen Sie zunächst HTTP/2 im HTTP-Profil aktivieren und auch die HTTP/2-Unterstützung global serverseitig aktivieren.
  2. Wenn ein Client eine gRPC-Anforderung sendet, wertet der virtuelle Lastausgleichsserver den gRPC-Datenverkehr mithilfe von Richtlinien aus.
  3. Basierend auf der Richtlinienauswertung beendet der virtuelle Lastausgleichsserver (mit dem an ihn gebundenen gRPC-Dienst) die Anforderung und leitet sie als gRPC-Anforderung an den Back-End-gRPC-Server weiter.
  4. Wenn der gRPC-Server auf den Client antwortet, beendet die Appliance die Antwort und leitet sie als gRPC-Antwort an den Client weiter.

Beispiel für eine gRPC-Anfrage, die an den gRPC-Server gesendet wird

Der Request-Header wird als HTTP/2 Header in HEADERS+CONTINUATION Frames gesendet.

```
HEADERS (flags = END_HEADERS)
: method = POST
: scheme = http
: path = /helloworld.citrix-adc/SayHello
: authority = 10.10.10.10.:80
grpc-timeout = 15
content-type = application/grpc+proto
grpc-encoding = gzip
DATA (flags = END_STREAM)
<Length-Prefixed Message>
```

Beispiel für den gRPC-Antwort-Header vom gRPC-Server zur Citrix ADC Appliance

Response-Header und Trailers-Only werden in einem einzigen HTTP/2 HEADERS-Frame-Block geliefert. Die meisten Antworten werden erwartet, dass sie sowohl Header als auch Trailer haben, aber nur Trailers-Only ist für Aufrufe zulässig, die einen sofortigen Fehler verursachen. Status muss in Trailers gesendet werden, auch wenn der HTTP-Statuscode OK ist.

```
HEADERS (flags = END_HEADERS)
: status = 200
Grpc-encoding= gzip
Content-type = application/grpc+proto
DATA
<Length-Prefixed Message>
HEADERS (flags = END_STREAM, END_HEADERS)
grpc-status = 0 # OK

```

Konfigurieren von gRPC über die CLI

Um eine End-to-End-gRPC-Bereitstellung zu konfigurieren, müssen Sie Folgendes ausführen:

  • Fügen Sie HTTP-Profil mit aktiviertem HTTP/2 und HTTP/2 direkt hinzu.
  • Aktivieren der globalen Back-End-HTTP/2-Unterstützung im HTTP-Parameter
  • Hinzufügen des virtuellen Lastausgleichsservers vom Typ SSL/HTTP und Festlegen des HTTP-Profils
  • Dienst für gRPC-Endpunkt hinzufügen und HTTP-Profil festlegen
  • Binden des gRPC-Endpunktdienstes an den virtuellen Lastausgleichsserver

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

Sie müssen HTTP/2 und HTTP/2 direkte Parameter im HTTP-Profil aktivieren. Außerdem müssen Sie den HTTP/2 direkten Parameter aktivieren, wenn gRPC über HTTP/2 Klartext erforderlich ist.

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 durch 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.11 80 -httpProfileName http2gRPC

Hinweis:

Wenn Sie einen virtuellen Lastausgleichsserver vom Typ SSL verwenden, müssen Sie das Serverzertifikat binden. Weitere Informationen finden Sie unter Binden von Serverzertifikaten.

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

So fügen Sie mithilfe der Citrix ADC Befehlsschnittstelle einen gRPC-Dienst mit HTTP-Profil 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-Dienst mithilfe der Citrix ADC Befehlsschnittstelle an den virtuellen Lastausgleichsserver:

Geben Sie an der Befehlsschnittstelle Folgendes ein:

bind lb vserver <name> <serviceName>

Beispiel:

bind lb vserver lb-grpc svc-grpc

Konfigurieren der End-to-End-gRPC-Bereitstellung über die GUI

Führen Sie die folgenden Schritte aus, um gRPC über die GUI 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. HTTP/2 Option in einem neuen HTTP-Profil oder einem vorhandenen HTTP-Profil aktivieren

gRPC End-to-End-Konfiguration Funktionsdiagramm

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 End-to-End-Konfiguration ermöglicht globales Back-End-http2

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-Konfiguration fügt Dienst gRPC-Endpunkt hinzu

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 Profile HTTP-Profil für den gRPC-Endpunkt hinzu.
  5. Klicken Sie auf OK und dann auf Fertig.

gRPC-Konfiguration bindet Dienst Lastenausgleich virtueller Server

Ausführliche GUI-Verfahren zum Lastenausgleich finden Sie unter Lastausgleich.