Configurer un équilibreur de charge réseau avec un service de backend

Ce guide fournit des instructions pour créer un déploiement d'équilibrage de charge réseau basique à l'aide d'un service de backend régional. Dans cet exemple, nous allons utiliser l'équilibreur de charge pour répartir le trafic entre les VM de backend dans deux groupes d'instances gérés zonaux dans la région us-central1. Une approche tout aussi valide consiste à utiliser un seul groupe d'instances géré régional pour la région us-central1.

Équilibreur de charge réseau avec des groupes d'instances zonaux
Équilibrage de charge réseau avec des groupes d'instances zonaux

Ce scénario répartit le trafic TCP entre les instances saines. Dans le cadre de cet exemple, des vérifications d'état TCP sont configurées pour garantir que le trafic n'est envoyé qu'aux instances saines. Notez que les vérifications d'état TCP ne sont compatibles qu'avec un équilibreur de charge basé sur le service de backend. Les équilibreurs de charge basés sur un pool cible ne peuvent utiliser que les anciennes vérifications d'état HTTP.

Cet exemple de charge équilibre le trafic TCP, mais vous pouvez utiliser l'équilibrage de charge réseau pour équilibrer le trafic UDP, SSL et HTTP(S). Avant de commencer, consultez la page Présentation de l'équilibrage de charge réseau.

Notez que l'équilibreur de charge réseau est un équilibreur de charge régional. Tous les composants de l'équilibreur de charge (VM de backend, service de backend et règle de transfert) doivent se trouver dans la même région.

Avant de commencer

Installez l'outil de ligne de commande gcloud. Pour une présentation complète de l'outil, consultez le guide de l'outil gcloud. Vous trouverez des commandes liées à l'équilibrage de charge dans le guide de référence de l'API et de gcloud.

Si vous n'avez pas encore utilisé l'outil de ligne de commande gcloud, vous devez tout d'abord exécuter gcloud init pour vous authentifier.

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

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

Pour ce scénario d'équilibrage de charge, vous allez créer deux groupes d'instances gérés Compute Engine zonaux et installer un serveur Echo sur chaque instance.

Les instances qui participent en tant que VM backend pour les équilibreurs de charge réseau doivent exécuter l'environnement invité Linux, l'environnement invité Windows ou d'autres processus appropriés présentant des fonctionnalités équivalentes.

Configurer les instances

Cloud Console

  1. Accédez à la page Groupes d'instances de Cloud Console.

    Accéder à la page Groupes d'instances

  2. Cliquez sur Créer un groupe d'instances.
  3. Choisissez Nouveau groupe d'instances géré sur la gauche.
  4. Dans le champ Nom, saisissez ig-us-1.
  5. Pour l'emplacement, sélectionnez Zone unique.
  6. Pour la région, sélectionnez us-central1.
  7. Pour la Zone, sélectionnez us-central1-a.
  8. Dans la section Modèle d'instance, sélectionnez Créer un modèle d'instance.

    1. Dans le champ Nom, saisissez ig-us-template.
    2. Assurez-vous que le disque de démarrage est défini sur une image Debian, telle que Debian GNU/Linux 9 (Stretch). Ces instructions utilisent des commandes uniquement disponibles dans Debian, comme apt-get.
    3. Sous Gestion, sécurité, disques, mise en réseau et location unique, dans l'onglet Gestion, insérez le script suivant dans le champ Script de démarrage.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
    4. Sous Réseau, renseignez le champ Tags avec le tag network-lb.

    5. Cliquez sur Enregistrer et continuer.

  9. Spécifiez le nombre d'instances que vous souhaitez créer au sein du groupe.

    Pour cet exemple, sous Mode autoscaling, sélectionnez :

    • Ne pas procéder à un autoscaling
    • Sous Nombre d'instances, saisissez 2
  10. Cliquez sur Créer pour créer le groupe.

  11. Répétez les étapes précédentes pour créer un deuxième groupe d'instances géré dans la zone us-central1-c avec les spécifications suivantes :

    • Nom : ig-us-2
    • Zone : us-central1-c
    • Modèle d'instance : utilisez le même modèle ig-us-template que celui créé dans la section précédente.

