Migrer un équilibreur de charge réseau passthrough externe à partir du pool cible vers le service de backend

Ce guide fournit des instructions pour faire passer un équilibreur de charge réseau passthrough externe existant d'un backend de pool cible vers un service de backend régional.

Le transfert vers un service de backend régional vous permet d'exploiter des fonctionnalités telles que les vérifications d'état non héritées (pour TCP, SSL, HTTP, HTTPS et HTTP/2), les groupes d'instances gérés, ledrainage de connexion et la stratégie de basculement.


Pour obtenir des instructions détaillées sur cette tâche directement dans la console Google Cloud, cliquez sur Visite guidée :

Visite guidée


Ce guide vous accompagne tout au long de la transition de l'exemple suivant d'équilibreur de charge réseau passthrough externe basé sur un pool cible pour utiliser à la place un service de backend régional.

Avant : Équilibreur de charge réseau passthrough externe avec un pool cible
Avant : Équilibreur de charge réseau passthrough externe avec pool cible

Le déploiement résultant de l'équilibreur de charge réseau passthrough externe basé sur un service de backend ressemble à ceci.

Après : équilibreur de charge réseau passthrough externe avec un service de backend régional
Après : Équilibreur de charge réseau passthrough externe avec un service de backend régional

Cet exemple suppose que vous disposez d'un équilibreur de charge réseau passthrough externe traditionnel basé sur un pool cible avec deux instances dans la zone us-central-1a et deux instances dans la zone us-central-1c.

Voici les grandes étapes à suivre pour effectuer une telle transition:

  1. Regroupez vos instances de pool cible dans des groupes d'instances.

    Les services de backend ne fonctionnent qu'avec des groupes d'instances gérés ou non gérés. Bien qu'il n'existe aucune limite au nombre d'instances pouvant être placées dans un même pool cible, les groupes d'instances ont une taille maximale. Si votre pool cible dépasse ce nombre maximal d'instances, vous devez répartir ses backends entre plusieurs groupes d'instances.

    Si votre déploiement existant inclut un pool cible de sauvegarde, créez un groupe d'instances distinct pour ces instances. Ce groupe d'instances est configuré en tant que groupe de basculement.

  2. Créez un service de backend régional.

    Si votre déploiement inclut un pool cible de sauvegarde, vous devez spécifier un taux de basculement lors de la création du service de backend. Il doit correspondre au taux de basculement précédemment configuré pour le déploiement du pool cible.

  3. Ajoutez des groupes d'instances (créés précédemment) au service de backend.

    Si votre déploiement inclut un pool cible de sauvegarde, marquez le groupe d'instances de basculement correspondant avec l'option --failover lors de son ajout au service de backend.

  4. Configurez une règle de transfert pointant vers le nouveau service de backend.

    Vous avez le choix entre les options suivantes :

    • Mettre à jour la règle de transfert existante pour qu'elle pointe vers le service de backend (recommandé).

    • Créez une règle de transfert pointant vers le service de backend. Vous devez donc créer une adresse IP pour l'interface de l'équilibreur de charge. Modifiez ensuite vos paramètres DNS pour passer en toute fluidité de l'adresse IP de l'ancien équilibreur de charge basé sur le pool cible à la nouvelle adresse IP.

Avant de commencer

Installez Google Cloud CLI. Pour une présentation complète de l'outil, consultez le guide de l'outil gcloud. Vous trouverez des commandes associées à l'équilibrage de charge dans la section dédiée au groupe de commandes gcloud compute.

Si vous n'avez pas encore utilisé Google Cloud CLI, exécutez d'abord gcloud init pour vous authentifier.

Dans ce guide, nous partons du principe que vous maîtrisez bash.

Identifier les backends et la règle de transfert à migrer

  1. Pour répertorier tous les pools cibles, exécutez la commande suivante dans Cloud Shell :

    gcloud compute target-pools list
    

    Notez le nom du pool cible à partir duquel effectuer la migration. Cette adresse sera désignée plus loin par le nom TARGET_POOL_NAME.

  2. Pour répertorier toutes les instances de VM dans le pool cible TARGET_POOL_NAME, exécutez la commande dans Cloud Shell :

    gcloud compute target-pools describe TARGET_POOL_NAME \
      --region=us-central1
    

    Notez les noms des instances de VM. Ces noms seront désignés plus loin par BACKEND_INSTANCE1, BACKEND_INSTANCE2, BACKEND_INSTANCE3 et BACKEND_INSTANCE4.

  3. Pour répertorier les règles de transfert dans l'équilibreur de charge réseau passthrough externe, exécutez la commande dans Cloud Shell :

    gcloud compute forwarding-rules list
      --filter="target: ( TARGET_POOL_NAME )"
    

    Notez le nom de la règle de transfert. Ce nom sera désigné plus loin par FORWARDING_RULE.

