Créer un équilibreur de charge HTTPS

Ce guide explique comment créer un équilibreur de charge HTTPS dans Google Cloud Platform (GCP) qui assure à la fois la sélection des services de backend en fonction des chemins d'URL des requêtes et le routage des requêtes vers des backends proches des clients (équilibrage de charge interrégional).

Avant de commencer, assurez-vous de maîtriser les concepts généraux d'équilibrage de charge HTTP(S).

Aperçu

Ce guide fournit des instructions pour créer un équilibreur de charge qui achemine le trafic en fonction du chemin figurant dans l'URL de la requête et qui répartit le trafic entre plusieurs régions. Vous commencez par créer deux instances Compute Engine dans les régions US (zone us-central1-b) et EU (zone eu-west1-b). Vous créez ensuite un équilibreur de charge qui dirige le trafic vers ces instances.

L'ensemble des instructions de ce guide produit un équilibreur de charge configuré comme suit :

  • Tout trafic associé à un chemin d'URL qui commence par /video est routé vers un service de backend donné.
  • Le trafic restant, dont le chemin d'URL ne correspond pas à ce format, est dirigé vers un autre service de backend.

Dans ce guide d'utilisation, vous allez créer la configuration illustrée dans le schéma suivant :

Équilibrage de charge HTTPS interrégional et basé sur le contenu (cliquez sur l'image pour l'agrandir)
Équilibrage de charge HTTPS interrégional et basé sur le contenu (cliquez sur l'image pour l'agrandir)

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

  1. Un client accède à l'URL https://www.example.com/video/concert en envoyant une requête de contenu à l'adresse IP externe définie dans la règle de transfert. La requête peut utiliser IPv4 ou IPv6 : il existe des règles de transfert pour ces deux protocoles.
  2. Une règle de transfert dirige la requête vers le proxy HTTPS cible.
  3. Le proxy cible utilise les règles définies dans le mappage d'URL pour déterminer quel service de backend doit recevoir la requête. Une requête contenant /video, comme c'est le cas pour https://www.example.com/video/concert, est envoyée au service video-backend-service. Tout autre chemin d'URL est envoyé au service par défaut, web-backend-service.
  4. L'équilibreur de charge détermine quels groupes d'instances du service de backend doivent traiter la requête, en fonction de leur charge respective et de leur proximité avec le client. Il dirige alors la requête vers une instance de ce groupe.
  5. L'instance diffuse le contenu demandé par chaque utilisateur. Les instances video diffusent du contenu vidéo, tandis que les instances www diffusent tous les autres types de contenus.

Avant de commencer

Ces instructions nécessitent un projet. Si vous n'avez pas encore de projet, configurez-en un maintenant. Ces instructions vous guident dans la création d'un réseau VPC en mode personnalisé. Vous devez également configurer des règles de pare-feu personnalisées pour permettre au trafic d'atteindre les instances.

Si vous préférez travailler à partir de la ligne de commande, installez l'outil de ligne de commande gcloud. Pour obtenir plus d'informations conceptuelles sur l'outil gcloud ainsi que des instructions d'installation, consultez la Présentation de gcloud.

Si vous n'avez pas encore utilisé l'outil de ligne de commande gcloud, commencez par exécuter la commande gcloud init pour initialiser votre répertoire gcloud.

Dans l'exemple présenté ici, l'équilibreur de charge accepte les requêtes HTTPS en provenance des clients et transfère ces requêtes aux backends par HTTP. Vous pouvez également configurer l'équilibreur de charge pour qu'il accepte les requêtes HTTP, ainsi que pour utiliser HTTPS lorsqu'il relaie les requêtes aux backends.

Permissions

Pour réaliser les étapes décrites dans ce guide, vous devez disposer des autorisations nécessaires à la création d'instances Compute Engine au sein d'un projet. Vous devez disposer d'un rôle de propriétaire ou d'éditeur de projet, ou vous devez disposer 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

Prérequis

Facultatif : créer un projet

Nous recommandons aux utilisateurs disposant de l'autorisation resourcemanager.projects.create de créer un projet avant de poursuivre. Cela simplifie le nettoyage une fois que vous aurez terminé ce guide.

Configurer un réseau et des sous-réseaux

Dans cet exemple, utilisez les définitions suivantes pour le réseau VPC, les régions et les sous-réseaux :

  • Réseau : le réseau est un réseau VPC en mode personnalisé nommé lb-network.

  • Sous-réseaux situés dans deux régions différentes :

    • us-subnet utilise comme plage d'adresses IP principale 10.1.10.0/24 et se trouve dans la région us-central1.
    • eu-subnet utilise comme plage d'adresses IP principale 10.1.11.0/24 et se trouve dans la région europe-west1.

Pour créer le réseau et les sous-réseaux d'exemple, procédez comme suit :

Console


  1. Accédez à la page des réseaux VPC dans la console Google Cloud Platform.
    Accéder à la page des réseaux VPC
  2. Cliquez sur Créer un réseau VPC.
  3. Comme Nom, saisissez lb-network.
  4. Dans la section Sous-réseaux, créez le premier sous-réseau :
    • Définissez Mode de création du sous-réseau sur Personnalisé.
    • Dans la section Nouveau sous-réseau, saisissez les informations suivantes :
      • Nom : us-subnet
      • Région : us-central1
      • Plage d'adresses IP : 10.1.10.0/24
      • Cliquez sur OK.
  5. Toujours dans la section Sous-réseaux, cliquez sur Ajouter un sous-réseau et créez le deuxième sous-réseau :
    • Définissez Mode de création du sous-réseau sur Personnalisé.
    • Dans la section Nouveau sous-réseau, saisissez les informations suivantes :
      • Nom : eu-subnet
      • Région : europe-west1
      • Plage d'adresses IP : 10.1.11.0/24
      • Cliquez sur OK.
  6. Cliquez sur Créer.

