ADC

Pontage gRPC

Lorsqu’un client envoie une demande via le protocole HTTP/1.1, l’appliance Citrix ADC prend en charge le pontage des requêtes gRPC via le protocole HTTP/1.1, conformément au protocole HTTP/1.1 du serveur gRPC via le protocole HTTP/2. De même, dans le cadre du pontage inversé, l’appliance reçoit la demande gRPC du client via le protocole HTTP/2 et effectue un pontage inverse pour les demandes gRPC conformément au serveur gRPC du protocole HTTP/1.1.

Comment fonctionne le pontage gRPC

Dans ce scénario, l’appliance Citrix ADC relie de manière fluide le contenu gRPC reçu sur une connexion HTTP/1.1 et le transmet au serveur gRPC principal via HTTP/2.

Schéma fonctionnel de configuration de bout en bout de gRPC

Le schéma suivant montre comment les composants interagissent les uns avec les autres dans une configuration de pont gRPC.

  1. Lorsqu’une requête gRPC est envoyée, l’appliance Citrix ADC vérifie si la connexion est HTTP/1.1 et si le type de contenu est application/grpc. Les requêtes HTTP/1.1 se traduisent par les pseudo-en-têtes suivants.
  2. Lors de la réception d’une demande gRPC sur une connexion HTTP/1.1, comme indiqué par l’en-tête Content-Type, l’appliance ADC transforme la demande en gRPC via HTTP/2 comme indiqué ci-dessous :
    :method: Method-name in HTTP/1.1 request
    :path: Path is HTTP/1.1 request
    content-type: application/grpc
<!--NeedCopy-->
  1. Sur la base d’une évaluation de la politique, le serveur virtuel d’équilibrage de charge (auquel le service gRPC est lié) met fin à la demande ou la transmet via des trames HTTP/2 au serveur gRPC principal.
  2. Lors de la réception de la réponse sur une connexion HTTP/2 depuis le serveur gRPC, l’appliance met en mémoire tampon jusqu’à ce qu’elle reçoive la bande-annonce HTTP/2, puis vérifie le code d’état gRPC. Si l’état d’erreur gRPC est différent de zéro, l’appliance recherche le code d’état HTTP mappé et envoie une réponse d’erreur HTTP/1.1 appropriée.

Configurer le pontage gRPC à l’aide de l’interface de ligne de commande

Pour configurer le pontage gRPC, vous devez suivre les étapes suivantes :

  1. Ajouter un profil HTTP avec HTTP/2 et HTTP/2 direct activés
  2. Activer le support HTTP/2 du back-end global dans le paramètre HTTP
  3. Ajoutez un serveur virtuel d’équilibrage de charge de type SSL/HTTP et définissez le profil HTTP
  4. Ajouter un service pour le point de terminaison GRPC et définir le profil HTTP
  5. Lier le service de point de terminaison gRPC au serveur virtuel d’équilibrage de charge
  6. Mappez le code d’état gRPC à la réponse HTTP pour un état gRPC différent de zéro
  7. Configurer la mise en mémoire tampon de gRPC en fonction de l’heure et/ou de la taille

Ajoutez un profil HTTP avec les connexions directes HTTP/2 et HTTP/2 activées

Pour commencer la configuration, vous devez activer la fonctionnalité HTTP/2 dans le profil HTTP. Si le client envoie les requêtes HTTP 1.1, l’appliance relie la demande et la transmet au serveur principal.

À l’invite de commandes, tapez :

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

Exemple :

add ns httpProfile http2gRPC -http2Direct ENABLED -http2 ENABLED

Activer la prise en charge globale du backend HTTP/2 dans le paramètre HTTP

Pour activer la prise en charge globale du HTTP/2 côté serveur à l’aide de la ligne de commande Citrix ADC.

À l’invite de commandes, tapez :

set ns httpParam -http2ServerSide( ON | OFF )

Exemple :

set ns httpParam -http2ServerSide ON

Ajoutez un serveur virtuel d’équilibrage de charge de type SSL/HTTP et définissez le profil HTTP

Pour ajouter un serveur virtuel d’équilibrage de charge à l’aide de l’ interface de commande Citrix ADC

