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.
regionURL 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" ]
sessionAffinityFacultatif. 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_PROTOouCLIENT_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_PROTOouCLIENT_IP. N'utilisez pas la valeurNONE(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.backupPoolFacultatif. 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
failoverRatiopour 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 :- 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.
- 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.
- 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.
- 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.
failoverRatioFacultatif. Valeur flottante entre
0.0et1.0, qui détermine le moment auquel ce pool cible est déclaré non opérationnel. Par exemple, si cette valeur est définie sur0.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 est0.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 sur1.0toutes 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 champbackupPool.
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 cibleBACKUP_POOL: nom du pool cible de sauvegardeDESCRIPTION: description du pool cibleFAILOVER_RATIO: valeur comprise entre 0.0 et 1.0, qui détermine le moment auquel le pool cible est déclaré non opérationnelHEALTH_CHECK: vérification d'état de ce pool cibleREGION: région du pool cibleSESSION_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 CloudZONE: zone dans laquelle se trouvent les instances du pool cibleINSTANCE,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 cibleINSTANCE,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 cibleINSTANCE,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 CloudTARGET_POOL: nom du pool cible à mettre à jourREGION: région dans laquelle se trouve le pool cibleZONE: zone dans laquelle se trouvent les instances mises à jourINSTANCE,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 CloudREGION: 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".
- Dans le menu Avancé de la page "Équilibrage de charge", accédez à l'onglet Pools cibles.
Accéder à l'onglet "Pools cibles" - 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 CloudTARGET_POOL: nom du pool cible à mettre à jourREGION: 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".
- Dans le menu Avancé de la page "Équilibrage de charge", accédez à l'onglet Pools cibles.
Accéder à l'onglet "Pools cibles" - Cliquez sur le nom du pool cible.
- 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 CloudTARGET_POOL: nom du pool cible à mettre à jourREGION: région dans laquelle se trouve le pool cibleZONE: zone dans laquelle se trouve l'instanceINSTANCE: 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".
- Dans le menu Avancé de la page "Équilibrage de charge", accédez à l'onglet Pools cibles.
Accéder à l'onglet "Pools cibles" - Cliquez sur le nom du pool cible.
- Cliquez sur Supprimer.
- 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 CloudTARGET_POOL: nom du pool cible à mettre à jourREGION: 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 cibleHEALTH_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 cibleHEALTH_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 CloudTARGET_POOL: nom du pool cible à mettre à jourREGION: région dans laquelle se trouve le pool cibleHEALTH_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 cibleBACKUP_POOL: nom du pool cible de sauvegardeFAILOVER_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 CloudTARGET_POOL: nom du pool cible à mettre à jourREGION: région dans laquelle se trouve le pool cibleBACKUP_POOL: nom du pool de sauvegarde à associer au pool cibleFAILOVER_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
- Pour en savoir plus sur les pools cibles, consultez la documentation de référence de l'API pour
targetPools.setBackup. - Consultez la page Présentation des règles de transfert pour obtenir davantage d'informations sur les règles de transfert.