Utiliser des pools cibles

Un pool cible est un groupe d'instances de backend qui reçoivent le trafic entrant provenant d'équilibreurs de charge réseau passthrough externes régionaux. Toutes les instances backend d'un pool cible doivent se trouver dans la même régionGoogle Cloud . Les équilibreurs de charge réseau passthrough externes régionaux peuvent utiliser un service de backend ou un pool cible pour définir le groupe d'instances backend. Si vous créez des équilibreurs de charge réseau passthrough externes régionaux, nous vous recommandons d'utiliser des services de backend.

Cette page décrit les options de configuration pour les backends de pool cible. Lorsque la règle de transfert d'un équilibreur de charge réseau passthrough externe régional dirige le trafic vers un pool cible, l'équilibreur de charge choisit une instance du pool cible en fonction du hachage de l'adresse IP source, du port source, de l'adresse IP de destination et du port de destination.

Si vous souhaitez que votre pool cible contienne une seule machine virtuelle (VM), envisagez d'utiliser la fonctionnalité de transfert de protocole au lieu de l'équilibrage de charge.

Propriétés du pool cible

Les pools cibles fonctionnent avec des règles de transfert qui gèrent le trafic TCP et UDP. Un pool cible doit être créé avant de pouvoir être utilisé avec une règle de transfert.

Les pools cibles utilisent des anciennes vérifications d'état HTTP.

Un pool cible est constitué des propriétés suivantes :

name
Nom du pool cible. Le nom doit être unique au sein du projet, comporter de 1 à 63 caractères et correspondre à l'expression régulière [a-z]([-a-z0-9]*[a-z0-9])?. Le premier caractère doit donc être une minuscule et tous les caractères suivants doivent être soit un tiret, soit une lettre minuscule, soit un chiffre, à l'exception du dernier caractère qui ne peut pas être un tiret.
description
Facultatif. Description du pool cible définie par l'utilisateur.
region

URL complète de la région du pool cible. La région doit être la même que celle où se situent vos instances backend. Exemple :

"region" : "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION"

healthChecks[ ]

Facultatif. Liste facultative des vérifications d'état pour ce pool cible. Il n'est possible d'associer qu'une seule vérification d'état à un pool cible particulier. Pour plus d'informations, reportez-vous à la page sur les vérifications d'état.

instances[ ]

Liste d'URL d'instances devant gérer le trafic pour ce pool cible. Toutes les instances doivent se situer dans la même région que le pool cible, mais elles peuvent être rattachées à différentes zones au sein d'une même région. Exemple :

"instances" : [
  "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE",
  "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE-2"
]
sessionAffinity

Facultatif. Contrôle la méthode utilisée pour sélectionner une instance de machine virtuelle backend. Vous ne pouvez définir cette valeur que lors de la création du pool cible. Une fois définie, la valeur n'est pas modifiable. La méthode de hachage sélectionne un backend basé sur un sous-ensemble des cinq valeurs suivantes :

  • Adresse IP source / de destination
  • Port source / de destination
  • Protocole de couche 4 (TCP, UDP)

Les hachages possibles sont les suivants :

NONE (aucune valeur de hachage spécifiée) (valeur par défaut)
Hachage à cinq tuples, qui utilise les adresses IP source et de destination, les ports source et de destination, et le protocole. Chaque nouvelle connexion peut aboutir sur n'importe quelle instance, mais tout le trafic d'une connexion donnée reste sur une même instance, tant que cette instance est opérationnelle.
CLIENT_IP_PROTO
Hachage à trois tuples, qui utilise les adresses IP source et de destination, ainsi que le protocole. Toutes les connexions d'un client aboutissent sur la même instance tant qu'elles utilisent le même protocole et que l'instance reste opérationnelle.
CLIENT_IP
Hachage à deux tuples, qui utilise les adresses IP source et de destination. Toutes les connexions d'un client aboutissent sur la même instance, quel que soit le protocole, tant que l'instance reste opérationnelle.

Le hachage à cinq tuples offre une répartition homogène du trafic entre plusieurs VM. Cependant, une deuxième session provenant du même client peut aboutir sur une instance différente, car le port source peut changer. Si vous souhaitez que toutes les sessions d'un même client atteignent le même backend, tant que le backend reste opérationnel, vous pouvez spécifier les options CLIENT_IP_PROTO ou CLIENT_IP.