gcloud

Les instructions gcloud de ce guide supposent que vous utilisez Cloud Shell ou un autre environnement avec bash installé.

  1. Créez un modèle d'instance de VM avec le serveur HTTP à l'aide de la commande gcloud compute instance-templates create.

    gcloud compute instance-templates create ig-us-template \
    --region=us-central1 \
    --tags=network-lb \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://169.254.169.254/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'
    
  2. Créez un groupe d'instances géré dans la zone à l'aide de la commande gcloud compute instance-groups managed create.

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

    gcloud compute instance-groups managed create ig-us-2 \
        --zone us-central1-c \
        --size 2 \
        --template ig-us-template
    

Configurer les règles de pare-feu

Créez une règle de pare-feu permettant au trafic externe d'atteindre les instances backend.

Console

  1. Accédez à la page Pare-feu de Google Cloud Console.
    Accéder à la page Pare-feu
  2. Cliquez sur Créer une règle de pare-feu.
  3. Saisissez le nom allow-network-lb.
  4. Sélectionnez le réseau auquel s'applique la règle de pare-feu (par défaut).
  5. Sous Cibles, sélectionnez Tags cibles spécifiés.
  6. Dans le champ Tags cibles, saisissez network-lb.
  7. Définissez le champ Plages d'adresses IP sources sur 0.0.0.0/0 pour autoriser tout trafic, quelle que soit l'adresse IP source. Cela permet à la fois au trafic externe et aux test de vérification d'état d'atteindre les instances backend.
  8. Sous Protocoles et ports spécifiés, cochez la case en regard de TCP et saisissez 80.
  9. Cliquez sur Create (Créer). L'affichage de la nouvelle règle de pare-feu dans la console peut prendre un certain temps. Vous devrez peut-être cliquer sur Actualiser pour qu'elle apparaisse.

gcloud

gcloud compute firewall-rules create allow-network-lb \
    --target-tags network-lb \
    --allow tcp:80

Configurer l'équilibreur de charge

Configurez ensuite l'équilibreur de charge.

Lorsque vous configurez l'équilibreur de charge, vos instances de machines virtuelles reçoivent les paquets destinés à l'adresse IP externe statique configurée. Si vous utilisez une image fournie par Compute Engine, vos instances de VM sont automatiquement configurées pour gérer cette adresse IP. Si vous utilisez une autre image, vous devez configurer cette adresse en tant qu'alias sur eth0 ou en tant qu'adresse de rebouclage sur chaque instance.

Console

  1. Accédez à la page Créer un équilibreur de charge dans Google Cloud Console.
    Accéder à la page Créer un équilibreur de charge
  2. Sous Équilibrage de charge TCP, cliquez sur le bouton Démarrer la configuration.

  3. Pour le paramètre Web ou interne uniquement, sélectionnez From Internet to my VMs.

  4. Pour le paramètre Plusieurs régions ou région unique, sélectionnez Single region only.

  5. Pour Type de backend, sélectionnez Service de backend (bêta).

  6. Cliquez sur Continuer.

Configurer le backend

  1. Sur l'écran Nouvel équilibreur de charge TCP, saisissez tcp-network-lb dans le champ Nom du nouvel équilibreur de charge.
  2. Cliquez sur Backend configuration (Configuration du backend). Le nom que vous avez saisi précédemment pour l'équilibreur de charge s'affiche, mais il est impossible de le modifier.
  3. Cliquez sur Configuration du backend et apportez les modifications suivantes :
    1. Pour la région, sélectionnez us-central1.
    2. Sous Backends, sélectionnez ig-us-1 dans le menu déroulant Groupe d'instances. Cliquez sur OK. Cliquez sur Ajouter un backend et répétez cette étape pour ajouter ig-us-2.
    3. Sous Vérification d'état, sélectionnez Créer une vérification d'état ou Créer une autre vérification d'état, saisissez les informations suivantes :
      • Nom : tcp-health-check
      • Protocole : TCP
      • Port : 80
    4. Cliquez sur Enregistrer et continuer.
    5. Vérifiez qu'une coche bleue apparaît à côté de Configuration du backend avant de continuer.

