Activer le drainage de connexion

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é d'un NEG zonal.

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 requêtes à la VM en cours de suppression. Une fois le délai écoulé, toutes les connexions à la VM qui subsistent encore sont fermées.

Le drainage de connexion est initié par les opérations suivantes :

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.

Spécifications

  • Le drainage de connexion est disponible pour les services de backend faisant partie des équilibreurs de charge suivants :

  • 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 qu'un point de terminaison est supprimé d'un NEG zonal, les équilibreurs de charge Google Cloud se comportent de la manière suivante :

    • Aucune nouvelle connexion n'est envoyée à l'instance ou au point de terminaison supprimé.

    • Les sessions TCP 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 configuré 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.

Activer le drainage de connexion

Console

  1. Accédez à la page Équilibrage de charge dans Google Cloud Console.
    Accéder à la page Équilibrage de charge
  2. Cliquez sur le bouton Modifier () correspondant à votre équilibreur de charge ou créez un équilibreur de charge.
  3. Cliquez sur Configuration du backend.
  4. Cliquez sur Configurations avancées en bas de votre service backend.
  5. Dans le champ Délai avant expiration du drainage de connexion, saisissez une valeur comprise entre 0 et 3600. La valeur 0 désactive le drainage de connexion.

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 HTTP(S) externe, un équilibreur de charge proxy SSL ou un équilibreur de charge proxy TCP :

    gcloud compute backend-services update BACKEND_SERVICE \
        --global \
        --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
    
  • Pour un équilibreur de charge TCP/UDP interne ou HTTP(S) interne :

    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 : service de backend de l'équilibreur de charge
  • CONNECTION_TIMEOUT_SECS : nombre de secondes d'attente avant l'arrêt des connexions existantes aux instances ou aux points de terminaison, entre 0 seconde et 3600 secondes, inclus. La valeur 0 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 les équilibreurs de charge HTTP(S) externes, les équilibreurs de charge proxy SSL et les équilibreurs de charge proxy TCP :

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices

Pour les équilibreurs de charge TCP/UDP internes et les équilibreurs de charge HTTP(S) internes :

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.
  • BACKEND_SERVICE est le service de backend utilisé par votre équilibreur de charge.
  • CONNECTION_TIMEOUT_SECS correspond au nombre de secondes d'attente avant la suppression des instances ou des points de terminaison du groupe d'instances ou du NEG, compris entre 0 seconde et 3 600 secondes, inclus. Ce délai avant expiration s'applique à tous les groupes d'instances ou NEG du 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.