Créer les groupes d'instances zonaux non gérés

Créez un groupe d'instances non géré zonal pour chacune des zones dans lesquelles vous disposez de backends. Selon votre configuration, vous pouvez répartir vos instances sur autant de groupes que nécessaire. Dans notre exemple, nous n'utilisons que deux groupes d'instances, un pour chaque zone, et toutes les VM de backend sont placées dans une zone donnée du groupe d'instances associé.

Pour cet exemple, nous créons deux groupes d'instances : l'un dans la zone uc-central1-a et l'autre dans la zone us-central1-c.

Configurer les groupes d'instances

Console

  1. Dans la console Google Cloud, accédez à la page Groupes d'instances.

    Accéder à la page "Groupes d'instances"

  2. Cliquez sur Créer un groupe d'instances.
  3. Dans le volet de gauche, sélectionnez Nouveau groupe d'instances non géré.
  4. Dans le champ Nom, saisissez ig-us-1.
  5. Pour Région, sélectionnez us-central1.
  6. Pour Zone, sélectionnez us-central1-a.
  7. Sélectionnez le réseau et le sous-réseau en fonction de l'emplacement de vos instances. Dans cet exemple, les instances du pool cible existant se trouvent dans le réseau et le sous-réseau default.
  8. Pour ajouter des instances au groupe d'instances, sélectionnez les deux instances BACKEND_INSTANCE1 et BACKEND_INSTANCE2 dans la section Instances de VM.
  9. Cliquez sur Créer.
  10. Répétez ces étapes pour créer un deuxième groupe d'instances avec les spécifications suivantes :

    • Nom : ig-us-2
    • Région : us-central1
    • Zone : us-central1-c

    Ajoutez les deux instances BACKEND_INSTANCE3 et BACKEND_INSTANCE4 de la zone us-central1-c à ce groupe d'instances.

  11. Si le déploiement d'équilibreur de charge existant dispose également d'un pool cible de sauvegarde, répétez ces étapes pour créer un groupe d'instances de basculement distinct pour ces instances.

gcloud

  1. Créez un groupe d'instances non géré dans la zone us-central1-a à l'aide de la commande gcloud compute instance-groups unmanaged create.

    gcloud compute instance-groups unmanaged create ig-us-1 \
        --zone us-central1-a
    
  2. Créez un deuxième groupe d'instances non géré dans la zone us-central1-c.

    gcloud compute instance-groups unmanaged create ig-us-2 \
        --zone us-central1-c
    
  3. Ajoutez des instances au groupe d'instances ig-us-1.

    gcloud compute instance-groups unmanaged add-instances ig-us-1 \
        --instances BACKEND_INSTANCE_1,BACKEND_INSTANCE_2 \
        --zone us-central1-a
    
  4. Ajoutez des instances au groupe d'instances ig-us-2.

    gcloud compute instance-groups unmanaged add-instances ig-us-2 \
        --instances BACKEND_INSTANCE_3,BACKEND_INSTANCE_4 \
        --zone us-central1-c
    
  5. Si le déploiement d'équilibreur de charge existant dispose également d'un pool cible de sauvegarde, répétez ces étapes pour créer un groupe d'instances de basculement distinct pour ces instances.

Créer une vérification d'état

Créez une vérification d'état pour déterminer l'état des instances de vos groupes d'instances. Une ancienne vérification d'état HTTP est probablement associée à votre équilibreur de charge réseau passthrough externe basé sur un pool cible.

Vous pouvez créer une vérification d'état correspondant au protocole du trafic que l'équilibreur de charge va distribuer. Les équilibreurs de charge réseau passthrough externes basés sur un service de backend peuvent utiliser les vérifications d'état TCP, SSL, HTTP(S) et HTTP/2.

Console

  1. Dans Google Cloud Console, accédez à la page Vérifications d'état.

    Accéder à la page "Vérifications d'état"

  2. Cliquez sur Créer une vérification d'état.
  3. Dans le champ Nom, saisissez network-lb-health-check.
  4. Définissez le champ d'application sur Régional.
  5. Pour Région, sélectionnez us-central1.
  6. Pour Protocole, sélectionnez HTTP.
  7. Dans la section Port, saisissez 80.
  8. Cliquez sur Créer.

gcloud

  1. Pour cet exemple, nous créons une vérification d'état HTTP non-héritée à utiliser avec le service de backend.

    gcloud compute health-checks create http network-lb-health-check \
    --region us-central1 \
    --port 80
    

Configurer le service de backend

Utilisez l'une des sections suivantes pour créer le service de backend. Si votre équilibreur de charge réseau passthrough externe existant dispose d'un pool cible de sauvegarde, vous devez configurer un taux de basculement lors de la création du service de backend.

