Citrix ADC

Pontage grPc

Lorsqu’un client envoie une requête via le protocole HTTP/1.1, l’appliance Citrix ADC prend en charge le pontage des requêtes GRPC sur le protocole HTTP/1.1 qui est conforme au serveur GRPC sur le protocole HTTP/2. De même, en cas de pontage inverse, l’appliance reçoit la requête GRPC client via le protocole HTTP/2 et effectue un pontage inverse pour les requêtes GRPC conformément au serveur GRPC du protocole HTTP/1.1.

Fonctionnement du pontage GRPC

Dans ce scénario, l’appliance Citrix ADC relie de manière transparente 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 diagramme suivant montre comment les composants interagissent les uns avec les autres dans une configuration de pontage 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. À la réception d’une requête GRPC sur la connexion HTTP/1.1 comme indiqué par l’en-tête Content-Type, l’appliance ADC transforme la requête 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
  1. Sur la base de l’évaluation de la stratégie, le serveur virtuel d’équilibrage de charge (avec le service GRPC lié à lui) met fin à la demande ou la transmet via des trames HTTP/2 au serveur GRPC principal.
  2. À la réception de la réponse sur une connexion HTTP/2 du serveur GRPC, l’appliance met en mémoire tampon jusqu’à ce qu’elle reçoive la remorque HTTP/2, puis vérifie le code d’état GRPC-Status. S’il s’agit d’un état d’erreur GRPC différent de zéro, l’appliance recherche le code d’état HTTP mappage et envoie une réponse d’erreur HTTP/1.1 appropriée.

Configurer le pont GRPC à l’aide de l’interface de ligne de commande

Pour configurer le pontage GRPC, vous devez effectuer les étapes suivantes :

  1. Ajouter un profil HTTP avec HTTP/2 et HTTP/2 directement activés
  2. Activer la prise en charge globale du back-end HTTP/2 dans le paramètre HTTP
  3. Ajouter un serveur virtuel d’équilibrage de charge de type SSL/HTTP et définir le profil HTTP
  4. Ajouter un service pour le point de terminaison GRPC et définir le profil HTTP
  5. Liaison du service de point d’extrémité gRPC au serveur virtuel d’équilibrage de charge
  6. Mapper le code d’état GRPC à la réponse HTTP pour un état GRPC non nul
  7. Configurer la mise en mémoire tampon GrPC par temps et/ou taille

Ajouter un profil HTTP avec HTTP/2 et HTTP/2 directement activé

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 HTTP/2 globalement du 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

Ajouter un serveur virtuel d’équilibrage de charge de type SSL/HTTP et définir 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. Voir la Lier le certificat de serveur rubrique pour plus d’informations.

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

Liaison du service de point d’extrémité 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

Mapper 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 avec un code d’état GRPC. L’appliance mappe le code d’état gRPC à un code de réponse HTTP et une phrase de motif correspondants. Le mappage est effectué sur la base du tableau ci-dessous. L’appliance Citrix ADC lors de l’envoi de la réponse HTTP/1.1 au client envoie le code d’état HTTP et la phrase de motif.

Code d’état GRPC Code d’état de la réponse HTTP Phrase de raison-réponse HTTP
OK = 0 200 OK
CANCELLED = 1 499 *
UNKNOWN = 2 500 Erreur interne du serveur
ARGUMENT INVALID_= 3 400 Demande incorrecte
DEADLINE_EXCEEDED = 4 504 Délai de passerelle
NOT_FOUND = 5 404 *
ALREADY_EXISTS = 6 409 Conflit
PERMISSION_DENIED = 7 403 Liste noire
UNAUTHENTICATED = 16 401 Non autorisé
RESOURCE_EXHAUSTED = 8 429 *
FAILED_PRECONDITION = 9 400 Demande incorrecte
ABORTED = 10 409 Conflit
OUT_OF_RANGE = 11 400 Demande incorrecte
UNIMPLEMENTED = 12 501 Non implémenté
INTERNAL = 13 500 Erreur interne du serveur
UNAVAILABLE = 14 503 Service non disponible
DATA_LOSS = 15 500 Erreur interne du serveur

Configurer la mise en mémoire tampon GrPC par temps et/ou taille

L’appliance Citrix ADC mise en mémoire tampon la réponse GRPC du serveur principal jusqu’à ce que la remorque de réponse soit reçue. Cela casse les appels bidirectionnels GRPC. En outre, si la réponse GrPC est énorme, elle consomme une quantité importante de mémoire pour mettre en mémoire tampon complètement la réponse. Pour résoudre le problème, la configuration de pontage GRPC est améliorée pour 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 remorque n’est pas reçue dans la taille de tampon configurée ou si le délai d’expiration configuré se produit). Par conséquent, les stratégies configurées et ses expressions (basées sur le code grpc-status) ne fonctionnent pas comme prévu.

Pour limiter la mise en mémoire tampon GRPC en fonction du temps et/ou de la taille par l’interface de ligne de commande, vous pouvez configurer lorsque vous ajoutez un nouveau profil HTTP ou 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 à mettre en mémoire tampon les paquets GRPC jusqu’à la réception de la remorque. Vous pouvez configurer à la fois les paramètres et n’importe lequel.

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

grpcholdtimeout. Durée maximale, en millisecondes, autorisée à mettre en mémoire tampon les paquets GrPC jusqu’à la réception de la remorque. 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 pont GRPC à l’aide de l’interface graphique

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

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

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

Pont GRPC ajouter un profil HTTP avec le paramètre http2

Activer la prise en charge globale du back-end HTTP/2 dans le paramètre HTTP

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

GRPC pontage back-end global HTTP/2

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 en tant que HTTP.
  5. Cliquez sur OK, puis sur Terminé.

GrPC pontage back-end global HTTP/2 activer l'équilibrage de charge

Ajouter un point de terminaison Service for gRPC et définir un profil HTTP

  1. Accédez à Gestion du trafic > Équilibrage de charge > Services.
  2. Cliquez sur Ajouter pour créer un serveur d’applications pour le trafic gRPC.
  3. Dans 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 Terminé.

Ajout d'un service de pontage GRPC pour le point de terminaison grpc

Liaison du service du point d’extrémité gRPC au 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. Dans la page Liaison de service de serveur virtuel d’équilibrage de charge, sélectionnez le service gRPC à lier.
  5. Cliquez sur Fermer, puis sur Terminé.

Service de liaison de pontage GRPC pour point de terminaison GRPC

Configurer la mise en mémoire tampon GRPC en fonction du temps 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. Dans la page Configurer le profil HTTP, définissez les paramètres suivants :

    1. GrpCholdTimeout. Entrez le temps en millisecondes pour tamponner les paquets GrPC jusqu’à ce que la remorque soit reçue.
    2. GrpCholdLimit. Entrez la taille maximale en octets pour tamponner les paquets GRPC jusqu’à ce que la remorque soit reçue.
  4. Cliquez sur OK et Fermer.

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

Pour plus de détails sur les procédures GUI pour le service de liaison et l’équilibrage de charge des serveurs virtuels, reportez-vous à la Équilibrage de charge rubrique.

Pontage grPc