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 :

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

Le drainage de connexion ne s'applique pas lorsque vous déconnectez un backend (groupe d'instances ou NEG zonal) du service de backend d'un équilibreur de charge.

Fonctionnement du drainage de connexion

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.

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.

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 les protocoles TCP, UDP et 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 chargeTrusted 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é.

    • Équilibreurs de charge d'application : pendant la durée spécifiée pour le délai d'expiration, les requêtes existantes adressées à la VM ou au point de terminaison marqué pour suppression se voient accorder un délai de grâce pour être traitées. L'équilibreur de charge n'envoie plus de nouvelles connexions à cette VM ni à ce point de terminaison. Une fois le délai écoulé, l'équilibreur de charge cesse d'envoyer tout le trafic à la VM ou au point de terminaison supprimés.

    • Équilibreurs de charge réseau proxy : pendant la durée spécifiée du délai avant expiration, les connexions TCP existantes à la VM ou au point de terminaison marqué pour suppression continuent de fonctionner pendant la période de drainage de connexion configurée. L'équilibreur de charge n'envoie plus de nouvelles connexions à cette VM ni à ce point de terminaison. Une fois le délai écoulé, les connexions TCP existantes à la VM ou au point de terminaison supprimé restent actives, et le proxy ferme toutes les connexions TCP existantes dans les 10 minutes, qui correspondent au délai d'inactivité par défaut.

    • Équilibreurs de charge réseau passthrough : pendant la durée spécifiée du délai avant expiration du drainage de connexion, les paquets appartenant aux connexions existantes sont acheminés vers la VM ou le point de terminaison marqué pour suppression. Une fois le délai écoulé, l'entrée conntrack pour la VM ou le point de terminaison supprimés est supprimée. Tout paquet non-SYN provenant d'une connexion existante entraîne la création d'une entrée conntrack pour le backend opérationnel. Lorsque le paquet est envoyé à un nouveau backend sain, celui-ci envoie un RST au client, car il n'a aucune trace du paquet qu'il vient de recevoir. Les équilibreurs de charge réseau passthrough internes et externes n'envoient pas de TCP-RST ni de TCP-FIN pour mettre fin aux connexions existantes après l'expiration du délai d'inactivité du drainage de connexion.

  • 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 service de backend d'un délai avant expiration du drainage de connexion de 100 secondes et l&#service de backend;autre de 200 secondes. Trusted Cloud utilise 200 secondes comme délai avant expiration effectif du drainage de connexion avant de les arrêter. 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.

  • 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), Trusted 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.

Activer le drainage de connexion

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" de la console Trusted Cloud .
    Accéder à la page "Équilibrage de charge"
  2. Dans l'onglet Équilibreurs de charge, cliquez sur more_vert, puis sur Modifier pour l'équilibreur de charge que vous souhaitez mettre à jour.
  3. Cliquez sur Configuration du backend.
  4. Dans le volet Configuration du backend, cliquez sur .
  5. En bas du volet Modifier le service de backend, cliquez sur Configurations avancées.
  6. 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 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 régional existant :

    PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/backendServices
    
    {
       "name": "BACKEND_SERVICE",
       "connectionDraining": {
         "drainingTimeoutSec": CONNECTION_TIMEOUT_SECS
       }
    }
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet contenant votre équilibreur de charge ou votre déploiement Cloud Service Mesh
    • BACKEND_SERVICE : service de backend utilisé par votre équilibreur de charge ou votre déploiement Cloud Service Mesh
    • CONNECTION_TIMEOUT_SECS : 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 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.

Étapes suivantes

Pour obtenir des informations générales sur les services de backend, consultez la présentation des services de backend.