En général, si vous sélectionnez une méthode à trois tuples ou à deux tuples, vous obtiendrez une meilleure affinité de session que l'option par défaut, mais le trafic global ne sera peut-être pas aussi régulier.

Paquets UDP fragmentés : Si vous effectuez un équilibrage de charge du trafic UDP susceptible d'être fragmenté, définissez l'affinité de session sur CLIENT_IP_PROTO ou CLIENT_IP. N'utilisez pas la valeur NONE (hachage à cinq tuples). En effet, les fragments UDP autres que le premier ne comportent pas le numéro de port, et l'équilibreur de charge peut supprimer les fragments dénués de port. Pour en savoir plus, reportez-vous à la section Équilibrage de charge et paquets UDP fragmentés.

backupPool

Facultatif. URL complète vers une autre ressource de pool cible. Un pool de sauvegarde est un pool cible auquel un autre pool cible fait référence. Vous devez également définir le paramètre failoverRatio pour utiliser cette fonctionnalité. Si le ratio de machines virtuelles opérationnelles dans votre pool cible est inférieur à failoverRatio, l'équilibreur de charge réseau passthrough externe régional envoie le trafic à votre pool de sauvegarde. Vous ne pouvez fournir qu'un seul pool de sauvegarde par pool cible. Le pool de sauvegarde doit résider dans la même région que le pool cible. Si le ratio d'instances opérationnelles dans votre pool cible est inférieur au taux de basculement configuré, l'équilibreur de charge réseau passthrough externe régional utilise les règles suivantes pour acheminer votre trafic :

  1. Si le ratio entre les instances opérationnelles et le nombre total d'instances dans le pool cible est inférieur au taux de basculement, le trafic est envoyé aux instances opérationnelles dans le pool de sauvegarde.
  2. Si le ratio entre les instances opérationnelles et le nombre total d'instances dans le pool cible est inférieur au taux de basculement, mais qu'il n'y a pas d'instances opérationnelles restantes dans le pool de sauvegarde, le trafic est envoyé aux instances opérationnelles restantes dans le pool cible.
  3. Si le pool cible n'est pas vide et si toutes les instances du pool cible et du pool de sauvegarde échouent à leurs vérifications d'état, le trafic est envoyé à toutes les instances du pool cible, en dernier recours.
  4. Si le pool cible est vide et que toutes les instances du pool de sauvegarde échouent les vérifications d'état, le trafic est envoyé à toutes les instances du pool de sauvegarde, en dernier recours.

Un seul niveau de basculement est accepté. Par exemple, si le pool cible A dispose d'un pool de sauvegarde B, et si le pool de sauvegarde B dispose d'un pool de sauvegarde C, le trafic destiné au pool cible A ne peut être dirigé que vers le pool de sauvegarde B, et non vers le pool de sauvegarde C.

failoverRatio

Facultatif. Valeur flottante entre 0.0 et 1.0, qui détermine le moment auquel ce pool cible est déclaré non opérationnel. Par exemple, si cette valeur est définie sur 0.1, le pool cible est déclaré non opérationnel si le nombre d'instances opérationnelles est inférieur à 0.1 (10 %). Si le taux de basculement est 0.0, au moins un backend doit être opérationnel pour que le pool soit considéré comme opérationnel. Si le taux de basculement est défini sur 1.0 toutes les instances doivent être opérationnelles pour que le pool soit considéré comme opérationnel. Vous devez définir cette valeur si vous définissez le champ backupPool.

Conditions de basculement

Conditions Nouvelles connexions
Taux de basculement !=0, VM opérationnelles dans le pool cible >= FR pool cible
Taux de basculement =0, VM opérationnelles dans le pool cible > 0 pool cible
Taux de basculement !=0, VM opérationnelles dans le pool cible < FR et au moins une VM du pool de sauvegarde est opérationnelle. pool de sauvegarde
Taux de basculement =0, VM opérationnelles dans le pool cible = 0 et au moins une VM du pool de sauvegarde est opérationnelle. pool de sauvegarde
Au moins une VM se trouve dans le pool cible, toutes les VM du pool cible ne sont pas opérationnelles et toutes les VM du pool de sauvegarde ne sont pas opérationnelles. pool cible (dernier recours)
Aucune VM n'existe dans le pool cible et toutes les VM du pool de sauvegarde ne sont pas opérationnelles. pool de sauvegarde (dernier recours)
Aucune VM ne se trouve dans le pool cible et aucune VM ne se trouve dans le pool de sauvegarde. Trafic interrompu