gcloud


  1. Créez le réseau VPC personnalisé :

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Créez le sous-réseau us-subnet :

    gcloud compute networks subnets create us-subnet \
      --network=lb-network \
      --range=10.1.10.0/24 \
      --region=us-central1
    
  3. Créez le sous-réseau eu-subnet :

    gcloud compute networks subnets create eu-subnet \
      --network=lb-network \
      --range=10.1.11.0/24 \
      --region=europe-west1
    

Configurer les règles de pare-feu

La règle d'entrée interdite par défaut bloque le trafic entrant vers les instances backend, y compris le trafic provenant de l'équilibreur de charge et des systèmes de vérification d'état de GCP. Vous devez créer de nouvelles règles de pare-feu pour remplacer cette règle par défaut et autoriser le trafic à accéder à vos instances.

Dans cet exemple, vous devez créer les règles de pare-feu suivantes :

  • fw-allow-ssh : règle d'entrée applicable aux instances soumises à l'équilibrage de charge, autorisant la connectivité SSH entrante sur le port TCP 22 à partir de n'importe quelle adresse. Vous pouvez choisir une plage d'adresses IP source plus restrictive pour cette règle. Par exemple, vous pouvez spécifier uniquement les plages d'adresses IP du système à partir duquel vous prévoyez de lancer des sessions SSH. Cet exemple utilise le tag cible allow-ssh pour identifier les VM auxquelles la règle de pare-feu s'applique.

  • fw-allow-health-check-and-proxy : règle d'entrée, applicable aux instances soumises à l'équilibrage de charge, qui autorise le trafic issu de l'équilibreur de charge et des systèmes de vérification d'état de GCP (130.211.0.0/22 et 35.191.0.0/16). Cet exemple utilise le tag cible allow-hc-and-proxy pour identifier les instances auxquelles la règle doit s'appliquer.

