Router le trafic TCP avec Traffic Director

Ce guide explique comment utiliser Traffic Director pour router le trafic vers des services gérant le trafic TCP, y compris les bases de données, les services VoIP et les plates-formes de gestion, qui s'attendent à recevoir du trafic TCP sur des ports ou des plages de ports spécifiques.

Ce guide vous expliquera comment :

  • configurer un service représentant un ensemble de backends/points de terminaison identiques qui gèrent les requêtes TCP des clients ;
  • configurer une carte des règles de routage de sorte que les proxys Envoy configurés par Traffic Director puissent envoyer des requêtes TCP. Les schémas suivants montrent le fonctionnement du routage TCP pour les VM et les NEG, respectivement.
Ressources de l'API Compute Engine pour les VM (cliquez pour agrandir)
Configurer Traffic Director pour TCP, backends Compute Engine (cliquez pour agrandir)
Ressources de l'API Compute Engine pour les NEG (cliquez pour agrandir)
Configurer Traffic Director pour TCP, backends de NEG (cliquez pour agrandir)

Préparation

  • Dans ce tutoriel, qui s'appuie sur le guide de configuration Envoy pour le maillage de services, nous partons du principe que vous avez déjà acquis les connaissances de base sur le fonctionnement de Traffic Director.
  • Ce tutoriel se concentre sur les aspects de la configuration de Traffic Director qui diffèrent lors de la configuration de vos services et du routage pour le trafic TCP.
  • Nous partons du principe que vous avez déjà configuré un groupe d'instances géré ou un groupe de points de terminaison du réseau.

Configurer des 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

Créez une vérification d'état.

Configuration avec des VM

Si vous configurez des groupes d'instances gérés, exécutez la commande suivante pour créer une vérification d'état globale, en remplaçant le champ PORT.

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

Configuration avec des NEG

Si vous configurez des groupes de points de terminaison du réseau, exécutez les commandes suivantes pour créer une vérification d'état et une règle de pare-feu afin d'autoriser les plages d'adresses IP du vérificateur d'état.

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

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. Pour en savoir plus sur la création de règles de pare-feu pour les vérifications d'état, consultez la section Vérifications d'état.

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

Consultez la documentation de référence gcloud pour obtenir plus d'informations (y compris des conseils pour TAGS).

Créer un service de backend pour vos backends TCP

La configuration d'un service de backend pour TCP avec Traffic Director 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 groupes d'instances gérés, exécutez la commande suivante pour créer un service de backend et ajouter la vérification d'état.

gcloud beta 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 du service de backend consiste à ajouter votre groupe de backends. Étant donné que cette étape est une configuration standard de Traffic Director (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 plus d'informations, consultez le guide de configuration.

Configuration avec des NEG

Si vous configurez des groupes de points de terminaison du réseau, exécutez les commandes suivantes pour créer un service de backend et ajouter la vérification d'état.

Créez le service de backend et associez 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 Traffic Director (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 plus d'informations, consultez le guide de configuration.

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.

Tenez bien compte des é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 utiliseront pour envoyer du trafic à vos services TCP. Vous pouvez choisir l'adresse IP virtuelle de l'un de vos sous-réseaux. Traffic Director utilise cette adresse IP virtuelle et ce PORT pour mettre en correspondance les requêtes des clients avec un service de backend particulier.
    • Pour plus d'informations sur la mise en correspondance des requêtes des clients avec les services de backend, consultez la section Détection de services.

  1. Exécutez la commande suivante pour créer le proxy TCP cible, en remplaçant 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 sur les champs, consultez la documentation de référence sur gcloud.

    gcloud beta 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, Traffic Director est configuré pour équilibrer la charge du trafic de l'adresse IP virtuelle spécifiée dans la règle de transfert entre vos backends.

Dépannage

Si vos applications tentent d'envoyer des requêtes à vos services basés sur TCP :

  • 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.