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 instance de machine virtuelle (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 à la VM ou au point de terminaison supprimés. Une fois le délai écoulé, l'équilibreur de charge cesse d'envoyer tout le trafic vers la VM ou le point de terminaison supprimés.

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.

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 :

    Les équilibreurs de charge réseau passthrough internes et externes sont compatibles avec le drainage de connexion pour TCP, UDP (Preview) et d'autres protocoles non TCP.

  • Le drainage de connexion est également disponible pour les services de backend faisant partie de déploiements Cloud Service Mesh.

  • 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 Cloud Service Mesh 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 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

  1. Accédez à la page Équilibrage de charge dans Google Cloud Console.
    Accéder à la page "Équilibrage de charge"
  2. Cliquez sur Modifier pour 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.

Mettre à jour Cloud Service Mesh

  1. Accédez à la page Cloud Service Mesh de la console Google Cloud.
    Accéder à Cloud Service Mesh
  2. Cliquez sur le nom de votre service.
  3. Cliquez sur Configurations avancées en bas de votre service backend.
  4. 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.
  5. 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 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 et 3600 secondes incluses. 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 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 Cloud Service Mesh.
    • BACKEND_SERVICE est le service de backend utilisé par votre équilibreur de charge ou votre déploiement Cloud Service Mesh.
    • 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.