Console


  1. Accédez à la page "Pare-feu" dans la console GCP.
    Accéder à la page "Pare-feu"
  2. Cliquez sur Créer une règle de pare-feu pour créer la première règle de pare-feu :
    1. Comme Nom, saisissez fw-allow-ssh.
    2. Comme Réseau, sélectionnez lb-network.
    3. Sous Cibles, sélectionnez Tags cibles spécifiés.
    4. Dans le champ Tags cibles, saisissez allow-ssh.
    5. Définissez Filtre source sur IP ranges (Plages d'adresses IP).
    6. Définissez le paramètre Plages d'adresses IP sources sur 0.0.0.0/0.
    7. Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés.
    8. Cochez la case en regard de tcp et saisissez 22 comme numéro de port.
    9. Cliquez sur Créer.
  3. Cliquez sur Créer une règle de pare-feu pour créer la deuxième règle de pare-feu :
    1. Comme Nom, saisissez fw-allow-health-check-and-proxy.
    2. Comme Réseau, sélectionnez lb-network.
    3. Sous Cibles, sélectionnez Tags cibles spécifiés.
    4. Dans le champ Tags cibles, saisissez allow-hc-and-proxy.
    5. Définissez Filtre source sur IP ranges (Plages d'adresses IP).
    6. Définissez les Plages d'adresses IP sources sur 130.211.0.0/22 et 35.191.0.0/16.
    7. Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés.
    8. Cochez la case en regard de tcp et saisissez 80,443 comme numéros de port.
    9. Cliquez sur Créer.

gcloud


  1. Créez la règle de pare-feu fw-allow-ssh pour autoriser la connectivité SSH aux VM portant le tag réseau allow-ssh. Lorsque vous omettez source-ranges, GCP interprète la règle comme désignant n'importe quelle source.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  2. Créez la règle fw-allow-health-check-and-proxy pour autoriser l'équilibreur de charge et les vérifications d'état de GCP à communiquer avec les instances backend sur les ports TCP 80 et 443.

    gcloud compute firewall-rules create fw-allow-health-check-and-proxy \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-hc-and-proxy \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80,tcp:443
    

Configurer l'instance

Dans cet exemple, vous créez huit instances de machines virtuelles : quatre pour diffuser du contenu vidéo et quatre pour diffuser tous les autres types de contenus. Vous utilisez un script de démarrage pour installer le logiciel de serveur Web Apache avec une page d'accueil unique à chaque instance.

Console


Créer des VM de backend

  1. Dans la console Google Cloud Platform, accédez à la page "Instances de VM".
    Accéder à la page Instances de VM
  2. Répétez la procédure ci-dessous pour créer huit VM en utilisant les combinaisons de nom, région et sous-réseau suivantes.
    • Nom : www-us-01, region : us-central1, sous-réseau : us-subnet
    • Nom : www-us-02, region : us-central1, sous-réseau : us-subnet
    • Nom : video-us-01, region : us-central1, sous-réseau : us-subnet
    • Nom : video-us-02, region : us-central1, sous-réseau : us-subnet
    • Nom : www-eu-01, region : europe-west1, sous-réseau : eu-subnet
    • Nom : www-eu-02, region : europe-west1, sous-réseau : eu-subnet
    • Nom : video-eu-01, region : europe-west1, sous-réseau : eu-subnet
    • Nom : video-eu-02, region : europe-west1, sous-réseau : eu-subnet
  3. Cliquez sur Créer une instance.
  4. Définissez le Nom et la Région comme indiqué à l'étape 2. Vous pouvez choisir n'importe quelle Zone de la région. Cet exemple utilise la zone us-central1-b de la région us-central1 et la zone europe-west1-b de la région europe-west1.
  5. Dans la section Disque de démarrage, assurez-vous que l'image sélectionnée est Debian GNU/Linux 9 Stretch. Si nécessaire, cliquez sur Sélectionner pour modifier l'image.
  6. Cliquez sur Gestion, sécurité, disques, mise en réseau et location unique et apportez les modifications suivantes :

    • Cliquez sur Mise en réseau et ajoutez les tags réseau suivants : allow-ssh et allow-hc-and-proxy
    • Cliquez sur le bouton de modification sous Interfaces réseau, apportez les modifications suivantes, puis cliquez sur Terminé :
      • Réseau : lb-network
      • Sous-réseau : sélectionnez le sous-réseau comme indiqué à l'étape 2.
      • Adresse IP interne principale : éphémère (automatique)
      • Adresse IP externe : éphémère
    • Cliquez sur Gestion. Dans le champ Script de démarrage, copiez et collez le contenu de script suivant. Le contenu du script est identique pour les quatre VM :

      #! /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)"
      filter="{print \$NF}"
      vm_zone="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/zone \
      | awk -F/ "${filter}")"
      echo "Page on $vm_hostname in $vm_zone" | \
      tee /var/www/html/index.html
      echo "AliasMatch /video(.*)$ /var/www/html/index.html" | \
      tee /etc/apache2/conf-enabled/video.conf
      systemctl restart apache2
      
  7. Cliquez sur Créer.

Créer des groupes d'instances

  1. Dans la console Google Cloud Platform, accédez à la page Groupes d'instances.
    Accéder à la page Groupes d'instances
  2. Répétez les étapes ci-dessous pour créer quatre groupes d'instances non gérés, comportant chacun deux VM, à l'aide des combinaisons suivantes.
    • Groupe d'instances : ig-www-us, region : us-central1, zone : us-central1-b, sous-réseau : us-subnet, VM : www-us-01 et www-us-02
    • Groupe d'instances : ig-video-us, region : us-central1, zone : us-central1-b, sous-réseau : us-subnet, VM : video-us-01 et video-us-02
    • Groupe d'instances : ig-www-eu, region : europe-west1, zone : europe-west1-b, sous-réseau : eu-subnet, VM : www-eu-01 et www-eu-02
    • Groupe d'instances : ig-video-eu, region : europe-west1, zone : europe-west1-b, sous-réseau : eu-subnet, VM : video-eu-01 et video-eu-02
  3. Cliquez sur Créer un groupe d'instances, puis sélectionnez Nouveau groupe d'instances non géré.
  4. Définissez le Nom comme indiqué à l'étape 2.
  5. Dans la section Emplacement, sélectionnez Zone unique, puis choisissez la région et la zone comme indiqué à l'étape 2.
  6. Comme Réseau, sélectionnez lb-network.
  7. Dans Sous-réseau, saisissez le sous-réseau indiqué à l'étape 2.
  8. Dans la section Instances de VM, ajoutez les VM indiquées à l'étape 2.
  9. Cliquez sur Créer.

gcloud


  1. Répétez la commande ci-dessous afin de créer huit VM en utilisant les combinaisons de nom, de zone et de sous-réseau suivantes. Remplacez VM_NAME, ZONE et SUBNET par les valeurs correspondantes :

    • Nom : www-us-01, region : us-central1-b, sous-réseau : us-subnet
    • Nom : www-us-02, region : us-central1-b, sous-réseau : us-subnet
    • Nom : video-us-01, region : us-central1-b, sous-réseau : us-subnet
    • Nom : video-us-02, region : us-central1-b, sous-réseau : us-subnet
    • Nom : www-eu-01, region : europe-west1-b, sous-réseau : eu-subnet
    • Nom : www-eu-02, region : europe-west1-b, sous-réseau : eu-subnet
    • Nom : video-eu-01, region : europe-west1-b, sous-réseau : eu-subnet
    • Nom : video-eu-02, region : europe-west1-b, sous-réseau : eu-subnet
    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-9 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-hc-and-proxy \
        --subnet=SUBNET \
        --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)"
    filter="{print \$NF}"
    vm_zone="$(curl -H "Metadata-Flavor:Google" \
    http://169.254.169.254/computeMetadata/v1/instance/zone \
    | awk -F/ "${filter}")"
    echo "Page on $vm_hostname in $vm_zone" | \
    tee /var/www/html/index.html
    echo "AliasMatch /video(.*)$ /var/www/html/index.html" | \
    tee /etc/apache2/conf-enabled/video.conf
    systemctl restart apache2'
    
  2. Répétez la commande ci-dessous pour créer quatre groupes d'instances non gérés, en utilisant les combinaisons de nom et de zone suivantes. Remplacez INSTANCE_GROUP_NAME et ZONE par les valeurs correspondantes :

    • Groupe d'instances : ig-www-us, zone : us-central1-b
    • Groupe d'instances : ig-video-us, zone : us-central1-b
    • Groupe d'instances : ig-www-eu, zone : europe-west1-b
    • Groupe d'instances : ig-video-eu, zone : europe-west1-b
    gcloud compute instance-groups unmanaged create INSTANCE_GROUP_NAME \
        --zone=ZONE
    
  3. Répétez la commande ci-dessous quatre fois pour ajouter deux VM à chaque groupe d'instances sur la base des combinaisons suivantes. Remplacez INSTANCE_GROUP_NAME, ZONE et INSTANCES par les valeurs correspondantes :

    • Groupe d'instances : ig-www-us, zone : us-central1-b, INSTANCES : www-us-01, www-us-02
    • Groupe d'instances : ig-video-us, zone : us-central1-b, INSTANCES : video-us-01, video-us-02
    • Groupe d'instances : ig-www-eu, zone : europe-west1-b, INSTANCES : www-eu-01, www-eu-02
    • Groupe d'instances : ig-video-eu, zone : europe-west1-b, INSTANCES : video-eu-01, video-eu-02
    gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP_NAME \
        --zone=ZONE \
        --instances=INSTANCES
    

    À titre d'exemple, voici la commande permettant d'ajouter deux instances au premier groupe d'instances :

    gcloud compute instance-groups unmanaged add-instances ig-www-us \
        --zone=us-central1-b \
        --instances=www-us-01,www-us-02
    

Réserver des adresses IP externes

Maintenant que vos instances sont opérationnelles, configurez les services nécessaires à l'équilibrage de charge. Dans cette section, vous allez créer deux adresses IP externes statiques globales que vos clients utiliseront pour accéder à votre équilibreur de charge.

Console


  1. Accédez à la page "Adresses IP externes" dans la console GCP.
    Accéder à la page "Adresses IP externes"
  2. Cliquez sur Réserver une adresse statique pour réserver une adresse IPv4.
  3. Attribuez un Nom à lb-ipv4-1.
  4. Définissez le niveau réseau à la valeur Premium.
  5. Définissez Version IP sur IPv4.
  6. Définissez le Type à la valeur Global.
  7. Cliquez sur Réserver.
  8. Cliquez à nouveau sur Réserver une adresse statique pour réserver une adresse IPv6.
  9. Attribuez un Nom à lb-ipv6-1.
  10. Définissez le niveau réseau à la valeur Premium.
  11. Définissez Version IP sur IPv6.
  12. Assurez-vous que le paramètre Type est bien défini sur Global.

    Dans l'exemple, l'équilibreur de charge utilise le niveau réseau Premium. Un équilibreur de charge utilisant le niveau réseau standard fait plutôt appel à des adresses IP régionales. Les adresses IPv6 ne sont pas disponibles avec le niveau standard.

  13. 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
gcloud compute addresses create lb-ipv6-1 \
    --ip-version=IPV6 \
    --global

Notez l'adresse IPv6 réservée :

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

Configurer les ressources d'équilibrage de charge

La fonctionnalité d'équilibreur de charge fait intervenir plusieurs ressources connectées que vous allez définir et connecter dans cette section. Il s'agit des types suivants :

  • Des ports nommés que l'équilibreur de charge utilisera pour acheminer le trafic vers vos groupes d'instances
  • Une vérification d'état qui interroge vos instances pour savoir si elles sont opérationnelles. L'équilibreur de charge n'envoie le trafic que vers les instances opérationnelles.
  • Des services de backend, qui assurent le suivi de la capacité, de l'affinité de session et des vérifications d'état. Les services de backend envoient des requêtes aux VM de backend ou aux points de terminaison en fonction de leur capacité et de l'état des instances.
  • Un mappage d'URL utilisé par l'équilibreur de charge pour diriger les requêtes vers des services de backend spécifiques en fonction de l'hôte et du chemin d'accès de l'URL de requête.
  • Une ressource de certificat SSL. Les ressources de certificat SSL contiennent des informations de certificat SSL utilisées par l'équilibreur de charge pour interrompre le protocole TLS lorsque des clients HTTPS s'y connectent. Vous pouvez utiliser plusieurs certificats SSL sous forme d'une combinaison quelconque de certificats SSL gérés ou autogérés. Vous devez créer une ressource de certificat SSL pour chaque certificat que vous utilisez.
  • Un proxy HTTPS cible, auquel l'équilibreur de charge fait appel pour associer votre mappage d'URL et vos certificats SSL à vos règles de transfert globales.
  • Deux règles de transfert globales, une pour IPv4 et une pour IPv6, qui détiennent les ressources de l'adresse IP externe globale. Les règles de transfert globales transfèrent les requêtes entrantes vers le proxy cible.

Console


Attribuer un nom à votre équilibreur de charge

  1. Accédez à la page "Équilibrage de charge" dans la console Google Cloud Platform.
    Accéder à la page Équilibrage de charge
  2. Dans la section Équilibrage de charge HTTP(S), cliquez sur Démarrer la configuration.
  3. Comme Nom de l'équilibreur de charge, saisissez web-map.
  4. Laissez la fenêtre ouverte pour continuer.

Configurer le service de backend et la vérification d'état pour les instances www

L'équilibreur de charge nécessite deux services de backend et une vérification d'état pour ces deux services. Dans cet exemple, l'équilibreur de charge interrompt les requêtes HTTPS provenant du client et utilise le protocole HTTP pour communiquer avec les backends. Pour ce faire, vous devez spécifier HTTP comme protocole pour la communication avec les backends et pour les vérifications d'état.

Configurer le service de backend pour les instances www

  1. Cliquez sur Configuration du backend.
  2. Dans le menu déroulant Créer ou sélectionner un service backend, sélectionnez Créer un service backend.
  3. Définissez le Nom du service de backend à la valeur web-backend-service.
  4. Cliquez sur l'icône Modifier située à côté du champ Délai d'expiration pour modifier le protocole. Sélectionnez le protocole que vous souhaitez utiliser pour la communication en provenance de l'équilibreur de charge et à destination des backends.
  5. Dans le champ Port nommé, saisissez http.
  6. Assurez-vous que le Type de backend est bien défini sur Groupes d'instances.
  7. Sous Backends, définissez le Groupe d'instances sur ig-www-us.
  8. Pour le trafic entre l'équilibreur de charge et les instances, définissez le champ Numéros de ports sur 80.
  9. Conservez les valeurs par défaut des autres champs.
  10. Cliquez sur OK en bas de la fenêtre Nouveau backend.
  11. Cliquez sur Ajouter un backend et répétez les étapes ci-dessus, en sélectionnant cette fois le groupe d'instances ig-www-eu.
  12. Laissez la fenêtre ouverte pour continuer.

Configurer la vérification d'état pour les instances www

  1. Dans la fenêtre Configuration du backend, sous Vérification de l'état, sélectionnez Créer une vérification de l'état ou Créer une autre vérification de l'état.
  2. Pour créer la vérification d'état HTTP, définissez les paramètres suivants :
    • Nom : http-basic-check
    • Protocole : HTTP
    • Port : 80
  3. Cliquez sur Enregistrer et continuer.
  4. Cliquez sur Créer.

Configurer le backend et la vérification d'état pour les instances www-video

  1. Répétez les étapes ci-dessus, mais en donnant au deuxième service de backend le nom video-backend-service et en lui affectant les groupes d'instances video-resources-us et video-resources-eu.
  2. Suivez la même procédure pour créer la vérification d'état.

Configurer les règles d'hôte et de chemin d'accès

Les règles d'hôte et de chemin d'accès configurent la ressource de mappage d'URL de l'équilibreur de charge.

  1. Dans la colonne de gauche de l'écran, cliquez sur Règles d'hôte et de chemin d'accès.
  2. La première ligne inclut web-backend-service dans la colonne de droite et contient déjà la règle par défaut Any unmatched (default) (sans correspondance) pour les hôtes et les chemins.
  3. Assurez-vous qu'il existe bien une deuxième ligne comportant video-backend-service dans la colonne de droite. Si ce n'est pas le cas, cliquez sur Ajouter une règle d'hôte et de chemin d'accès, puis sélectionnez video-backend-service dans le menu déroulant de la colonne de droite. Remplissez les autres colonnes comme indiqué ici : [...]
    1. Définissez Hôtes à la valeur *.
    2. Dans le champ Chemins d'accès, saisissez /video, appuyez sur la touche Tabulation, saisissez /video/* et appuyez à nouveau sur la touche Tabulation.

Configurer l'interface

La section de configuration de l'interface gère plusieurs ressources pour l'équilibreur de charge, y compris les règles de transfert et les certificats SSL. En outre, elle vous permet de sélectionner le protocole utilisé entre le client et l'équilibreur de charge.

Dans cet exemple, vous utilisez le protocole HTTPS entre le client et l'équilibreur de charge. Vous devez donc disposer d'une ou plusieurs ressources de certificat SSL pour configurer le proxy. Pour en savoir plus sur la création de ressources de certificats SSL, consultez la documentation relative aux certificats SSL. Nous vous recommandons d'utiliser un certificat géré par Google.

  1. Dans le panneau de gauche de la page Nouvel équilibreur de charge HTTP(S), cliquez sur Configuration de l'interface.
  2. Dans le champ Nom, saisissez https-content-rule.
  3. Dans le champ Protocole, sélectionnez HTTPS.
  4. Laissez la fenêtre ouverte pour continuer.

Configurer la règle de transfert IPv4

  1. Définissez Version IP sur IPv4.
  2. Dans l'Adresse IP, sélectionnez l'adresse lb-ipv4-1 que vous avez créée précédemment.
  3. Assurez-vous que le Port est défini à la valeur 443 pour autoriser le trafic HTTPS.
  4. Cliquez sur la liste déroulante Certificat.
    1. Si vous possédez déjà une ressource de certificat SSL autogérée que vous souhaitez utiliser comme certificat SSL principal, sélectionnez-la dans le menu déroulant.
    2. Sinon, sélectionnez Créer un certificat.
    3. Sélectionnez Importer mon certificat ou Créer un certificat géré par Google.
    4. Si vous avez choisi Importer mon certificat, procédez comme suit :
      1. Renseignez comme Nom www-ssl-cert.
      2. Dans les champs correspondants, importez respectivement votre Certificat de clé publique (fichier .crt), votre Chaîne de certificats (fichier .csr) et votre Clé privée (fichier .key).
      3. Cliquez sur Créer.
    5. Si vous avez choisi de Créer un certificat géré par Google, saisissez un Domaine.
  5. Pour ajouter des ressources de certificat en plus de la ressource de certificat SSL principale :
    1. Cliquez sur Ajouter un certificat.
    2. Sélectionnez un certificat dans la liste Certificats ou cliquez sur Créer un certificat, puis suivez les instructions ci-dessus.
  6. Cliquez sur OK.
  7. Laissez la fenêtre ouverte pour continuer.

Configurer la règle de transfert IPv6

  1. Cliquez sur Ajouter une adresse IP et un port d'interface.
  2. Comme Nom, saisissez https-content-ipv6-rule.
  3. Dans le champ Protocole, sélectionnez HTTPS si vous souhaitez utiliser le protocole HTTPS entre le client et l'équilibreur de charge. Sélectionnez HTTP si vous préférez utiliser le protocole HTTP.
  4. Définissez Version IP sur IPv6.
  5. Dans l'Adresse IP, sélectionnez l'adresse lb-ipv6-1 que vous avez créée précédemment.
  6. Le Port par défaut, 443, est obligatoire.
  7. Si vous possédez déjà une ressource de certificat SSL que vous souhaitez utiliser, sélectionnez-la dans le menu déroulant Certificat. Sinon, sélectionnez Créer un certificat.
    1. Renseignez comme Nom www-ssl-cert.
    2. Dans les champs correspondants, importez respectivement votre Certificat de clé publique (fichier .crt), votre Chaîne de certificats (fichier .csr) et votre Clé privée (fichier .key).
    3. Cliquez sur Créer.
  8. Pour ajouter des ressources de certificat en plus de la ressource de certificat SSL principale :
    1. Cliquez sur Ajouter un certificat.
    2. Sélectionnez un certificat dans la liste Certificats ou cliquez sur Créer un certificat, puis suivez les instructions ci-dessus.
  9. Cliquez sur OK.

Vérifier et finaliser

  1. Dans le panneau de gauche de la page Nouvel équilibreur de charge HTTP(S), cliquez sur Vérification et finalisation.
  2. Comparez vos paramètres à ce que vous aviez l'intention de créer.
  3. Si tout semble correct, cliquez sur Créer pour créer votre équilibreur de charge HTTP(S).

gcloud


  1. Pour chaque 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é.

    gcloud compute instance-groups unmanaged set-named-ports ig-video-us \
        --named-ports http:80 \
        --zone us-central1-b
    
    gcloud compute instance-groups unmanaged set-named-ports ig-www-us \
        --named-ports http:80 \
        --zone us-central1-b
    
    gcloud compute instance-groups unmanaged set-named-ports ig-video-eu \
        --named-ports http:80 \
        --zone europe-west1-b
    
    gcloud compute instance-groups unmanaged set-named-ports ig-www-eu \
        --named-ports http:80 \
        --zone europe-west1-b
    
  2. Créez une vérification d'état. Utilisez la commande gcloud pour HTTP si vous utilisez HTTP entre l'équilibreur de charge et les backends.

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  3. Créez un service de backend pour chaque fournisseur de contenu. Définissez le champ --protocol sur HTTP car vous accédez aux instances via HTTP. Pour la vérification d'état, utilisez la vérification http-basic-check que nous avons créée précédemment.

    gcloud compute backend-services create video-backend-service \
        --protocol HTTP \
        --health-checks http-basic-check \
        --global
    
    gcloud compute backend-services create web-backend-service \
        --protocol HTTP \
        --health-checks http-basic-check \
        --global
    
  4. Ajoutez vos groupes d'instances en tant que backends aux services de backend. Un backend définit la capacité (utilisation maximale du processeur ou nombre maximal de requêtes par seconde) des groupes d'instances qu'il contient. Dans cet exemple, définissez le mode d'équilibrage balancing-mode sur la valeur UTILIZATION, l'utilisation maximale max-utilization sur la valeur 0.8 et le scaler de capacité capacity-scaler sur la valeur 1. Définissez le paramètre capacity-scaler à la valeur 0 si vous souhaitez drainer un service de backend.

    Ajoutez le groupe d'instances ig-video-us :

    gcloud compute backend-services add-backend video-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-video-us \
        --instance-group-zone=us-central1-b \
        --global
    

    Ajoutez le groupe d'instances ig-video-eu :

    gcloud compute backend-services add-backend video-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-video-eu \
        --instance-group-zone=europe-west1-b \
        --global
    

    Ajoutez le groupe d'instances ig-www-us :

    gcloud compute backend-services add-backend web-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-www-us \
        --instance-group-zone=us-central1-b \
        --global
    

    Ajoutez le groupe d'instances ig-www-eu :

    gcloud compute backend-services add-backend web-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-www-eu \
        --instance-group-zone=europe-west1-b \
        --global
    
  5. Créez un mappage d'URL pour diriger les requêtes entrantes vers les services de backend appropriés. Dans ce cas, les mappages de chemins de requête définis via l'indicateur --path-rules répartissent le trafic en fonction du chemin de l'URL pour chaque requête adressée à votre site. Le trafic qui ne correspond à aucune entrée de la liste --path-rules est envoyé à l'entrée figurant dans l'indicateur --default-service flag.

    1. Créez un mappage d'URL :

      gcloud compute url-maps create web-map \
          --default-service web-backend-service
      
    2. Ajoutez à votre mappage d'URL un outil de mappage des chemins d'accès (path matcher), puis définissez les mappages des chemins d'accès :

      gcloud compute url-maps add-path-matcher web-map \
          --default-service web-backend-service \
          --path-matcher-name pathmap \
          --path-rules="/video=video-backend-service,/video/*=video-backend-service"
      
  6. Créez une ressource de certificat SSL autosigné à utiliser au niveau du proxy HTTPS.

    Nous utilisons ici un certificat autosigné à des fins de démonstration, mais dans le cadre d'un déploiement réel, vous devez configurer votre équilibreur de charges pour qu'il utilise un certificat signé par une autorité de certification. Dans ce cas de figure, vous pouvez soit utiliser un certificat autogéré (configuration dans laquelle vous fournissez votre propre certificat SSL), soit un certificat géré par Google (auquel cas Google émet un certificat pour votre domaine). Pour en savoir plus, consultez la documentation relative aux Types de certificats SSL. Si vous utilisez plusieurs certificats SSL, vous devez créer une ressource de certificat SSL pour chacun d'entre eux.

    Pour plus d'informations sur la création de ressources de certificats SSL dans GCP.

    Pour créer une ressource de certificat SSL autogéré, procédez comme suit :

    gcloud compute ssl-certificates create www-ssl-cert \
        --certificate [CRT_FILE_PATH] \
        --private-key [KEY_FILE_PATH]
    

    Pour créer une ressource de certificat SSL géré par Google, procédez comme suit :

    gcloud beta compute ssl-certificates create www-ssl-cert \
      --domains [DOMAIN]
    
  7. Créez un proxy HTTPS cible pour rediriger les requêtes vers votre mappage d'URL. Le serveur proxy est la partie de l'équilibreur de charge qui contient le certificat SSL pour l'équilibrage de charge HTTPS. Vous chargez donc également votre certificat à cette étape :

    gcloud compute target-https-proxies create https-lb-proxy \
        --url-map web-map --ssl-certificates www-ssl-cert
    
  8. Créez deux règles de transfert globales pour acheminer les requêtes entrantes vers le proxy, une pour chacune des adresses IP que vous avez créées.

    gcloud compute forwarding-rules create https-content-rule \
        --address=lb-ipv4-1\
        --global \
        --target-https-proxy=https-lb-proxy \
        --ports=443
    
    gcloud compute forwarding-rules create https-content-ipv6-rule \
        --address=lb-ipv6-1 \
        --global \
        --target-https-proxy=https-lb-proxy \
        --ports=443
    

Une fois les règles de transfert globales créées, la propagation de votre configuration peut prendre plusieurs minutes.

Envoyer du trafic vers vos instances

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

Console/navigateur Web


  1. Accédez à la page "Équilibrage de charge" dans la console Google Cloud Platform.
    Accéder à la page Équilibrage de charge
  2. Cliquez sur web-map pour développer l'équilibreur de charge que vous venez de créer.
  3. Dans la section Backend, vérifiez que les instances sont opérationnelles. La colonne Instances saines doit présenter des éléments indiquant que les deux instances de chacun des quatre groupes d'instances sont saines. Si ce n'est pas le cas, commencez par actualiser la page. Il peut s'écouler quelques instants avant que la console GCP n'affiche l'état opérationnel des instances. Si les backends n'apparaissent toujours pas opérationnels au bout de quelques minutes, examinez la configuration du pare-feu et l'ensemble des tags réseau attribués à vos instances backend.
  4. Si vous utilisez un certificat géré par Google, vérifiez que l'état de votre ressource de certificat est ACTIVE. Pour plus d'informations, consultez la section État d'une ressource de certificat SSL géré par Google.
  5. Lorsque la Console GCP indique que les instances backend sont opérationnelles, vous pouvez tester votre équilibreur de charge à l'aide d'un navigateur Web en accédant à l'adresse https://<var>IP_Address</var>, où IP_Address représente l'adresse IP de l'équilibreur de charge. Si vous avez utilisé un certificat autosigné pour les tests, votre navigateur affiche un avertissement. Vous devez explicitement lui indiquer d'accepter un certificat autosigné. Il doit alors afficher une page dont le contenu indique le nom de l'instance ayant diffusé la page, ainsi que sa zone (par exemple, Page on www-us-02 in us-central1-b)
  6. Dans votre navigateur, accédez à la page https://<var>IP_Address</var>/video, où IP_Address est l'adresse IP de l'équilibreur de charge. Votre navigateur doit afficher une page dont le contenu indique le nom de l'instance video ayant diffusé la page, ainsi que sa zone (par exemple, Page on video-us-02 in us-central1-b)

gcloud/utiliser curl


  1. Si vous utilisez un certificat géré par Google, vérifiez que l'état de votre ressource de certificat est ACTIVE avant de poursuivre. Pour plus d'informations, consultez la section État des ressources de certificat SSL géré par Google.

     gcloud beta compute ssl-certificates list
    
  2. Utilisez la commande curl pour vérifier la réponse envoyée par les URL suivantes. Remplacez IP_Address par l'adresse IPv4 de votre équilibreur de charge :

    curl -k https://IP_Address
    curl -k https://IP_Address/video/
    
  3. Utilisez la commande curl pour vérifier la réponse envoyée par les URL suivantes. Remplacez IP_Address par l'adresse IPv6 de votre équilibreur de charge : pour IPv6, vous devez ajouter des crochets ([]) autour de l'adresse et désactiver le globbing à l'aide de l'indicateur -g (par exemple, curl -g -6 "https://[2001:DB8::]/").

    curl -k -g -6 https://[IP_Address]
    curl -k -g -6 https://[IP_Address]/video/
    

Tester la fonctionnalité d'équilibrage interrégional

Pour simuler un utilisateur localisé dans une autre région, vous pouvez vous connecter à l'une de vos instances de machines virtuelles située dans une région différente, puis exécuter une commande curl partir de cette instance.

À l'heure actuelle, vous observez une sortie HTML d'en-tête <!doctype html><html><body><h1>www-us</h1></body></html>.

Répétez cette procédure en vous connectant cette fois à www-eu-1. La sortie comporte désormais l'en-tête <!doctype html><html><body><h1>www-eu</h1></body></html>.

Vous pouvez réaliser des tests à partir d'un système client situé n'importe où dans le monde. Si les backends d'une région deviennent non opérationnels ou atteignent leur capacité maximale, l'équilibreur de charge HTTPS redirige automatiquement le trafic vers la région la plus proche.

Facultatif : supprimer les adresses IP externes des VM de backend

Dans GCP, l'équilibrage de charge HTTP(S) communique avec les backends à l'aide de leurs adresses IP internes et de routes d'équilibreurs de charge particulières. Les instances backend n'ont pas besoin d'adresses IP externes pour communiquer avec l'équilibreur de charge. Vous pouvez renforcer la sécurité en supprimant les adresses IP externes de vos instances backend.

Pour supprimer les adresses IP externes des instances backend, suivez ces instructions.

Si vous devez vous connecter en SSH à une instance backend dépourvue d'adresse IP externe, reportez-vous à la section Se connecter à une instance qui ne possède pas d'adresse IP externe.

Nettoyer

Une fois que vous avez terminé ce tutoriel sur l'équilibrage de charge HTTP(S), vous pouvez supprimer les ressources Cloud Load Balancing que vous avez créées afin qu'elles ne vous soient plus facturées par la suite. Si ces ressources ont été créées au sein d'un projet isolé dédié, vous pouvez supprimer l'ensemble du projet. Sinon, vous pouvez supprimer les ressources individuellement.

Supprimer le projet

Console


  1. Accédez à la page "Projets" dans la console GCP.
    Accéder à la page Projets
  2. Dans la liste des projets, sélectionnez celui que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

gcloud


Exécutez la commande suivante en remplaçant project_id par l'ID de votre projet :

gcloud projects delete project_id

Supprimer des ressources individuelles

Console


Supprimer l'équilibreur de charge

  1. Accédez à la page "Équilibrage de charge" dans la console Google Cloud Platform.
    Accéder à la page Équilibrage de charge
  2. Cochez la case en regard de web-map.
  3. Cliquez sur le bouton Supprimer en haut de la page.
  4. Cochez les cases situées à côté de toutes les ressources supplémentaires, y compris les services de backend, les vérifications d'état et les certificats SSL.
  5. Cliquez sur Supprimer l'équilibreur de charge et les ressources sélectionnées.

Supprimer les groupes d'instances

  1. Dans la console Google Cloud Platform, accédez à la page Groupes d'instances.
    Accéder à la page Groupes d'instances
  2. Pour sélectionner tous les groupes d'instances, cochez la case située en haut à côté de l'intitulé Nom.
  3. Cliquez sur Supprimer.
  4. Dans la fenêtre de confirmation, cliquez sur Supprimer.

Libérer des adresses IP externes

  1. Accédez à la page "Adresses IP externes" dans la console GCP.
    Accéder à la page "Adresses IP externes"
  2. Cochez les cases figurant à côté de lb-ipv4-1 et lb-ipv6-1.
  3. Cliquez sur Supprimer.
  4. Dans la fenêtre de confirmation, cliquez sur Supprimer.

Supprimer les règles de pare-feu

  1. Accédez à la page "Pare-feu" dans la console GCP.
    Accéder à la page "Pare-feu"
  2. Cochez les cases figurant à côté de fw-allow-health-check-and-proxy et fw-allow-ssh.
  3. Cliquez sur Supprimer.
  4. Dans la fenêtre de confirmation, cliquez sur Supprimer.

Supprimer les instances de VM

  1. Dans la console Google Cloud Platform, accédez à la page "Instances de VM".
    Accéder à la page Instances de VM
  2. Pour sélectionner toutes les instances, cochez la case située en haut à côté de l'intitulé Nom.
  3. Cliquez sur Supprimer.
  4. Dans la fenêtre de confirmation, cliquez sur Supprimer.

Supprimer le réseau VPC

  1. Accédez à la page des réseaux VPC dans la console Google Cloud Platform.
    Accéder à la page des réseaux VPC
  2. Cliquez sur lb-network.
  3. Sur la page des détails du réseau, cliquez sur Supprimer le réseau VPC.
  4. Dans la fenêtre de confirmation, cliquez sur Supprimer.

gcloud


Supprimer l'équilibreur de charge

Pour supprimer l'équilibreur de charge, vous devez supprimer chacun de ses composants.

  1. Supprimez les règles de transfert :

    gcloud compute forwarding-rules delete https-content-rule \
        --global
    gcloud compute forwarding-rules delete https-content-ipv6-rule \
        --global
    
  2. Supprimez les adresses IP externes globales :

    gcloud compute addresses delete lb-ipv4-1 \
        --global
    gcloud compute addresses delete lb-ipv6-1 \
        --global
    
  3. Supprimer le proxy cible :

    gcloud compute target-https-proxies delete https-lb-proxy
    
  4. Supprimez le certificat SSL :

    gcloud compute ssl-certificates delete www-ssl-cert
    
  5. Supprimer le mappage d'URL :

    gcloud compute url-maps delete web-map
    
  6. Supprimer les services de backend :

    gcloud compute backend-services delete web-backend-service \
        --global
    gcloud compute backend-services delete video-backend-service \
        --global
    
  7. Supprimez les vérifications d'état :

    gcloud compute health-checks delete http-basic-check
    

Vous avez supprimé toutes les ressources de l'équilibreur de charge.

Supprimer les groupes d'instances

Répétez la commande ci-dessous pour supprimer quatre groupes d'instances non gérés, en utilisant les combinaisons de nom et de zone suivantes. Remplacez INSTANCE_GROUP_NAME et ZONE par les valeurs correspondantes :

  • Nom : ig-www-us, zone : us-central1-b
  • Nom : ig-video-us, zone : us-central1-b
  • Nom : ig-www-eu, zone : europe-west1-b
  • Nom : ig-video-eu, zone : europe-west1-b
gcloud compute instance-groups unmanaged delete INSTANCE_GROUP_NAME \
   --zone=ZONE

Supprimer les instances de VM

Répétez la commande ci-dessous pour supprimer huit VM en utilisant les combinaisons de nom et de zone suivantes. Remplacez VM_NAME et ZONE par les valeurs correspondantes :

  • Nom : www-us-01, zone : us-central1-b
  • Nom : www-us-02, zone : us-central1-b
  • Nom : video-us-01, zone : us-central1-b
  • Nom : video-us-02, zone : us-central1-b
  • Nom : www-eu-01, zone : europe-west1-b
  • Nom : www-eu-02, zone : europe-west1-b
  • Nom : video-eu-01, zone : europe-west1-b
  • Nom : video-eu-02, zone : europe-west1-b
gcloud compute instance delete VM_NAME \
   --zone=ZONE

Supprimer les règles de pare-feu

Supprimez les deux règles de pare-feu :

gcloud compute firewall-rules delete fw-allow-health-check-and-proxy
gcloud compute firewall-rules delete fw-allow-ssh

Supprimer le réseau VPC

Pour commencer, supprimez le sous-réseau us-subnet :

gcloud compute networks subnets delete us-subnet \
    --region=us-central1

Supprimez ensuite le sous-réseau eu-subnet :

gcloud compute networks subnets delete eu-subnet \
    --region=europe-west1

Enfin, supprimez le réseau VPC :

gcloud compute networks delete lb-network

Vous avez supprimé toutes les ressources que vous avez définies dans ce projet.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…