Configurer le routage du trafic TCP

Ce guide explique comment utiliser Cloud Service Mesh pour acheminer le trafic vers des services qui gèrent le trafic TCP. Ces services incluent des bases de données, des services VOIP et des plates-formes de gestion, qui s'attendent à recevoir du trafic TCP sur des ports ou des plages de ports spécifiques.

Ce guide s'applique au déploiement avec les anciennes API. Si vous utilisez les nouvelles API de routage de services, qui sont en version bêta, consultez la page Configuration de Cloud Service Mesh pour les services TCP avec une ressource TCPRoute.

Utilisez ce guide pour effectuer les opérations suivantes:

  • Configurez un service qui représente une collection de backends ou de points de terminaison identiques qui acceptent les requêtes TCP des clients.
  • Configurez une carte des règles de routage afin que Envoy transmette les proxys de Cloud Service Mesh peuvent envoyer des requêtes TCP.

Les schémas suivants montrent le fonctionnement du routage TCP pour les instances de machine virtuelle (VM) et les groupes de points de terminaison du réseau (NEG).

Ressources API Compute Engine pour les VM.
Configurer Cloud Service Mesh pour TCP, les backends Compute Engine (cliquez pour agrandir)


Ressources API Compute Engine pour les NEG.
Configurer Cloud Service Mesh pour TCP, backends NEG (cliquez pour agrandir)

Préparation

  • Ce guide s'appuie sur le guide de préparation Envoy pour le maillage de services, nous partons du principe que vous avez déjà acquis les connaissances de base sur le fonctionnement de Cloud Service Mesh.
  • Ce guide se concentre sur des aspects de la configuration de Cloud Service Mesh différents lorsque vous configurez vos services et le routage pour le trafic TCP.
  • Dans ce guide, nous partons du principe que vous avez déjà configuré un groupe d'instances géré (MIG) ou un NEG.

Configurer les ressources d'équilibrage de charge

Pour configurer des ressources d'équilibrage de charge, procédez comme ci-après.

Créer une vérification d'état TCP

Configuration avec des VM

Si vous configurez des MIG, utilisez la commande suivante pour créer une vérification d'état globale. Remplacez PORT par le numéro de port TCP surveillé par cette vérification d'état:

gcloud compute health-checks create tcp td-vm-health-check \
    --global \
    --port=PORT

Configuration avec des NEG

Si vous configurez des NEG, utilisez la commande suivante pour créer une vérification d'état:

gcloud compute health-checks create tcp td-gke-health-check \
    --use-serving-port

Pour en savoir plus sur les vérifications d'état, consultez les pages suivantes:

Créez une règle de pare-feu pour votre vérification d'état.

Cette règle permet aux vérifications d'état des vérificateurs d'état Google Cloud d'atteindre vos backends.

gcloud

gcloud compute firewall-rules create fw-allow-health-checks \
  --action=ALLOW \
  --direction=INGRESS \
  --source-ranges=35.191.0.0/16,130.211.0.0/22 \
  --target-tags=TAGS \
  --rules=tcp:80

Pour en savoir plus sur les règles de pare-feu pour les vérifications d'état, consultez les articles suivants:

Créer un service de backend pour vos backends TCP

La configuration d'un service de backend pour TCP avec Cloud Service Mesh diffère légèrement de la configuration pour HTTP. Les étapes suivantes permettent de capturer ces différences.

Configuration avec des VM

Si vous configurez des MIG, utilisez la commande suivante pour créer un service de backend et ajouter la vérification de l'état:

 gcloud compute backend-services create td-vm-service \
     --global \
     --load-balancing-scheme=INTERNAL_SELF_MANAGED \
     --health-checks=td-vm-health-check \
     --protocol=TCP \
     --global-health-checks

La dernière étape de configuration de votre service de backend consiste à ajouter vos backends. Comme il s'agit d'une configuration standard de Cloud Service Mesh (dans d'autres sans aucune indication spécifique pour les services basés sur TCP), elle n'est pas présentée ici. Pour en savoir plus, consultez la section Créer le service de backend du guide de configuration des VM Compute Engine avec déploiement Envoy automatique.

Configuration avec des NEG

Si vous configurez des NEG, utilisez les commandes suivantes pour créer un service de backend et associer la vérification d'état au service de backend:

gcloud compute backend-services create td-gke-service \
    --global \
    --health-checks=td-gke-health-check \
    --protocol=TCP \
    --load-balancing-scheme=INTERNAL_SELF_MANAGED

La dernière étape de configuration du service de backend consiste à ajouter votre groupe de backends. Étant donné que cette étape est une configuration standard de Cloud Service Mesh (c'est-à-dire qu'elle n'est pas spécifique aux services basés sur TCP), elle n'est pas présentée ici. Pour en savoir plus, consultez la section Créer le service de backend du guide de configuration des pods GKE avec injection Envoy automatique.

Configurer le routage pour votre service de backend basé sur TCP

Dans cette section, vous allez créer un proxy TCP cible global et une règle de transfert globale. Ces ressources permettent à vos applications d'envoyer du trafic aux backends avec les services de backend que vous venez de créer.

Réfléchissez aux éléments suivants :

  • Votre règle de transfert doit avoir le schéma d'équilibrage de charge INTERNAL_SELF_MANAGED.
  • L'adresse IP virtuelle et le port que vous configurez dans la règle de transfert sont l'adresse IP virtuelle et le port que vos applications utilisent lors de l'envoi de trafic à vos services TCP. Vous pouvez choisir l'adresse IP virtuelle de l'un de vos sous-réseaux. Cloud Service Mesh utilise cette adresse IP virtuelle et ce port pour mettre en correspondance les requêtes des clients avec un service de backend particulier.

    Pour en savoir plus sur la mise en correspondance des requêtes client avec les services de backend, consultez la page Détection de services.

gcloud

  1. Utilisez la commande suivante pour créer le proxy TCP cible : Remplacez BACKEND_SERVICE par le nom du service de backend créé à l'étape précédente. Dans l'exemple suivant, nous utilisons td-tcp-proxy comme nom du proxy TCP cible, mais vous pouvez choisir un nom correspondant à vos besoins.

    gcloud compute target-tcp-proxies create td-tcp-proxy \
       --backend-service=BACKEND_SERVICE
    
  2. Créez la règle de transfert. La règle de transfert spécifie l'adresse IP virtuelle et le port utilisés lors de la mise en correspondance des requêtes des clients avec un service de backend particulier. Pour en savoir plus, consultez la section gcloud compute forwarding-rules create dans la documentation de référence de la commande gcloud.

    gcloud compute forwarding-rules create td-tcp-forwarding-rule \
        --global \
        --load-balancing-scheme=INTERNAL_SELF_MANAGED \
        --address=VIP\
        --target-tcp-proxy=td-tcp-proxy \
        --ports=PORT \
        --network=default
    

À ce stade, Cloud Service Mesh est configuré pour équilibrer la charge du trafic à l'adresse IP virtuelle spécifiée dans la règle de transfert sur vos backends.

Dépannage

Si vos applications tentent d'envoyer des requêtes à vos services basés sur TCP, procédez comme suit:

  • Vérifiez que le port de vérification d'état TCP correspond au port sur lequel l'application TCP s'attend à recevoir le trafic de vérification d'état.
  • Confirmez que le nom de port du service de backend correspond à celui spécifié dans le groupe d'instances.

Étape suivante