Créer un pool cible

Console

La console Google Cloud ne permet pas de créer de pools cibles. Vous pouvez créer un pool cible à l'aide de la Google Cloud CLI ou de l'API.

Pour apprendre à créer un équilibreur de charge réseau passthrough externe régional basé sur un pool cible à l'aide de la Google Cloud CLI, consultez la page Configurer un équilibreur de charge réseau passthrough externe régional avec un pool cible.

gcloud

Pour créer un pool cible à l'aide de gcloud compute, exécutez la commande target-pools create :

  gcloud compute target-pools create TARGET_POOL \
      [--backup-pool=BACKUP_POOL] \
      [--description=DESCRIPTION] \
      [--failover-ratio=FAILOVER_RATIO] \
      [--http-health-check=HEALTH_CHECK] \
      [--region=REGION]
      [--session-affinity=SESSION_AFFINITY; default="NONE"]

Remplacez les éléments suivants :

  • TARGET_POOL : nom du pool cible
  • BACKUP_POOL : nom du pool cible de sauvegarde
  • DESCRIPTION : description du pool cible
  • FAILOVER_RATIO : valeur comprise entre 0.0 et 1.0, qui détermine le moment auquel le pool cible est déclaré non opérationnel
  • HEALTH_CHECK : vérification d'état de ce pool cible
  • REGION : région du pool cible
  • SESSION_AFFINITY : méthode utilisée pour sélectionner une instance de machine virtuelle backend

API

Pour créer un pool cible dans l'API, envoyez une requête HTTP POST à l'URI suivant :

  https://www.googleapis.com/v1/compute/projects/PROJECT_ID/regions/REGION/targetPools
  {
    "name": name,
    "instances": [
       "https://www.googleapis.com/v1/compute/project/PROJECT_ID/zones/ZONE/instances/INSTANCE",
       "https://www.googleapis.com/v1/compute/project/PROJECT_ID/zones/ZONE/instances/INSTANCE-2",
    ]
  }
 

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud
  • ZONE : zone dans laquelle se trouvent les instances du pool cible
  • INSTANCE, INSTANCE-2 : instances à ajouter au pool cible

Ajouter ou supprimer une instance d'un pool cible

Console

Les pools cibles ne peuvent pas être modifiés dans la console Google Cloud . Vous pouvez modifier un pool cible à l'aide de la Google Cloud CLI ou de l'API.

gcloud

Pour ajouter des instances à un pool cible à l'aide de gcloud compute, exécutez la commande target-pools add-instances :

  gcloud compute target-pools add-instances TARGET_POOL \
      --instances=INSTANCE,[INSTANCE-2,...]

Remplacez les éléments suivants :

  • TARGET_POOL : nom du pool cible
  • INSTANCE, INSTANCE-2 : nom de l'instance (ou des instances) à ajouter au pool cible

Pour supprimer des instances, exécutez la commande target-pools remove-instances :

  gcloud compute target-pools remove-instances TARGET_POOL \
      --instances=INSTANCE,[INSTANCE-2,...]

Remplacez les éléments suivants :

  • TARGET_POOL : nom du pool cible
  • INSTANCE, INSTANCE-2 : nom de l'instance (ou des instances) à supprimer du pool cible

API

Dans l'API, envoyez une requête POST aux URI suivants :

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/removeInstance
  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/addInstance

Le corps de la requête doit inclure les URI complets des instances que vous souhaitez ajouter ou supprimer :

  {
   "instances": [
      {"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE"},
      {"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE-2"}
    ]
  }
 

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud
  • TARGET_POOL : nom du pool cible à mettre à jour
  • REGION : région dans laquelle se trouve le pool cible
  • ZONE : zone dans laquelle se trouvent les instances mises à jour
  • INSTANCE, INSTANCE-2 : instances à ajouter au pool cible

Pour en savoir plus, consultez la documentation de référence de l'API pour les méthodes targetPools.addInstance et targetPools.removeInstance.

Obtenir la liste des pools cibles

Console

Pour afficher la liste des pools cibles, utilisez le menu "Avancé" de la page "Équilibrage de charge".

Dans le menu Avancé de la page "Équilibrage de charge", accédez à l'onglet Pools cibles.
Accéder à l'onglet "Pools cibles"

La page affiche la liste des pools cibles.