Configuration du frontend

  1. Cliquez sur Frontend configuration (Configuration du frontend).
  2. Saisissez le nom network-lb-forwarding-rule.
  3. Sous Adresse IP, cliquez sur le menu déroulant et sélectionnez Créer une adresse IP.
    1. Sur l'écran Réserver une nouvelle adresse IP statique, saisissez network-lb-ip dans le champ Nom.
    2. Cliquez sur Réserver.
  4. Sélectionnez Unique et saisissez 80 pour le numéro de port.
  5. Cliquez sur le bouton OK.

    Si un cercle bleu avec une coche s'affiche à gauche de Configuration du frontend, cela indique que la configuration a réussi.

Vérifier la configuration

  1. Cliquez sur le bouton Vérification et finalisation pour vérifier tous les paramètres de configuration définis pour l'équilibreur de charge.
  2. Si les paramètres sont corrects, cliquez sur Créer. La création de l'équilibreur de charge prend quelques minutes.

    Sur l'écran Équilibrage de charge, sous la colonne Backend qui concerne votre nouvel équilibreur de charge, vous devriez voir une coche verte indiquant que ce dernier est sain.

gcloud

  1. Créez une adresse IP externe statique pour votre équilibreur de charge.

    gcloud compute addresses create network-lb-ip \
        --region us-central1
    
  2. Créer une vérification d'état TCP

    gcloud compute health-checks create tcp tcp-health-check \
        --region us-central1 \
        --port 80
    
  3. Créez un service de backend :

    gcloud compute backend-services create network-lb-backend-service \
        --protocol TCP \
        --health-checks tcp-health-check \
        --health-checks-region us-central1 \
        --region us-central1
    
  4. Ajoutez les deux groupes d'instances 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
    
  5. Créez une règle de transfert pour acheminer le trafic TCP entrant vers le service de backend. Utilisez l'adresse IP réservée à l'étape 1 comme adresse IP externe statique de l'équilibreur de charge.

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

Tester l'équilibreur de charge

Maintenant que le service d'équilibrage de charge est configuré, vous pouvez commencer à envoyer le trafic vers l'adresse IP externe de l'équilibreur de charge et surveiller le trafic qui est distribué aux instances backend.

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

Console

  1. Sur la page Équilibrage de charge avancé, accédez à l'onglet Règles de transfert.
    Accéder à l'onglet Règles de transfert
  2. Localisez network-lb-forwarding-rule, la règle de transfert utilisée par l'équilibreur de charge.
  3. Notez l'adresse IP externe indiquée dans la colonne Adresse IP associée à network-lb-forwarding-rule.

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

Envoyer du trafic vers l'équilibreur de charge

Cette procédure envoie le trafic externe à l'équilibreur de charge.

  1. Envoyez des requêtes Web à l'équilibreur de charge à l'aide de curl pour contacter son adresse IP.

    $ while true; do curl -m1 IP_ADDRESS; done
    
  2. Notez le texte renvoyé par la commande curl. Le nom de la VM de backend qui génère la réponse est affiché dans ce texte, par exemple : Page served from: VM_NAME.

    La réponse de la commande curl est alternée de manière aléatoire entre les instances de backend. En cas d'échec au début de la phase de réponse, il vous faudra probablement patienter environ 30 secondes pour que la configuration soit entièrement chargée et que vos instances soient identifiées comme saines avant de réessayer :

Étape suivante