Le drainage de connexion est un processus qui garantit que les requêtes existantes en cours se voient accorder un délai suffisant pour être traitées lorsqu'une VM est supprimée d'un groupe d'instances ou lorsqu'un point de terminaison est supprimé des groupes de points de terminaison du réseau (NEG) au format zonal.
Les informations figurant sur cette page ne s'appliquent qu'aux groupes d'instances et aux types de NEG suivants qui sont zonaux :
Pour activer le drainage de connexion, définissez un délai avant expiration du drainage de connexion sur le service backend. La durée de ce délai doit être comprise entre 0 et 3 600 secondes.
Pendant la durée spécifiée pour le délai d'expiration, les requêtes existantes adressées à la VM en cours de suppression se voient accorder un délai de grâce pour être traitées. L'équilibreur de charge n'envoie plus de nouvelles connexions TCP à la VM en cours de suppression. Une fois le délai écoulé, toutes les connexions TCP à la VM qui subsistent encore sont fermées.
Le drainage de connexion est initié par les opérations suivantes :
- Vous supprimez manuellement une VM du groupe d'instances.
- Vous supprimez une instance d'un groupe d'instances géré en effectuant un appel
resize()
,deleteInstances()
,recreateInstances()
ouabandonInstances()
. - Un groupe d'instances est supprimé d'un service de backend. Cette fonctionnalité n'est pas compatible avec les équilibreurs de charge réseau passthrough internes.
- Google Cloud supprime une instance dans le cadre de l'autoscaling.
- Vous effectuez une mise à jour du groupe d'instances géré à l'aide de l'outil de mise à jour des groupes d'instances gérés.
- Vous supprimez manuellement un point de terminaison d'un NEG zonal.
Un délai supplémentaire de 60 secondes (après expiration du délai que vous avez spécifié) peut être nécessaire à l'arrêt effectif de l'instance.
Si vous activez le drainage de connexion sur plusieurs services de backend qui partagent les mêmes groupes d'instances ou NEG, c'est la valeur de délai avant expiration la plus élevée qui est utilisée. Par exemple, supposons que le même groupe d'instances ou NEG zonal soit un backend pour deux services de backend, l'un disposant d'un délai avant expiration du drainage de connexion de 100 secondes et l'autre de 200 secondes. Google Cloud utilise 200 secondes comme délai d'expiration effectif pour le drainage de connexion, de sorte que les connexions existent pendant 200 secondes avant que Google Cloud ne les arrête. Si le backend est un groupe d'instances géré, les opérations de suppression de l'instance sont retardées d'au moins 200 secondes.
Voici une liste des spécifications concernant le drainage de connexion :
Le drainage de connexion est disponible pour les services de backend faisant partie des équilibreurs de charge suivants :
- Équilibreur de charge d'application externe global
- Équilibreur de charge d'application externe régional
- Équilibreur de charge d'application classique
- Équilibreur de charge réseau proxy externe
- Équilibreur de charge réseau proxy interne régional
- Équilibreur de charge réseau interne interrégional
- Équilibreur de charge d'application interne régional
- Équilibreur de charge d'application interne interrégional
- Équilibreur de charge réseau passthrough interne
- Équilibreur de charge réseau passthrough externe basé sur un service de backend
Le drainage de connexion est également disponible pour les services de backend faisant partie de déploiements Traffic Director.
Lorsqu'un délai avant expiration du drainage de connexion est défini, et qu'une instance est supprimée du groupe d'instances ou d'un point de terminaison d'un NEG zonal, les équilibreurs de charge Google Cloud et Traffic Director se comportent de la manière suivante :
Aucune nouvelle connexion n'est envoyée à l'instance ou au point de terminaison supprimé.
Les sessions actives acceptant les connexions existantes à l'instance ou au point de terminaison supprimé peuvent persister jusqu'à ce que le délai avant expiration du drainage de connexion soit écoulé. Une fois écoulé le délai avant expiration, Google Cloud met fin aux connexions existantes sur l'instance ou le point de terminaison supprimés.
Si vous ne définissez pas de délai avant expiration du drainage de connexion, ou si le délai avant expiration du drainage de connexion est défini sur zéro (0), Google Cloud met fin aux connexions existantes sur l'instance ou le point de terminaison supprimés aussi rapidement que possible.
Si vous utilisez le pooling de connexions, vous pouvez constater que de nouvelles requêtes, utilisant une connexion TCP précédemment établie, sont toujours reçues sur les VM en cours de drainage, ce qui entraîne des erreurs de connexion lorsque ces VM sont finalement supprimées.
Pour activer le drainage de connexion, procédez comme suit :
Console
Mettre à jour un équilibreur de charge
- Accédez à la page Équilibrage de charge dans Google Cloud Console.
Accéder à la page "Équilibrage de charge" - Cliquez sur le bouton Modifier ( ) correspondant à votre équilibreur de charge ou créez un équilibreur de charge.
- Cliquez sur Configuration du backend.
- Cliquez sur Configurations avancées en bas de votre service backend.
- Dans le champ Délai avant expiration du drainage de connexion, saisissez une valeur comprise entre
0
et3600
. La valeur0
désactive le drainage de connexion.
Mettre à jour Traffic Director
- Accédez à la page "Traffic Director" dans la console Google Cloud.
Accéder à Traffic Director - Cliquez sur le nom de votre service.
- Cliquez sur Configurations avancées en bas de votre service backend.
- Dans le champ Délai avant expiration du drainage de connexion, saisissez une valeur comprise entre
0
et3600
. La valeur0
désactive le drainage de connexion. - Cliquez sur Enregistrer.
gcloud
Pour activer le drainage de connexion sur un service de backend nouveau ou existant, utilisez l'option --connection-draining-timeout
. Les exemples suivants montrent comment modifier le délai avant expiration du drainage de connexion :
Pour un équilibreur de charge global ou interrégional existant :
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
Pour un équilibreur de charge régional existant :
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
Remplacez les espaces réservés par des valeurs valides :
- BACKEND_SERVICE : le service de backend que vous mettez à jour.
- REGION : le cas échéant, région du service de backend que vous mettez à jour
CONNECTION_TIMEOUT_SECS : nombre de secondes d'attente avant l'arrêt des connexions existantes aux instances ou aux points de terminaison, entre
0
et3600
secondes incluses. La valeur0
désactive le drainage de connexion. Le délai avant expiration du drainage de connexion s'applique à tous les backends du service de backend.Vous pouvez également exécuter la commande
gcloud compute backend-services edit
pour mettre à jour un service de backend existant.
API
Pour activer le drainage de connexion dans l'API lors de la création ou de la mise à jour d'une instance ou d'un point de terminaison, envoyez une requête à l'URI d'API concerné en incluant le champ connectionDraining
dans le corps de votre requête. Les exemples suivants montrent comment définir cet attribut en modifiant un service de backend existant. Pour en savoir plus sur les autres attributs obligatoires, consultez la documentation de chaque équilibreur de charge.
Pour un équilibreur de charge global ou interrégional existant :
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
Pour un équilibreur de charge régional existant :
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/backendServices
{
"name": "BACKEND_SERVICE",
"connectionDraining": {
"drainingTimeoutSec": CONNECTION_TIMEOUT_SECS
}
}
où :
PROJECT_ID
est l'ID du projet contenant votre équilibreur de charge ou votre déploiement Traffic Director.BACKEND_SERVICE
est le service de backend utilisé par votre équilibreur de charge ou votre déploiement Traffic Director.CONNECTION_TIMEOUT_SECS
est le délai à respecter (en secondes) avant la suppression de l'instance ou du point de terminaison du groupe d'instances ou du groupe de NEG (valeur comprise entre 0 et 3 600 secondes inclus). Ce délai avant expiration s'applique à tous les groupes d'instances ou NEG référencés par le service de backend.
Étape suivante
Pour obtenir des informations générales sur les services de backend, consultez la présentation des services de backend.