gcloud

Pour lister les pools cibles existants à l'aide de gcloud compute, exécutez la commande target-pools list :

  gcloud compute target-pools list

Pour obtenir des résultats plus détaillés, utilisez la commande describe et spécifiez un nom de pool.

API

Dans l'API, envoyez une requête GET à l'URI suivant :

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud
  • REGION : région dans laquelle se trouve le pool cible

Décrire un pool cible

Console

Pour obtenir des informations sur un pool cible, utilisez le menu "Avancé" de la page "Équilibrage de charge".

  1. Dans le menu Avancé de la page "Équilibrage de charge", accédez à l'onglet Pools cibles.
    Accéder à l'onglet "Pools cibles"
  2. Pour afficher des informations détaillées, cliquez sur le nom du pool cible.

gcloud

Pour obtenir des informations sur un pool cible spécifique à l'aide de gcloud compute, exécutez la commande target-pools describe :

  gcloud compute target-pools describe TARGET_POOL

Remplacez TARGET_POOL par le nom du pool cible.

API

Dans l'API, envoyez une requête GET vide à l'URI suivant :

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud
  • TARGET_POOL : nom du pool cible à mettre à jour
  • REGION : région dans laquelle se trouve le pool cible

Obtenir la vérification de l'état des instances

Console

Pour connaître l'état de fonctionnement des instances d'un pool cible, utilisez le menu "Avancé" de la page "Équilibrage de charge".

  1. Dans le menu Avancé de la page "Équilibrage de charge", accédez à l'onglet Pools cibles.
    Accéder à l'onglet "Pools cibles"
  2. Cliquez sur le nom du pool cible.
  3. La page Détails du pool cible répertorie toutes les instances et leur état de fonctionnement.

gcloud

Pour vérifier l'état de fonctionnement actuel d'une instance de votre pool cible ou de toutes les instances du pool cible à l'aide de gcloud compute, vous pouvez exécuter la commande gcloud compute target-pools get-health :

  gcloud compute target-pools get-health TARGET_POOL

Remplacez TARGET_POOL par le nom du pool cible.

La commande renvoie l'état de fonctionnement tel que déterminé par la vérification d'état configurée, que l'état soit opérationnel ou non.

API

Dans l'API, envoyez une requête HTTP POST à l'URI suivant avec l'instance spécifiée dans le corps de la requête :

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/getHealth

  {
    "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE"
  }

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud
  • TARGET_POOL : nom du pool cible à mettre à jour
  • REGION : région dans laquelle se trouve le pool cible
  • ZONE : zone dans laquelle se trouve l'instance
  • INSTANCE : instance dont vous vérifiez l'état de fonctionnement

Supprimer un pool cible

Pour supprimer un pool cible, vous devez d'abord vous assurer qu'il n'est référencé par aucune règle de transfert. Si une règle de transfert fait référence à un pool cible, vous devez supprimer cette règle de transfert pour supprimer du même coup la référence.

Console

Pour supprimer un pool cible à l'aide de la console Google Cloud , utilisez le menu "Avancé" de la page "Équilibrage de charge".

  1. Dans le menu Avancé de la page "Équilibrage de charge", accédez à l'onglet Pools cibles.
    Accéder à l'onglet "Pools cibles"
  2. Cliquez sur le nom du pool cible.
  3. Cliquez sur Supprimer.
  4. Dans la fenêtre Supprimer un pool cible, cliquez sur Supprimer.

gcloud

Pour supprimer un pool cible à l'aide de gcloud compute, exécutez la commande target-pools delete :

  gcloud compute target-pools delete TARGET_POOL

Remplacez TARGET_POOL par le nom du pool cible à supprimer.

API

Dans l'API, envoyez une requête DELETE vide à l'URI suivant :

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud
  • TARGET_POOL : nom du pool cible à mettre à jour
  • REGION : région dans laquelle se trouve le pool cible

Ajouter ou supprimer une vérification d'état d'un pool cible

Les objets de vérification d'état sont des ressources globales autonomesqui peuvent être associées ou dissociées de n'importe quel pool cible.

Si aucune vérification de l'état d'état n'est associée à un pool cible, l'équilibreur de charge réseau passthrough externe régional considère toutes les instances comme opérationnelles et envoie du trafic à toutes les instances du pool cible. Toutefois, si vous interrogez l'état de fonctionnement d'un pool cible sans vérification d'état, la réponse sera unhealthy, indiquant que le pool cible ne dispose pas de vérification d'état. Nous recommandons d'associer des vérifications d'état aux pools cibles pour faciliter la gestion des instances.