Vous devez également désigner le groupe d'instances de basculement avec l'option --failover lors de l'ajout de backends au service de backend.

Déploiements sans pool cible de sauvegarde

gcloud

  1. Créez un service de backend régional dans la région us-central1.

    gcloud compute backend-services create network-lb-backend-service \
       --region us-central1 \
       --health-checks network-lb-health-check \
       --health-checks-region us-central1 \
       --protocol TCP
    
  2. Ajoutez les deux groupes d'instances (ig-us-1 et ig-us-2) en tant que backends au service de backend.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-2 \
       --instance-group-zone us-central1-c \
       --region us-central1
    

Déploiements avec un pool cible de sauvegarde

gcloud

  1. Créez un service de backend régional dans la région us-central1. Configurez le taux de basculement du service de backend afin qu'il corresponde au taux de basculement précédemment configuré pour le pool cible.

    gcloud compute backend-services create network-lb-backend-service \
       --region us-central1 \
       --health-check network-lb-health-check \
       --failover-ratio 0.5
    
  2. Ajoutez les deux groupes d'instances (ig-us-1 et ig-us-2) en tant que backends au service de backend.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-2 \
       --instance-group-zone us-central1-c \
       --region us-central1
    
  3. Si vous avez créé un groupe d'instances de basculement, ajoutez-le au service de backend. Marquez ce backend avec l'option --failover lorsque vous l'ajoutez au service de backend.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group FAILOVER_INSTANCE_GROUP \
       --instance-group-zone ZONE \
       --region us-central1 \
       --failover
    

Configurer la règle de transfert

Vous disposez de deux options pour configurer la règle de transfert de façon à diriger le trafic vers le nouveau service de backend. Vous pouvez mettre à jour la règle de transfert existante ou créer une règle de transfert avec une nouvelle adresse IP.

Utilisez l'option set-target pour mettre à jour la règle de transfert existante afin qu'elle pointe vers le nouveau service de backend.

gcloud compute forwarding-rules set-target FORWARDING_RULE  \
    --backend-service network-lb-backend-service \
    --region us-central1

Remplacez FORWARDING_RULE par le nom de la règle de transfert existante.

Créer une règle de transfert

Si vous ne souhaitez pas mettre à jour la règle de transfert existante, vous pouvez créer une règle de transfert avec une nouvelle adresse IP. Étant donné qu'une adresse IP donnée ne peut être associée qu'à une seule règle de transfert à la fois, vous devez modifier manuellement votre paramètre DNS pour transférer le trafic entrant de l'ancienne adresse IP vers la nouvelle.

Utilisez la commande suivante pour créer une règle de transfert avec une nouvelle adresse IP. Vous pouvez utiliser l'indicateur --address si vous souhaitez spécifier une adresse IP déjà réservée dans la région us-central1.

gcloud compute forwarding-rules create network-lb-forwarding-rule \
    --load-balancing-scheme external \
    --region us-central1 \
    --ports 80 \
    --backend-service network-lb-backend-service

Tester l'équilibreur de charge

Testez l'équilibreur de charge pour vérifier que la règle de transfert dirige le trafic entrant comme prévu.

Rechercher l'adresse IP externe de l'équilibreur de charge

gcloud

Saisissez la commande suivante pour afficher l'adresse IP externe de la règle de transfert network-lb-forwarding-rule utilisée par l'équilibreur de charge.

gcloud compute forwarding-rules describe network-lb-forwarding-rule
    --region us-central1

Utiliser la commande nc pour accéder à l'adresse IP externe

Dans cet exemple, nous avons utilisé la méthode de hachage par défaut pour l'affinité de session. Par conséquent, les requêtes de la commande nc sont distribuées de manière aléatoire sur les VM de backend en fonction du port source attribué par votre système d'exploitation.

  1. Pour tester la connectivité, commencez par installer Netcat sous Linux en exécutant la commande suivante :

    $ sudo apt install netcat
    
  2. Répétez la commande suivante plusieurs fois jusqu'à ce que toutes les VM de backend répondent :

    $ nc IP_ADDRESS 80
    

Supprimer les ressources associées à l'ancien équilibreur de charge

Après avoir vérifié que le nouvel équilibreur de charge réseau passthrough externe fonctionne comme prévu, vous pouvez supprimer les anciennes ressources de pool cible.

  1. Dans la console Google Cloud, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Sélectionnez l'ancien équilibreur de charge associé au pool cible, puis cliquez sur Supprimer.
  3. Sélectionnez les vérifications d'état que vous avez créées, puis cliquez sur Supprimer l'équilibreur de charge et les ressources sélectionnées.

Étapes suivantes