À l’invite de commandes, tapez :

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

Exemple :

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

Remarque :

Si vous utilisez un serveur virtuel d’équilibrage de charge de type SSL, vous devez lier le certificat du serveur. Pour plus d’informations, reportez-vous à la rubrique relative au certificat de serveur Bind

Ajouter un service pour le point de terminaison GRPC et définir le profil HTTP

Pour ajouter un service gRPC avec le profil HTTP à l’aide de l’interface de commande Citrix ADC .

À l’invite de commandes, tapez :

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

Exemple :

add service svc-grpc 10.10.10.10 HTTP 80 -httpProfileName http2gRPC

Lier le service de point de terminaison gRPC au serveur virtuel d’équilibrage de charge

Pour lier un service de point de terminaison gRPC au serveur virtuel d’équilibrage de charge à l’aide de l’interface de ligne de commande.

Dans l’interface de commande, tapez :

bind lb vserver <name> <serviceName>

Exemple :

bind lb vserver lb-grpc svc-grpc

Mappez le code d’état gRPC au code d’état HTTP dans la réponse HTTP/1.1

Dans le scénario de pontage gRPC, le service gRPC répond à la demande par un code d’état gRPC. L’appliance mappe le code d’état gRPC à un code de réponse HTTP et à une phrase de motivation correspondants. Le mappage est effectué sur la base du tableau ci-dessous. Lors de l’envoi de la réponse HTTP/1.1 au client, l’appliance Citrix ADC envoie le code d’état HTTP et la phrase de raison.

Code d’état gRPC Code d’état de la réponse HTTP Motif de la réponse HTTP
OK = 0 200 OK.
ANNULÉ = 1 499 *
INCONNU = 2 500 Erreur interne du serveur
ARGUMENT_NON VALIDE = 3 400 Demande incorrecte
DATE_LIMITE DÉPASSÉE = 4 504 Délai d’expiration de la passerelle
INTROUVABLE_INTROUVABLE = 5 404 *
EXISTENT_DE_DÉJÀ = 6 409 Conflit
AUTORISATION_REFUSÉE = 7 403 Liste noire
NON AUTHENTIFIÉ = 16 401 Non autorisé
RESOURCE_EXHAUSTED = 8 429 *
FAILED_PRÉCONDITION = 9 400 Demande incorrecte
ABANDONNÉ = 10 409 Conflit
HORS DE PORTÉE = 11 400 Demande incorrecte
NON IMPLÉMENTÉ = 12 501 Non implémenté
INTERNE = 13 500 Erreur interne du serveur
NON DISPONIBLE = 14 503 Service non disponible
PERTE DE DONNÉES = 15 500 Erreur interne du serveur

Configurer la mise en mémoire tampon de gRPC en fonction de l’heure et/ou de la taille

L’appliance Citrix ADC met en mémoire tampon la réponse gRPC du serveur principal jusqu’à ce que la bande-annonce de réponse soit reçue. Cela interrompt les appels gRPC bidirectionnels. De plus, si la réponse gRPC est énorme, elle consomme une quantité importante de mémoire pour la mettre complètement en mémoire tampon. Pour résoudre le problème, la configuration du pontage gRPC est améliorée afin de limiter la mise en mémoire tampon en fonction du temps et/ou de la taille. Si la taille de la mémoire tampon ou la limite de temps dépasse le seuil, l’appliance arrête la mise en mémoire tampon et transmet la réponse au client même lorsque l’une des limitations se déclenche (soit la bande-annonce n’est pas reçue dans la taille de mémoire tampon configurée, soit si le délai d’expiration configuré se produit). Par conséquent, les politiques configurées et leurs expressions (basées sur le code grpc-status) ne fonctionnent pas comme prévu.

Pour limiter la mise en mémoire tampon de gRPC en fonction du temps et/ou de la taille par la CLI, vous pouvez le configurer lorsque vous ajoutez un nouveau profil HTTP ou le configurer lorsque vous modifiez un profil existant.

À l’invite de commandes, tapez :

add ns httpProfile http2gRPC [-grpcHoldLimit <positive_integer>] [-grpcHoldTimeout <positive_integer>]