Les équilibreurs de charge réseau passthrough externes régionaux utilisent des vérifications d'état HTTP héritées pour déterminer l'état des instances du pool cible. Un équilibreur de charge réseau passthrough externe régional ne peut utiliser qu'une vérification de l'état HTTP héritée, et non une vérification de l'état d'état HTTPS héritée.

Console

Lorsque vous utilisez la console Google Cloud , vous pouvez créer une vérification de l'état HTTP héritée tout en créant un équilibreur de charge réseau passthrough externe régional avec un backend de pool cible.

Vous ne pouvez pas utiliser la page Vérifications d'état de la console Google Cloud pour créer une ancienne vérification de l'état d'état autonome.

gcloud

Pour ajouter une vérification d'état à un pool cible à l'aide de gcloud compute, exécutez la commande target-pools add-health-checks :

  gcloud compute target-pools add-health-checks TARGET_POOL \
      --http-health-check=HEALTH_CHECK

Remplacez les éléments suivants :

  • TARGET_POOL : nom du pool cible
  • HEALTH_CHECK : ancienne vérification d'état HTTP à utiliser avec ce pool cible

Pour supprimer une vérification d'état, exécutez la commande target-pools remove-health-checks :

  gcloud compute target-pools remove-health-checks TARGET_POOL \
    --http-health-check=HEALTH_CHECK

Remplacez les éléments suivants :

  • TARGET_POOL : nom du pool cible
  • HEALTH_CHECK : ancienne vérification d'état HTTP à supprimer de ce pool cible

API

Pour associer ou dissocier une vérification d'état à l'aide de l'API, envoyez une requête HTTP POST aux URI appropriés :

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/removeHealthCheck
  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/addHealthCheck

Le corps de la requête doit contenir la vérification d'état à associer ou à dissocier :

  {
    "healthCheck": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/httpHealthChecks/HEALTH_CHECK"
  }

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud
  • TARGET_POOL : nom du pool cible à mettre à jour
  • REGION : région dans laquelle se trouve le pool cible
  • HEALTH_CHECK : ancienne vérification d'état HTTP à associer au pool cible ou à dissocier de celui-ci

Pour plus d'informations, consultez la documentation de référence de l'API pour targetPools.addHealthCheck et targetPools.removeHealthCheck.

Ajouter ou supprimer un pool cible de sauvegarde

Lorsque vous créez un pool cible, vous pouvez définir un pool cible de sauvegarde qui reçoit du trafic si le pool cible n'est plus opérationnel.

Si vous n'avez jamais configuré de pool cible de sauvegarde auparavant, vous devez également configurer des vérifications d'état pour que la fonctionnalité s'exécute correctement.

Console

Les pools cibles ne peuvent pas être modifiés dans la console Google Cloud . Vous pouvez modifier un proxy cible à l'aide de la Google Cloud CLI ou de l'API.

gcloud

Pour mettre à jour la ressource de pool de sauvegarde à l'aide de gcloud compute, exécutez la commande target-pools set-backup :

  gcloud compute target-pools set-backup TARGET_POOL \
      --backup-pool=BACKUP_POOL \
      --failover-ratio=FAILOVER_RATIO

Remplacez les éléments suivants :

  • TARGET_POOL : nom du pool cible
  • BACKUP_POOL : nom du pool cible de sauvegarde
  • FAILOVER_RATIO : valeur comprise entre 0.0 et 1.0, qui détermine le moment auquel le pool cible est déclaré non opérationnel

API

Pour effectuer une demande de mise à jour ou de suppression d'un pool de sauvegarde via l'API, envoyez une requête POST à l'URI suivant :

  POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/setBackup?failoverRatio=FAILOVER_RATIO

  {
    "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/BACKUP_POOL"
  }

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud
  • TARGET_POOL : nom du pool cible à mettre à jour
  • REGION : région dans laquelle se trouve le pool cible
  • BACKUP_POOL : nom du pool de sauvegarde à associer au pool cible
  • FAILOVER_RATIO : taux de basculement

Si vous définissez une cible vide ou ne définissez pas de taux de basculement, le comportement du pool de sauvegarde est désactivé pour ce pool cible.

Étapes suivantes