Configurer un simple équilibreur de charge HTTP externe

Ce guide de configuration explique comment créer un simple équilibreur de charge HTTP externe à l'aide des ressources suivantes :Pour découvrir comment configurer un simple équilibreur de charge HTTPS externe avec terminaison TLS, consultez la page Configurer un simple équilibreur de charge HTTPS externe.

Pour obtenir un exemple multirégional basé sur le contenu incluant la configuration de certificats IPv6 et SSL, consultez la page Configurer un équilibreur de charge HTTPS externe multirégional basé sur le contenu.

Pour des concepts généraux, consultez la présentation de l'équilibrage de charge HTTP(S) externe.

Si vous utilisez GKE, l'équilibreur de charge est généralement configuré par le contrôleur Ingress (contrôleur d'entrée) de Kubernetes. Pour plus d'informations, consultez la page Configurer Ingress pour l'équilibrage de charge externe.

Topologie

Dans ce guide, vous allez créer la configuration illustrée dans le schéma suivant.

Équilibrage de charge HTTP simple (cliquez pour agrandir)
Équilibrage de charge HTTP simple (cliquez pour agrandir)

La séquence d'événements illustrée dans le schéma est la suivante :

  1. Un client envoie une requête de contenu à l'adresse IPv4 externe définie dans la règle de transfert.
  2. La règle de transfert dirige la requête vers le proxy HTTP cible.
  3. Le proxy cible utilise la règle du mappage d'URL pour identifier le service de backend unique qui reçoit toutes les requêtes.
  4. L'équilibreur de charge détermine que le service de backend ne possède qu'un seul groupe d'instances et dirige la requête vers une instance de machine virtuelle (VM) de ce groupe.
  5. La VM diffuse le contenu demandé par l'utilisateur.

Autorisations

Pour suivre la procédure de ce guide, vous devez être autorisé à créer des instances Compute Engine, des règles de pare-feu et des adresses IP réservées au sein d'un projet. Vous devez disposer d'un rôle de propriétaire ou d'éditeur de projet, ou des rôles IAM Compute Engine suivants :

Tâche Rôle requis
Créer des instances Administrateur d'instances
Ajouter et supprimer des règles de pare-feu Administrateur de sécurité
Créer des composants pour l'équilibreur de charge Administrateur réseau
Créer un projet (facultatif) Créateur de projet

Pour en savoir plus, consultez les guides suivants :

Créer un groupe d'instances géré

Pour que vous puissiez configurer un équilibreur de charge avec un backend Compute Engine, vos VM doivent appartenir à un groupe d'instances. Ce guide explique comment créer un groupe d'instances géré avec des VM Linux exécutant Apache, ainsi que comment configurer l'équilibrage de charge.

Le groupe d'instances géré fournit des VM exécutant les serveurs de backend d'un équilibreur de charge HTTP externe. À des fins de démonstration, les backends diffusent leurs propres noms d'hôte.

Console

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

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

  2. Cliquez sur Créer un groupe d'instances.
  3. Sur la gauche, sélectionnez Nouveau groupe d'instances géré.
  4. Dans le champ Nom, saisissez lb-backend-example.
  5. Pour l'emplacement, sélectionnez Zone unique.
  6. Pour Région, sélectionnez la région de votre choix. Cet exemple utilise us-east1.
  7. Pour Zone, sélectionnez us-east1-b.
  8. Dans la section Modèle d'instance, sélectionnez Créer un modèle d'instance.
  9. Dans le champ Nom, saisissez lb-backend-template.
  10. 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.
  11. 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
    
  12. Dans l'onglet Réseau, ajoutez les tags réseau suivants : allow-health-check

  13. Cliquez sur Enregistrer et continuer.

  14. Sous Mode autoscaling, sélectionnez Ne pas procéder à un autoscaling.

  15. Sous Nombre d'instances, saisissez 2.

  16. Pour créer le groupe d'instances, cliquez sur Créer.