ou

set ns httpProfile http2gRPC [-grpcHoldLimit <positive_integer>] [-grpcHoldTimeout <positive_integer>]

Où,

grpcholdlimit. Taille maximale en octets autorisée pour la mise en mémoire tampon des paquets gRPC jusqu’à la réception de la bande-annonce. Vous pouvez configurer à la fois les paramètres et n’importe lequel d’entre eux.

Valeur par défaut : 131072 Valeur minimale : 0 Valeur maximale : 33554432

grpcholdtimeout. Durée maximale en millisecondes autorisée pour mettre en mémoire tampon les paquets gRPC jusqu’à la réception de la bande-annonce. La valeur doit être exprimée en multiples de 100. Valeur par défaut : 1000 Valeur minimale : 0 Valeur maximale : 180000

Exemple :

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

Configurer le pontage gRPC à l’aide de l’interface graphique

Procédez comme suit pour configurer le pontage gRPC à l’aide de l’interface graphique Citrix ADC.

Ajouter un profil HTTP avec HTTP/2 et HTTP/2 direct activés

  1. Accédez à Système > Profils et cliquez sur Profils HTTP.
  2. Sélectionnez HTTP/2 dans le profil HTTP.

Activer le support HTTP/2 du back-end global dans le paramètre HTTP

  1. Accédez à Système > Paramètres > Paramètres HTTP .
  2. Sur la page Configurer le paramètre HTTP , sélectionnez l’option HTTP/2 côté serveur .
  3. Cliquez sur OK.

Ajouter un serveur virtuel d’équilibrage de charge de type SSL/HTTP et définir le profil HTTP

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels.
  2. Cliquez sur Ajouter pour créer un serveur virtuel d’équilibrage de charge pour le trafic gRPC.
  3. Dans la page Serveur virtuel d’équilibrage de charge, cliquez sur Profils.
  4. Dans la section Profils , sélectionnez le type de profil HTTP.
  5. Cliquez sur OK, puis sur OK.

GrPC Bridging Global Back-end HTTP/2 permet l'équilibrage de charge

Ajouter un service pour le point de terminaison gRPC et définir le profil HTTP

  1. Accédez à Traffic Management > Load Balancing > Services.
  2. Cliquez sur Ajouter pour créer un serveur d’applications pour le trafic gRPC.
  3. Sur la page Service d’équilibrage de charge, accédez à la section Profil .
  4. Sous Profils, ajoutez un profil HTTP pour le point de terminaison gRPC.
  5. Cliquez sur OK, puis sur OK.

Service Bind pour le point de terminaison gRPC vers le serveur virtuel d’équilibrage de charge

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels.
  2. Cliquez sur Ajouter pour créer un serveur virtuel d’équilibrage de charge pour le trafic gRPC.
  3. Dans la page Serveur virtuel d’équilibrage de charge, cliquez sur la section Groupes de services et de services.
  4. Sur la page Liaison du service de serveur virtuel d’équilibrage de charge , sélectionnez le service gRPC à lier.
  5. Cliquez sur Fermer , puis sur OK .

Configurer la mise en mémoire tampon de gRPC en fonction de l’heure et de la taille à l’aide de l’interface graphique

  1. Accédez à Système > Profils et cliquez sur Profils HTTP.
  2. Sélectionnez HTTP/2 dans le profil HTTP.
  3. Sur la page Configurer le profil HTTP , définissez les paramètres suivants :

    1. GrpHoldTimeout. Entrez la durée en millisecondes pour la mise en mémoire tampon des paquets gRPC jusqu’à la réception de la bande-annonce.
    2. Limite d’âge GRPC. Entrez la taille maximale en octets pour la mise en mémoire tampon des paquets gRPC jusqu’à la réception de la bande-annonce.
  4. Cliquez sur OK et Fermer.

Mise en mémoire tampon de pontage grPc par temps et taille

Pour connaître les procédures détaillées de l’interface graphique pour le service de liaison et les serveurs virtuels d’équilibrage de charge, consultez la rubrique Équilibrage de charge

Pontage gRPC