gRPC est un framework open source d'appel de procédure distante (RPC) haute performance. Lorsque vous utilisez gRPC pour la communication entre services backend, vous pouvez recourir à Application Load Balancer (ALB) pour équilibrer la charge du trafic gRPC et offrir un point d'entrée unifié. gRPC communique via le protocole HTTP/2, et ALB prend en charge le transfert du trafic vers des groupes de serveurs backend gRPC via des écouteurs HTTPS ou HTTP.
Informations générales
gRPC est un framework open source d'appel de procédure distante (RPC) haute performance. Il utilise Protocol Buffers comme langage de définition d'interface (IDL) et communique via HTTP/2.
gRPC résout les problèmes de communication interlangages entre les services. Son IDL génère automatiquement le code nécessaire à la définition et à l'appel des services distants. Grâce à l'encodage binaire et au multiplexage HTTP/2, gRPC offre des performances élevées, une faible latence et un transfert de données efficace.
gRPC convient aux architectures de microservices, à la communication interlangages et aux systèmes distribués à grande échelle. Il prend en charge les appels unaires, ainsi que les flux de requêtes et de réponses, y compris le streaming bidirectionnel.
Pour plus d'informations sur gRPC, consultez la documentation officielle de gRPC.
Scénario
Une entreprise déploie des services gRPC dans un VPC situé dans la région Chine (Hangzhou). Ce VPC héberge une instance ALB et un groupe de serveurs activé pour gRPC. L'instance ALB est configurée avec un écouteur HTTPS activant HTTP/2, tandis que le groupe de serveurs intègre des contrôles d'état gRPC.
Les clients doivent accéder aux services gRPC déployés dans le VPC par l'intermédiaire de l'instance ALB.
Prérequis
Vous avez créé une instance ALB. Pour plus d'informations, consultez la rubrique Création et gestion d'une instance ALB.
Vous avez préparé les serveurs backend et déployé les services gRPC dessus. Pour obtenir des instructions de déploiement, reportez-vous à la documentation officielle de gRPC.
Vous avez enregistré un nom de domaine et effectué la déclaration ICP requise. Pour plus d'informations, consultez les rubriques Enregistrement d'un nom de domaine Alibaba Cloud et Processus de déclaration ICP.
Vous avez acheté un certificat SSL ou téléversé un certificat tiers dans Certificate Management Service. Le certificat doit être associé à votre nom de domaine. Pour savoir comment créer un certificat, consultez la rubrique Activation de l'accès HTTPS pour un service web à l'aide d'un certificat commercial.
Étape 1 : Créer un groupe de serveurs
Connectez-vous à la console ALB.
Dans la barre de navigation supérieure, sélectionnez la région où l'instance ALB est déployée.
Dans le volet de navigation de gauche, choisissez .
Sur la page Server Groups, cliquez sur Create Server Group.
-
Dans la boîte de dialogue Create Server Group, configurez les paramètres suivants, puis cliquez sur Create.
Cette rubrique décrit uniquement les paramètres pertinents pour ce scénario. Pour les autres paramètres, conservez les valeurs par défaut ou configurez-les selon vos besoins.
Paramètre
Description
Server Group Type
Sélectionnez un type de groupe de serveurs. Dans cet exemple, l'option Server est choisie.
VPC
Sélectionnez le VPC de votre instance ALB. Seuls les serveurs de ce VPC peuvent être ajoutés au groupe de serveurs.
Backend Protocol
Dans cet exemple, sélectionnez gRPC.
Health Check
Activez cette fonctionnalité.
Health Check Settings
Cliquez sur Modify et configurez les paramètres du contrôle d'état :
Health Check Protocol : Dans cet exemple, sélectionnez gRPC.
Health Check Method : Dans cet exemple, sélectionnez POST.
Health Check Status Codes : Sélectionnez le code d'état indiquant une réponse saine. Celui-ci doit correspondre au code d'état renvoyé par votre service gRPC. Dans cet exemple, le code d'état est
12.
Sur la page Server Groups, localisez le groupe de serveurs que vous avez créé et cliquez sur son ID.
Cliquez sur l'onglet Backend Servers, puis sur Add Backend Server.
Dans le panneau Add Backend Server, sélectionnez les instances ECS que vous avez créées, puis cliquez sur Next.
-
À l'étape Ports/Weights, définissez le port et le poids pour chaque instance ECS, puis cliquez sur OK.
RemarqueLe port configuré pour une instance ECS doit correspondre au port utilisé par le service gRPC. Assurez-vous également que les règles du groupe de sécurité de l'instance autorisent le trafic sur ce port.
Étape 2 : Configurer un écouteur HTTPS
Connectez-vous à la console Application Load Balancer (ALB).
Dans la barre de navigation supérieure, sélectionnez la région où votre instance est déployée.
Dans le volet de navigation de gauche, cliquez sur Instances.
Sur la page Instances, localisez l'instance à gérer et cliquez sur Create Listener dans la colonne Actions.
-
Sur la page Configure Listener, configurez les paramètres suivants. Conservez les valeurs par défaut pour les autres paramètres ou adaptez-les selon vos besoins. Cliquez ensuite sur Next.
Paramètre
Description
Listener Protocol
Sélectionnez HTTPS.
Listener Port
Dans cet exemple, le port 443 est utilisé.
RemarqueSi le protocole backend d'un groupe de serveurs est défini sur gRPC, le protocole de l'écouteur peut être HTTP ou HTTPS, et HTTP/2,0 doit être activé pour les deux.
La prise en charge de HTTP/2,0 pour les écouteurs HTTP est une fonctionnalité soumise à liste blanche. Pour l'utiliser, contactez votre gestionnaire de compte afin de demander l'accès.
-
Sur la page Configure SSL Certificate, configurez le paramètre suivant. Conservez les valeurs par défaut pour les autres paramètres ou adaptez-les selon vos besoins. Cliquez ensuite sur Next.
Paramètre
Description
Server Certificate
Sélectionnez le certificat SSL préparé.
-
Sur la page Select Server Group, configurez le paramètre suivant. Conservez les valeurs par défaut pour les autres paramètres ou adaptez-les selon vos besoins. Cliquez ensuite sur Next.
Paramètre
Description
Server Group
Sélectionnez le groupe de serveurs gRPC que vous avez créé.
Sur la page Configuration Review, vérifiez la configuration. Si celle-ci est correcte, cliquez sur Submit et attendez la création de l'écouteur.
Étape 3 : Configurer la résolution DNS
Pour les environnements de production, nous recommandons de mapper un nom de domaine personnalisé vers le nom de domaine de l'instance ALB en créant un enregistrement CNAME.
Dans le volet de navigation de gauche, choisissez .
Sur la page Instances, copiez le nom DNS de l'instance ALB créée.
-
Suivez ces étapes pour ajouter un enregistrement CNAME.
RemarqueSi votre nom de domaine est enregistré auprès d'un fournisseur autre qu'Alibaba Cloud, vous devez l'ajouter à la console Alibaba Cloud DNS avant de pouvoir configurer la résolution DNS. Pour plus d'informations, consultez la rubrique Gestion des noms de domaine. Si votre nom de domaine est enregistré auprès d'Alibaba Cloud, poursuivez avec les étapes suivantes.
Connectez-vous à la console Alibaba Cloud DNS.
Sur la page Public Zone, localisez le nom de domaine cible et cliquez sur Settings dans la colonne Operations.
Sur la page Settings, cliquez sur Add Record.
-
Dans le panneau Add Record, configurez l'enregistrement CNAME en définissant les paramètres suivants, puis cliquez sur OK.
Paramètre
Description
Record Type
Sélectionnez CNAME dans la liste déroulante.
Hostname
Préfixe de votre nom de domaine. Ce tutoriel utilise @.
RemarquePour utiliser un domaine racine, définissez le hostname sur
@.Query Source
Sélectionnez Default.
Record Value
Saisissez le nom DNS de l'instance ALB que vous avez copié.
TTL
Le TTL (Time to live) représente la durée pendant laquelle un enregistrement DNS reste mis en cache sur un serveur DNS. Conservez la valeur par défaut.
Étape 4 : Vérifier la connectivité
Après avoir suivi les étapes précédentes, les clients peuvent accéder aux services gRPC via ALB. Utilisez un outil tel que grpcurl pour tester la connectivité.
Vous ne pouvez pas accéder directement à un service gRPC depuis un navigateur web. Nous vous recommandons d'utiliser un outil tel que grpcurl pour tester la connectivité.
Sur le client, exécutez la commande grpcurl -insecure -v <Nom de domaine>:<Port de l'écouteur> <Nom du service gRPC>/<Méthode> pour accéder au service gRPC sur l'instance ECS.
Une réponse similaire à celle ci-dessous confirme que les clients peuvent accéder au service gRPC via ALB.
[root@iZbp1xxx.0Z ~]# grpcurl -insecure -v xxx.com:443 helloworld.Greeter/SayHello
Resolved method descriptor:
rpc SayHello ( .helloworld.HelloRequest ) returns ( .helloworld.HelloReply );
Request metadata to send:
(empty)
Response headers received:
accept-encoding: identity,gzip
content-type: application/grpc
date: Mon, 04 Jul 2022 08:53:01 GMT
grpc-accept-encoding: identity,deflate,gzip
vary: Accept-Encoding
Response contents:
{
"message": "remoteip:47.xxx.xxx.195 x-forwarded-for:47.xxx.xxx.xx5 user-agent:grpcurl/v1.8.0 grpc-go/1.30.0 hostname:iZbp12xxx0kZ server addr:192.168.1.239 "
}
Response trailers received:
(empty)
Sent 0 requests and received 1 response
Documentation connexe
Pour plus d'informations sur les paramètres et les considérations relatifs aux écouteurs HTTPS, consultez la rubrique Ajout d'un écouteur HTTPS.
Pour plus d'informations sur les paramètres et les considérations relatifs aux groupes de serveurs, consultez la rubrique Création et gestion de groupes de serveurs.
Pour plus d'informations sur les paramètres et les considérations relatifs aux contrôles d'état, consultez la rubrique Contrôles d'état ALB.