gcloud

  1. Créez le modèle.

    gcloud compute instance-templates create lb-backend-template \
       --region=us-east1 \
       --network=default \
       --subnet=default \
       --tags=allow-health-check \
       --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é basé sur ce modèle.

    gcloud compute instance-groups managed create lb-backend-example \
       --template=lb-backend-template --size=2 --zone=us-east1-b
    

Ajouter un port nommé au groupe d'instances

Pour votre groupe d'instances, définissez un service HTTP et mappez un nom de port sur le port correspondant. Une fois configuré, le service d'équilibrage de charge transfère le trafic vers le port nommé.

Console

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

    Accéder à la page Groupes d'instances

  2. Cliquez sur le nom de votre groupe d'instances (dans cet exemple lb-backend-example), puis sur Modifier le groupe.
  3. Cliquez sur Préciser le mappage des noms des ports.
  4. Cliquez sur Ajouter un élément.
  5. Pour le nom du port, saisissez http. Pour le numéro de port, saisissez 80.
  6. Cliquez sur Enregistrer.

gcloud

gcloud compute instance-groups unmanaged set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone us-east1-b

Configurer une règle de pare-feu

Dans cet exemple, vous créez la règle de pare-feu fw-allow-health-check. Il s'agit d'une règle d'entrée qui autorise le trafic provenant des systèmes de vérification d'état Google Cloud (130.211.0.0/22 et 35.191.0.0/16). Cet exemple utilise le tag cible allow-health-check pour identifier les VM.

Console

  1. Dans Google Cloud Console, accédez à la page Pare-feu.

    Accéder à la page "Pare-feu"

  2. Cliquez sur Créer une règle de pare-feu pour créer la deuxième règle de pare-feu :
  3. Dans le champ Nom, saisissez fw-allow-health-check.
  4. Sous Réseau, sélectionnez Par défaut.
  5. Sous Cibles, sélectionnez Tags cibles spécifiés.
  6. Dans le champ Tags cibles, saisissez allow-health-check.
  7. Définissez Filtre source sur Plages d'adresses IP.
  8. Définissez Plages d'adresses IP sources sur 130.211.0.0/22 et 35.191.0.0/16.
  9. Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés.
  10. Cochez la case tcp, puis saisissez 80 pour les numéros de port.
  11. Cliquez sur Créer.

gcloud

gcloud compute firewall-rules create fw-allow-health-check \
    --network=default \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp

Réserver une adresse IP externe

Maintenant que vos instances sont opérationnelles, configurez une adresse IP externe statique globale que vos clients utiliseront pour accéder à votre équilibreur de charge.

Console

  1. Dans Google Cloud Console, accédez à la page Adresses IP externes.

    Accéder à la page Adresses IP externes

  2. Pour réserver une adresse IPv4, cliquez sur Réserver une adresse statique.
  3. Dans le champ Nom, saisissez lb-ipv4-1.
  4. Définissez Niveau de service réseau sur Premium.
  5. Définissez Version IP sur IPv4.
  6. Définissez Type sur Global.
  7. Cliquez sur Réserver.

gcloud

gcloud compute addresses create lb-ipv4-1 \
    --ip-version=IPV4 \
    --global

Notez l'adresse IPv4 réservée :

gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global

Configurer l'équilibreur de charge

