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.
Das folgende Diagramm zeigt, wie Komponenten in einer gRPC-Bridging-Konfiguration miteinander interagieren.
- 要是一张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.
- 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
- 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.
- 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:
- Fügen Sie ein HTTP-Profil mit aktiviertem HTTP/2 und HTTP/2 hinzu
- Aktivieren der globalen Back-End-HTTP/2-Unterstützung im HTTP-Parameter
- Fügen Sie einen virtuellen Lastausgleichsserver vom Typ SSL/HTTP hinzu und legen Sie das HTTP-Profil fest
- Fügen Sie den Dienst für den GrPC-Endpunkt hinzu und legen Sie das HTTP-Profil fest
- Binden Sie den GrPC-Endpunktdienst an den virtuellen Lastausgleichsserver
- Ordnen Sie der HTTP-Statuscode der HTTP-Antwort zu, um einen gRPC-Status ungleich
- 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
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
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
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
oder
set ns httpProfile http2gRPC [-grpcHoldLimit
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 5000
set 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
- Navigieren Sie zu年代ystem > Profileund klicken Sie aufHTTP-Profile.
- Wählen SieHTTP/2im HTTP-Profil aus.
Aktivieren der globalen Back-End-HTTP/2-Unterstützung im HTTP-Parameter
- Navigieren Sie zu年代ystem > Einstellungen > HTTP-Parameter.
- Wählen Sie auf der Seite “HTTP-Parameter konfigurieren“ die OptionHTTP/2 auf Serverseiteaus.
- Klicken Sie aufOK.
Fügen Sie einen virtuellen Lastausgleichsserver vom Typ SSL/HTTP hinzu und legen Sie das HTTP-Profil fest
- Navigieren Sie zuTraffic Management > Load Balancing > Virtuelle Server.
- Klicken Sie aufHinzufügen, um einen virtuellen Lastausgleichsserver für gRPC-Datenverkehr zu erstellen.
- Klicken Sie auf der SeiteVirtueller Server für LastenausgleichaufProfile.
- Wählen Sie im AbschnittProfileden Profiltyp als HTTP aus.
- Klicken Sie aufOKund dann aufFertig.
Dienst für GrPC Endpoint hinzufügen und HTTP-Profil festlegen
- Navigieren Sie zuTraffic Management > Load Balancing > Services.
- Klicken Sie aufHinzufügen, um einen Anwendungsserver für gRPC-Datenverkehr zu erstellen.
- Wechseln Sie auf der SeiteLoad Balancing Servicezum AbschnittProfil.
- Fügen Sie unterProfileeinHTTP-Profilfür den GrPC-Endpoint hinzu.
- Klicken Sie aufOKund dann aufFertig.
Bind-Dienst für GrPC-Endpunkt zum Lastenausgleich des virtuellen Servers
- Navigieren Sie zuTraffic Management > Load Balancing > Virtuelle Server.
- Klicken Sie aufHinzufügen, um einen virtuellen Lastausgleichsserver für gRPC-Datenverkehr zu erstellen.
- Klicken Sie auf der SeiteLoad Balancing Virtual Serverauf den AbschnittDienst- und Dienstgruppen.
- Wählen Sie auf der SeiteLoad Balancing Virtual Server Service Binding窝gRPC-Dienst来自,der gebunden了soll后。
- Klicken Sie auf年代chließenund dann aufFertig.
Konfigurieren Sie die gRPC-Pufferung nach Zeit und Größe mit der GUI
- Navigieren Sie zu年代ystem > Profileund klicken Sie aufHTTP-Profile.
- Wählen SieHTTP/2im HTTP-Profil aus.
Legen Sie auf der SeiteHTTP-Profil konfigurierendie folgenden Parameter fest:
- grpcHoldTimeout. Geben Sie die Zeit in Millisekunden ein, um gRPC-Pakete zu puffern, bis der Trailer empfangen wird.
- grpcHoldLimit. Geben Sie die maximale Größe in Bytes ein, um gRPC-Pakete zu puffern, bis der Trailer empfangen wird.
- Klicken Sie aufOKundschließen.
Ausführliche GUI-Prozeduren für das Binden von Service und Lastenausgleich virtueller Server finden Sie unter ThemaLoad Balancing.