Console

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

    Accéder à la page Équilibrage de charge

  2. Cliquez sur Créer un équilibreur de charge.
  3. Dans la section Équilibrage de charge HTTP(S), cliquez sur Démarrer la configuration.
  4. Sélectionnez D'Internet vers mes VM, puis cliquez sur Continuer.
  5. Attribuez le nom web-map-http à l'équilibreur de charge.
  6. Cliquez sur Configuration du backend.
    1. Sous Créer ou sélectionner des services de backend et des buckets backend, sélectionnez Services de backend > Créer un service de backend.
    2. Ajoutez un nom pour votre service de backend (par exemple web-backend-service).
    3. Sous Protocole, sélectionnez HTTP.
    4. Pour le port nommé, saisissez http.
    5. Dans la section Backends > Nouveau backend > Groupe d'instances, sélectionnez votre groupe d'instances lb-backend-example.
    6. Pour le champ Numéros de ports, saisissez 80.
    7. Conservez les autres paramètres par défaut.
    8. Sous Vérification d'état, sélectionnez Créer une vérification d'état, puis attribuez-lui un nom, tel que http-basic-check.
    9. Définissez le protocole sur HTTP, puis cliquez sur Enregistrer et continuer.
    10. Conservez les autres paramètres par défaut.
    11. Cliquez sur Créer.
  7. Dans Règles d'hôte et de chemin d'accès, conservez les paramètres par défaut.
  8. Dans la section Configuration de l'interface, utilisez les valeurs suivantes :
    1. Définissez le protocole sur HTTP.
    2. Définissez l'adresse IP sur lb-ipv4-1, que vous avez créée précédemment.
    3. Assurez-vous que Port est défini sur 80 pour autoriser le trafic HTTP.
    4. Cliquez sur OK.
  9. Cliquez sur Vérifier et finaliser.
  10. Une fois la configuration de l'équilibreur de charge terminée, cliquez sur Créer.
  11. Attendez jusqu'à ce que l'équilibreur de charge soit créé.
  12. Cliquez sur le nom de l'équilibreur de charge.
  13. Sur l'écran Détails de l'équilibreur de charge, notez la valeur IP:Port correspondant à votre équilibreur de charge.

gcloud

  1. Créez une vérification d'état.
        gcloud compute health-checks create http http-basic-check \
            --port 80
        
  2. Créez un service de backend.
        gcloud compute backend-services create web-backend-service \
            --protocol=HTTP \
            --port-name=http \
            --health-checks=http-basic-check \
            --global
        
  3. Ajoutez votre groupe d'instances en tant que backend au service de backend.
        gcloud compute backend-services add-backend web-backend-service \
            --instance-group=lb-backend-example \
            --instance-group-zone=us-east1-b \
            --global
        
  4. Créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend par défaut.
        gcloud compute url-maps create web-map-http \
            --default-service web-backend-service
        
  5. Créez un proxy HTTP cible pour acheminer les requêtes vers votre mappage d'URL.
        gcloud compute target-http-proxies create http-lb-proxy \
            --url-map web-map-http
        
  6. Créez une règle de transfert globale pour acheminer les requêtes entrantes vers le proxy.
        gcloud compute forwarding-rules create http-content-rule \
            --address=lb-ipv4-1\
            --global \
            --target-http-proxy=http-lb-proxy \
            --ports=80
        

Envoyer du trafic vers vos instances

Maintenant que le service d'équilibrage de charge est en cours d'exécution, vous pouvez envoyer le trafic vers la règle de transfert et observer la répartition du trafic entre les différentes instances.

Console

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

    Accéder à la page Équilibrage de charge

  2. Cliquez sur l'équilibreur de charge que vous venez de créer.
  3. Dans la section Backend, vérifiez que les VM sont opérationnelles. La colonne Opérationnelles doit indiquer que les deux VM sont opérationnelles (2/2). Si ce n'est pas le cas, commencez par actualiser la page. Il peut s'écouler quelques instants avant que Cloud Console n'indique que les VM sont opérationnelles. Si les backends ne semblent toujours pas opérationnels au bout de quelques minutes, vérifiez la configuration du pare-feu et le tag réseau attribué à vos VM de backend.
  4. Une fois que Cloud Console indique que les instances backend sont opérationnelles, vous pouvez tester votre équilibreur de charge à l'aide d'un navigateur Web en accédant à http://IP_ADDRESS. Remplacez IP_ADDRESS par l'adresse IP de l'équilibreur de charge.
  5. Votre navigateur doit afficher une page dont le contenu indique le nom de l'instance ayant diffusé la page, ainsi que sa zone (par exemple, Page served from: lb-backend-example-xxxx). Si ce n'est pas le cas, vérifiez les paramètres de configuration décrits dans ce guide.

Étape suivante