Configurer un équilibreur de charge proxy SSL externe avec des backends de groupe d'instances de VM

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Ce document fournit des instructions pour la configuration de l'équilibrage de charge proxy SSL externe. Avant de commencer, consultez la page Présentation de l'équilibrage de charge proxy SSL externe pour en savoir plus sur le fonctionnement de l'équilibrage de charge proxy SSL externe.

Vue d'ensemble de la configuration

Cet exemple explique comment configurer l'équilibrage de charge proxy SSL externe au niveau mondial pour un service existant dans deux régions : us-central1 et us-east1. Vous allez configurer les éléments suivants :

  1. Quatre instances réparties dans deux régions
  2. Des groupes d'instances pour organiser les instances
  3. Plusieurs composants backend, parmi lesquels :
    • Vérification d'état : permet de surveiller l'état de santé des instances
    • Service de backend : surveille les groupes d'instances et empêche le dépassement du taux d'utilisation configuré
    • Backends : pour organiser les groupes d'instances
  4. Plusieurs composants frontend, parmi lesquels :
    • Une ressource de certificat SSL. 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 valide pour tous vos domaines). Pour en savoir plus, consultez la documentation concernant les Types de certificats SSL.
    • Le proxy SSL proprement dit et son certificat SSL
    • Une adresse IPv4 externe statique et une règle de transfert permettant d'envoyer le trafic utilisateur au proxy
    • Une adresse IPv6 externe statique et une règle de transfert permettant d'envoyer le trafic utilisateur au proxy
  5. Une règle de pare-feu qui autorise le trafic provenant de l'équilibreur de charge et du vérificateur d'état à accéder aux instances
  6. Vous pouvez également définir une règle SSL pour contrôler les fonctionnalités SSL que votre équilibreur de charge négocie avec les clients.

Ensuite, vous allez pouvoir tester votre configuration.

Autorisations

Pour suivre ce guide, vous devez savoir comment créer des instances et modifier un réseau dans un projet. Vous devez être propriétaire ou éditeur du projet, ou disposer de tous les rôles IAM Compute Engine suivants :

Tâche Rôle requis
Créer des réseaux, des sous-réseaux et des composants de l'équilibreur de charge Administrateur réseau
Ajouter et supprimer des règles de pare-feu Administrateur de sécurité
Créer des instances Administrateur d'instances Compute

Pour en savoir plus, consultez les guides suivants :

Configurer des instances et des groupes d'instances

Cette section explique comment créer des instances et des groupes d'instances, puis ajouter les instances aux groupes d'instances. Un système de production utilise normalement des groupes d'instances gérés qui s'appuient sur des modèles d'instances, mais cette configuration-ci est plus rapide pour la phase de test initiale.

Créer des instances

À des fins de test, installez Apache sur quatre instances réparties équitablement entre deux groupes d'instances. Normalement, vous ne devriez pas avoir à utiliser l'équilibrage de charge proxy SSL externe pour votre trafic HTTP à l'avenir. Mais, dans le cadre de ces tests, Apache présente l'avantage d'être couramment utilisé et facile à configurer.

Créez ces instances avec le tag ssl-lb. Celui-ci sera utilisé par la suite par la règle de pare-feu.

Console

Créer des instances

  1. Accédez à la page "Instances de VM" de Google Cloud Console.

    Accéder à la page "Instances de VM"

  2. Cliquez sur Créer une instance.

  3. Pour Nom, définissez ig-us-central1-1.

  4. Définissez le paramètre Zone sur us-central1-b.

  5. Cliquez sur Gestion, sécurité, disques, réseau et location unique pour afficher les paramètres avancés.

  6. Sous Gestion, renseignez le champ Tags avec ssl-lb.

  7. Définissez le script de démarrage comme suit :

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-central1-1</h1></body></html>' | sudo tee /var/www/html/index.html

  8. Conservez les valeurs par défaut des autres champs.

  9. Cliquez sur Create (Créer).

  10. Créez une instance nommée ig-us-central1-2 en réutilisant les mêmes paramètres, excepté pour le script de démarrage que vous définissez comme suit :

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-central1-2</h1></body></html>' | sudo tee /var/www/html/index.html

  11. Créez une instance nommée ig-us-east1-1 en réutilisant les mêmes paramètres, excepté pour le champ Zone que vous définissez sur us-east1-b et pour le script de démarrage que vous définissez comme suit :

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-east1-1</h1></body></html>' | sudo tee /var/www/html/index.html

  12. Créez une instance nommée ig-us-east1-2 en réutilisant les mêmes paramètres, excepté pour le champ Zone que vous définissez sur us-east1-b et pour le script de démarrage que vous définissez comme suit :

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-east1-2</h1></body></html>' | sudo tee /var/www/html/index.html

gcloud

  1. Créez ig-us-central1-1 dans la zone us-central1-b.

    gcloud compute instances create ig-us-central1-1 \
       --image-family debian-10 \
       --image-project debian-cloud \
       --tags ssl-lb \
       --zone us-central1-b \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo a2ensite default-ssl
         sudo a2enmod ssl
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>ig-us-central1-1</h1></body></html>' | sudo tee /var/www/html/index.html
         EOF"
    
  2. Créez ig-us-central1-2 dans la zone us-central1-b.

    gcloud compute instances create ig-us-central1-2 \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=us-central1-b \
       --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>ig-us-central1-2</h1></body></html>' | sudo tee /var/www/html/index.html
         EOF"
    
  3. Créez ig-us-east1-1 dans la zone us-east1-b.

    gcloud compute instances create ig-us-east1-1 \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=us-east1-b \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>ig-us-east1-1</h1></body></html>' | sudo tee /var/www/html/index.html
        EOF"
    
  4. Créez ig-us-east1-2 dans la zone us-east1-b.

    gcloud compute instances create ig-us-east1-2 \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=us-east1-b \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>ig-us-east1-2</h1></body></html>' | sudo tee /var/www/html/index.html
        EOF"
    

Créer un groupe d'instances dans chaque zone et ajouter des instances

Console

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

    Accéder à la page Groupes d'instances

  2. Cliquez sur Créer un groupe d'instances.

  3. Définissez le paramètre Nom sur us-ig1.

  4. Définissez le paramètre Zone sur us-central1-b.

  5. Sous Mappage des ports, cliquez sur Ajouter un port. Un équilibreur de charge envoie le trafic à un groupe d'instances via un port nommé. Créez un port nommé pour mapper le trafic entrant sur un numéro de port spécifique.

    1. Saisissez ssl-lb pour le Nom du port et 443 dans le champ Numéros de ports.
  6. Sous Définition de l'instance, cliquez sur Sélectionner des instances existantes.

  7. Dans la liste des instances de VM, sélectionnez ig-us-central1-1 et ig-us-central1-2.

  8. Ne modifiez pas les autres paramètres.

  9. Cliquez sur Créer.

  10. Répétez ces étapes, mais définissez les paramètres suivants :

    • Nom : us-ig2
    • Zone : us-east1-b
    • Nom du port : ssl-lb et Numéros de ports : 443
    • Instances : ig-us-east1-1 et ig-us-east1-2
  11. Vérifiez que vous disposez désormais de deux groupes d'instances, chacun d'entre eux comportant deux instances.

gcloud

  1. Créez le groupe d'instances us-ig1.

    gcloud compute instance-groups unmanaged create us-ig1 --zone us-central1-b
    
  2. Définissez un port nommé pour le groupe d'instances :

    gcloud compute instance-groups set-named-ports us-ig1 \
        --named-ports=ssl-lb:443 \
        --zone=us-central1-b
    
  3. Ajoutez ig-us-central1-1 et ig-us-central1-2 à us-ig1

    gcloud compute instance-groups unmanaged add-instances us-ig1 \
        --instances=ig-us-central1-1,ig-us-central1-2 \
        --zone=us-central1-b
    
  4. Créez le groupe d'instances us-ig2.

    gcloud compute instance-groups unmanaged create us-ig2 --zone us-east1-b
    
  5. Définissez un port nommé pour le groupe d'instances :

    gcloud compute instance-groups set-named-ports us-ig2 \
        --named-ports=ssl-lb:443 \
        --zone=us-east1-b
    
  6. Ajoutez ig-us-east1-1 et ig-us-east1-2 à us-ig2

    gcloud compute instance-groups unmanaged add-instances us-ig2 \
         --instances=ig-us-east1-1,ig-us-east1-2 \
         --zone=us-east1-b
    

Vous disposez désormais d'un groupe d'instances dans chacune des deux régions, chacun d'entre eux contenant deux instances.

Créer une règle de pare-feu pour l'équilibreur de charge SSL

Configurez le pare-feu pour autoriser le trafic provenant de l'équilibreur de charge et du vérificateur d'état à accéder aux instances.

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. Dans le champ Nom, saisissez allow-ssl-lb-and-health.
  4. Sous Réseau, sélectionnez default.
  5. Sous Cibles, sélectionnez Tags cibles spécifiés.
  6. Définissez Tags cibles sur ssl-lb.
  7. Définissez Filtre source sur Plages IPv4.
  8. Définissez le paramètre Plages IPv4 sources sur 130.211.0.0/22,35.191.0.0/16.
  9. Sous Protocoles et ports, définissez le paramètre Protocoles et ports spécifiés sur tcp:443.
  10. Cliquez sur Create (Créer).

gcloud

gcloud compute firewall-rules create allow-ssl-lb-and-health \
   --source-ranges=130.211.0.0/22,35.191.0.0/16 \
   --target-tags=ssl-lb \
   --allow=tcp:443

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.

gcloud compute ssl-certificates list

Configurer l'équilibreur de charge

Console

  1. Accédez à la page "Équilibrage de charge" dans Google Cloud Console.

    Accéder à la page Équilibrage de charge

  2. Cliquez sur Créer un équilibreur de charge.

  3. Sous Équilibrage de charge TCP, cliquez sur Démarrer la configuration.

  4. Pour le paramètre Web ou interne uniquement, sélectionnez D'Internet vers mes VM.

  5. Pour le paramètre Plusieurs régions ou région unique, sélectionnez Plusieurs régions (ou Je ne sais pas encore).

Configurer le backend

  1. Cliquez sur Backend configuration (Configuration du backend).
  2. Définissez le paramètre Nom de l'équilibreur de charges sur my-ssl-lb.
  3. Définissez le paramètre Protocole sur SSL.
  4. Pour le Port nommé, saisissez ssl-lb.
  5. Acceptez la valeur par défaut pour le champ Délai avant expiration.
  6. Laissez le paramètre Type de backend défini sur Groupes d'instances.
  7. Sous Nouveau backend, sélectionnez le groupe d'instances us-ig1.
  8. Définissez le paramètre Numéros de ports sur 443.
  9. Ne modifiez pas les autres paramètres.
  10. Sous Nouveau backend, sélectionnez le groupe d'instances us-ig2.
  11. Définissez le paramètre Numéros de ports sur 443.
  12. Ne modifiez pas les autres paramètres.
  13. Cliquez sur OK.
  14. Sous Vérification d'état, sélectionnez Créer une vérification d'état.
    1. Définissez le paramètre Nom de la vérification d'état sur my-ssl-health-check.
    2. Définissez le paramètre Protocole sur SSL.
    3. Ne modifiez pas les autres paramètres.
    4. Cliquez sur Save and continue (Enregistrer et continuer).
  15. Facultatif : configurez une stratégie de sécurité backend par défaut. La stratégie de sécurité par défaut limite le trafic au-delà d'un seuil configuré par l'utilisateur. Pour en savoir plus sur les stratégies de sécurité par défaut, consultez la page Présentation de la limitation du débit.

    1. Pour désactiver la stratégie de sécurité par défaut de Google Cloud Armor, sélectionnez None dans le menu de la liste des stratégies de sécurité backend.
    2. Dans la section Sécurité, sélectionnez Stratégie de sécurité par défaut.
    3. Dans le champ Nom de la règle, acceptez le nom généré automatiquement ou saisissez un nom pour votre stratégie de sécurité.
    4. Dans le champ Nombre de requêtes, acceptez le nombre de requêtes par défaut ou saisissez un nombre entier compris entre 1 et 10,000.
    5. Dans le champ Intervalle, sélectionnez un intervalle.
    6. Dans le champ Appliquer à la clé, choisissez l'une des valeurs suivantes : Tous, Adresse IP ou Adresse IP X-Forwarded-For. Pour en savoir plus sur ces options, consultez la section Identifier les clients pour la limitation du débit.
  16. Vérifiez qu'une coche verte est affichée à côté de Configuration des backends dans Google Cloud Console. Si ce n'est pas le cas, vérifiez que vous avez bien suivi la procédure ci-dessus dans son intégralité.

Configuration du frontend

  1. Cliquez sur Frontend configuration (Configuration du frontend).
  2. Sous Nouveaux IP et port frontend, saisissez le nom my-ssl-lb-forwarding-rule.
  3. Définissez le paramètre Protocole sur SSL.
  4. Sous Adresse IP, sélectionnez Créer une adresse IP.
    1. Saisissez le nom ssl-lb-static-ipv4.
    2. Cliquez sur Réserver.
  5. Sous Certificat, sélectionnez Créer un certificat.
    1. Saisissez le nom my-ssl-cert.
    2. Si vous choisissez Importer mon certificat, procédez comme suit :
      1. Collez votre certificat ou cliquez sur Importer pour accéder au fichier de votre certificat.
      2. Collez votre clé privée ou cliquez sur Importer pour accéder au fichier de votre clé privée.
    3. Si vous avez choisi de Créer un certificat géré par Google, saisissez un Domaine.
      1. Pour saisir des domaines supplémentaires, cliquez sur Ajouter un domaine.
      2. Cliquez sur Create (Créer).
    4. Pour ajouter des ressources de certificat en plus de la ressource de certificat SSL principale, cliquez sur Certificats supplémentaires. Sélectionnez ensuite un autre certificat dans le menu Certificats ou cliquez sur Créer un certificat, puis suivez les instructions ci-dessus.
  6. (Facultatif) Pour créer une règle SSL :
    1. Sous Règle SSL, sélectionnez Créer une règle.
    2. Saisissez le nom my-ssl-policy.
    3. Sous Version minimale de TLS, sélectionnez TLS 1.0.
    4. Dans le champ Profil, sélectionnez Moderne. Les Fonctionnalités activées et les Fonctionnalités désactivées s'affichent.
    5. Cliquez sur Create (Créer).
  7. (Facultatif) Activez le protocole de proxy si vous le souhaitez.
  8. Cliquez sur OK.
  9. Cliquez sur Ajouter une adresse IP et un port frontend.
  10. Saisissez le nom my-ssl-lb-ipv6-forwarding-rule.
  11. Définissez Version IP sur IPv6.
  12. Sous Adresse IP, sélectionnez Créer une adresse IP.
    1. Saisissez le nom ssl-lb-static-ipv6.
    2. Cliquez sur Réserver.
  13. Sous Certificat, sélectionnez my-ssl-cert.
    1. Pour ajouter des ressources de certificat en plus de la ressource de certificat SSL principale, sélectionnez un certificat dans la liste Certificats ou cliquez sur Créer un certificat.
  14. (Facultatif) Utilisez une règle SSL ou activez le protocole PROXY si vous le souhaitez.
  15. Cliquez sur OK.
  16. Vérifiez qu'une coche verte est affichée à côté de Configuration du frontend dans Google Cloud Console. Si ce n'est pas le cas, vérifiez que vous avez bien suivi la procédure ci-dessus dans son intégralité.

Vérifier et finaliser

  1. Cliquez sur Vérification et finalisation.
  2. Vérifiez vos paramètres.
  3. Cliquez sur Create (Créer).

gcloud

  1. Créez une vérification d'état.

    gcloud compute health-checks create ssl my-ssl-health-check --port=443
    
  2. Créez un service de backend.

    gcloud compute backend-services create my-ssl-lb \
      --global-health-checks \
      --protocol=SSL \
      --port-name=ssl-lb \
      --health-checks=my-ssl-health-check \
      --timeout=5m \
      --global
    

    Vous pouvez également configurer une communication non chiffrée entre l'équilibreur de charge et les instances à l'aide de l'option --protocol=TCP.

  3. Ajoutez des groupes d'instances au service de backend.

    gcloud compute backend-services add-backend my-ssl-lb \
      --instance-group=us-ig1 \
      --instance-group-zone=us-central1-b \
      --balancing-mode=UTILIZATION \
      --max-utilization=0.8 \
      --global
    
    gcloud compute backend-services add-backend my-ssl-lb \
      --instance-group=us-ig2 \
      --instance-group-zone=us-east1-b \
      --balancing-mode=UTILIZATION \
      --max-utilization=0.8 \
      --global
    
  4. Configurez votre ressource de certificat SSL.

    Si vous utilisez des certificats autogérés, vous devez déjà disposer d'au moins un certificat SSL à importer. Si ce n'est pas le cas, reportez-vous à la page Certificats SSL. Lorsque vous utilisez plusieurs certificats SSL, vous devez les créer un par un.

    Si vous utilisez des certificats SSL autogérés et que vous ne disposez ni d'une clé privée ni d'un certificat signé, vous pouvez créer et utiliser un certificat autosigné à des fins de test.

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

    gcloud compute ssl-certificates create my-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_1],[DOMAIN_2]
    
  5. Configurez un proxy SSL cible.

    L'équilibrage de charge proxy SSL externe permet de créer un proxy SSL cible comportant de un à quinze certificats SSL. Avant d'exécuter cette commande, vous devez créer une ressource de certificat SSL pour chaque certificat.

    Si vous souhaitez activer l'en-tête de proxy, définissez ce paramètre sur PROXY_V1 au lieu de none. Vous pouvez éventuellement associer une règle SSL au proxy cible. Commencez par créer la règle.

    gcloud compute ssl-policies create my-ssl-policy \
      --profile=MODERN \
      --min-tls-version=1.0
    

    Ensuite, associez la règle au proxy cible :

    gcloud compute target-ssl-proxies create my-ssl-lb-target-proxy \
      --backend-service=my-ssl-lb \
      --ssl-certificates=[SSL_CERT_1][,[SSL_CERT_2],...] \
      --ssl-policy=my-ssl-policy \
      --proxy-header=NONE
    
  6. Réservez des adresses IP statiques globales.

    Vos clients utilisent ces adresses IP pour accéder à votre service avec équilibrage de charge.

    gcloud compute addresses create ssl-lb-static-ipv4 \
          --ip-version=IPV4 \
          --global
    
    gcloud compute addresses create ssl-lb-static-ipv6 \
          --ip-version=IPV6 \
          --global
    
  7. Configurez des règles de transfert globales.

    Créez des règles de transfert globales associées au proxy cible. Remplacez LB_STATIC_IP et LB_STATIC_IPV6 par les adresses IP que vous avez générées lorsque vous avez réservé les adresses IP statiques globales.

    gcloud compute forwarding-rules create my-ssl-lb-forwarding-rule \
      --global \
      --target-ssl-proxy=my-ssl-lb-target-proxy \
      --address=LB_STATIC_IP \
      --ports=443
    
    gcloud compute forwarding-rules create my-ssl-lb-ipv6-forwarding-rule \
      --global \
      --target-ssl-proxy=my-ssl-lb-target-proxy \
      --address=LB_STATIC_IPV6 \
      --ports=443
    

Connecter un domaine à votre équilibreur de charge

Une fois l'équilibreur de charge créé, notez l'adresse IP associée à celui-ci (par exemple, 30.90.80.100). Pour faire pointer votre domaine vers votre équilibreur de charge, créez un enregistrement A à l'aide de votre service d'enregistrement de domaine. Si vous avez ajouté plusieurs domaines à votre certificat SSL, vous devez ajouter un enregistrement A à chacun d'eux, tous pointant vers l'adresse IP de l'équilibreur de charge. Par exemple, pour créer des enregistrements A pour www.example.com et example.com, procédez comme suit :

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Si vous utilisez Google Domains, consultez la page d'aide Google Domains pour obtenir plus d'informations.

Tester l'équilibreur de charge

Dans votre navigateur Web, connectez-vous à votre adresse IP statique via HTTPS. Dans cette configuration de test, les instances utilisent des certificats autosignés. C'est pourquoi vous voyez un avertissement dans votre navigateur la première fois que vous accédez à cette page. Cliquez sur l'avertissement pour afficher la page. Remplacez [IP_ADDRESS] par l'adresse IPv4 ou IPv6 que vous avez créée précédemment.

https://[IP_ADDRESS]

Vous devriez voir l'un des hôtes de la région la plus proche de vous. Actualisez la page jusqu'à ce que l'autre instance présente dans cette région apparaisse. Pour afficher les instances de l'autre région, arrêtez celles de la région la plus proche de vous.

Vous pouvez également utiliser curl depuis l'interface de ligne de commande de votre machine locale. Si vous utilisez un certificat autosigné sur le proxy SSL, vous devez également spécifier l'option -k. L'option curl -k permet à curl de fonctionner même lorsque vous utilisez un certificat autosigné ou lorsque vous n'utilisez pas de certificat du tout. Si vous disposez d'un certificat normal, vous pouvez supprimer ce paramètre. Vous ne devez utiliser l'option -k que pour tester votre propre site. Dans des circonstances normales, un certificat valide est une mesure de sécurité importante. Souvenez-vous que vous ne devez pas ignorer les avertissements relatifs aux certificats.

Remplacez [IP_ADDRESS] par l'adresse IPv4 ou IPv6 que vous avez créée précédemment.

curl -k https://[IP_ADDRESS]

Si vous ne parvenez pas à atteindre l'équilibreur de charge, suivez la procédure décrite dans la section Résoudre les problèmes de configuration.

Options de configuration supplémentaires

Cette section développe l'exemple de configuration et propose d'autres options de configuration. Toutes les tâches décrites ici sont facultatives. Vous pouvez les exécuter dans n'importe quel ordre.

Activer le protocole de PROXY pour la conservation des informations de connexion client

Google Cloud Load Balancing avec proxy SSL met fin aux connexions SSL du client et crée de nouvelles connexions vers les instances. Par conséquent, l'adresse IP et les informations de port d'origine du client ne sont pas conservées par défaut.

Pour conserver et envoyer les informations de connexion d'origine à vos instances, activez le protocole de PROXY (version 1) sur le frontend de l'équilibreur de charge. Dans le cadre de la requête, ce protocole envoie à l'instance un en-tête supplémentaire contenant les éléments d'origine : l'adresse IP source, l'adresse IP de destination, ainsi que les numéros de ports.

Vous pouvez également activer le protocole de PROXY pour les vérifications d'état TCP et SSL.

Assurez-vous que les instances backend de l'équilibreur de charge proxy SSL externe exécutent des serveurs HTTP(S) compatibles avec les en-têtes de protocole de PROXY. Si les serveurs HTTP(S) ne sont pas configurés pour accepter les en-têtes de protocole de PROXY, les instances backend renvoient des réponses vides. Par exemple, le protocole de PROXY ne fonctionne pas avec le logiciel Apache HTTP Server. Vous pouvez utiliser un autre logiciel serveur Web, tel que Nginx.

Si vous définissez le protocole de PROXY pour le trafic utilisateur, vous devez également le définir pour vos vérifications d'état. Si vous effectuez la vérification d'état et la diffusion de contenu sur le même port, définissez l'en-tête --proxy-header de la vérification d'état pour qu'il corresponde aux paramètres de votre équilibreur de charge.

L'en-tête de protocole de PROXY est généralement constitué d'une seule ligne de texte parfaitement lisible, au format suivant :

PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n

Dans cet exemple, l'adresse IP du client est 192.0.2.1, l'adresse IP du service d'équilibrage de charge est 198.51.100.1, le port client est 15221 et le port de destination est 443 :

PROXY TCP4 192.0.2.1 198.51.100.1 15221 443\r\n

Lorsque l'adresse IP du client n'est pas connue, l'équilibreur de charge génère un en-tête de protocole de PROXY au format suivant :

PROXY UNKNOWN\r\n

Mettre à jour l'en-tête du protocole de PROXY pour un proxy cible existant

L'exemple de configuration d'équilibreur de charge de cette page vous montre comment activer l'en-tête du protocole de PROXY lors de la création de l'équilibreur de charge proxy SSL externe. Pour modifier l'en-tête du protocole de PROXY pour un proxy SSL cible existant, suivez les instructions suivantes.

Console

  1. Accédez à la page Équilibrage de charge dans Google Cloud Console.

    Accéder à la page Équilibrage de charge

  2. Cliquez sur Modifier () à côté du nom de votre équilibreur de charge.

  3. Cliquez sur Configuration du frontend.

  4. Modifiez la valeur du champ Protocole de proxy.

  5. Cliquez sur Mettre à jour pour enregistrer vos modifications.

gcloud

gcloud compute target-ssl-proxies update my-ssl-lb-target-proxy \
    --proxy-header=[NONE | PROXY_V1]

Configurer l'affinité de session

Les procédures qui suivent montrent comment mettre à jour un service de backend pour l'exemple d'équilibreur de charge proxy SSL afin que le service de backend utilise l'affinité basée sur les adresses IP client.

Lorsque l'affinité basée sur les adresses IP client est activée, l'équilibreur de charge dirige les requêtes d'un client particulier toujours vers la même VM de backend, grâce à un hachage créé à partir de l'adresse IP du client et de l'adresse IP de l'équilibreur de charge (l'adresse IP externe d'une règle de transfert externe).

Console

Pour activer l'affinité de session basée sur les adresses IP client, procédez comme suit :

  1. Accédez à la page "Équilibrage de charge" dans Google Cloud Console.

    Accéder à la page Équilibrage de charge

  2. Cliquez sur Backends.

  3. Cliquez sur my-ssl-lb (nom du service de backend que vous avez créé pour cet exemple), puis sur Modifier.

  4. Sur la page Détails du service backend, cliquez sur Configuration avancée.

  5. Sous Affinité de session, sélectionnez IP client dans le menu.

  6. Cliquez sur Mettre à jour.

gcloud

Utilisez la commande gcloud suivante pour mettre à jour le service de backend my-ssl-lb, en spécifiant l'affinité de session basée sur les adresses IP client :

gcloud compute backend-services update my-ssl-lb \
    --global \
    --session-affinity=CLIENT_IP

API

Pour définir l'affinité de session basée sur les adresses IP client, envoyez une requête PATCH à la méthode backendServices/patch.

PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-ssl-lb
{
  "sessionAffinity": "CLIENT_IP"
}

Activer le drainage de connexion

Vous pouvez activer le drainage de connexion sur les services de backend afin de garantir à vos utilisateurs un temps d'interruption minimal lorsqu'une instance assurant la diffusion du trafic est arrêtée, supprimée manuellement ou supprimée par un autoscaler. Pour en savoir plus sur le drainage de connexion, consultez la documentation Activer le drainage de connexion.

Résoudre les problèmes de configuration

Si les pages ne parviennent pas à se charger lors de la tentative d'accès à l'adresse IP de votre équilibreur de charge, procédez comme suit pour résoudre les problèmes de configuration.

Vérifier l'état des instances

Vérifiez que les instances sont OPÉRATIONNELLES.

  gcloud compute backend-services get-health my-ssl-lb
  

Vérifier que la règle de pare-feu autorise le trafic

  • Le vérificateur d'état et l'équilibreur de charge ont tous deux besoin de ces adresses IP pour autoriser le trafic : 130.211.0.0/22 et 35.191.0.0/16.
  • Si vous utilisez SSL entre l'équilibreur de charge et les instances, utilisez les vérifications d'état SSL. Vérifiez que la règle de pare-feu autorise l'accès au port tcp:443 à partir des plages d'adresses IP sources 130.211.0.0/22 et 35.191.0.0/16.
  • Si vous utilisez TCP entre l'équilibreur de charge et les instances, utilisez les vérifications d'état TCP. Vérifiez que la règle de pare-feu autorise l'accès au port tcp:80 à partir des plages d'adresses IP sources 130.211.0.0/22 et 35.191.0.0/16.
  • Si vous utilisez les tags d'instances, vérifiez que votre tag est répertorié sous TARGET_TAGS dans la règle de pare-feu et assurez-vous que toutes vos instances sont identifiées à l'aide de ce tag. Dans cet exemple, les instances sont associées au tag ssl-lb.
gcloud compute firewall-rules list
NAME                      NETWORK SRC_RANGES                  RULES                        SRC_TAGS TARGET_TAGS
allow-ssl-lb-and-health  default 130.211.0.0/22,35.191.0.0/16 tcp:443                      ssl-lb

Essayer d'accéder aux instances individuelles

Définissez une règle de pare-feu temporaire permettant d'accéder individuellement à vos instances, puis essayez de charger une page à partir d'une instance spécifique.

  1. Ouvrez le pare-feu afin d'autoriser le trafic provenant de n'importe quelle source vers les instances identifiées à l'aide de tags : Pour cela, créez un filtre source qui définit la plage d'adresses IP sources sur 0.0.0.0/0 pour le trafic HTTPS vers les instances avec le tag ssl-lb.

    gcloud compute firewall-rules create allow-ssl-0-0-0-0 \
        --source-ranges=0.0.0.0/0 \
        --target-tags=ssl-lb \
        --allow=tcp:443
    
  2. Recherchez l'adresse IP externe (EXTERNAL_IP) de l'une des instances.

    gcloud compute instances list
    
    NAME             ZONE           MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP    STATUS
    ig-us-central1-1 us-central1-b  n1-standard-1             10.240.0.8  EXTERNAL_IP RUNNING
    ig-us-central1-2 us-central1-b  n1-standard-1             10.240.0.11 EXTERNAL_IP RUNNING
    ig-us-east1-1    us-east1-b     n1-standard-1             10.240.0.12 EXTERNAL_IP RUNNING
    ig-us-east1-2    us-east1-b     n1-standard-1             10.240.0.13 EXTERNAL_IP RUNNING
  3. Accédez à une ou plusieurs instances directement depuis votre navigateur.

    https://<var>EXTERNAL_IP</var>
    
  4. S'il vous est impossible d'accéder aux instances à l'aide de cette méthode, vérifiez que votre logiciel fonctionne correctement. Si c'est le cas, vérifiez que la règle de pare-feu de votre équilibreur de charge est correcte :

    gcloud compute firewall-rules describe allow-ssl-lb-and-health
    
    allowed:
      IPProtocol: tcp
      ports:
      '443'
    creationTimestamp: '2016-02-20T22:27:15.094-08:00'
    description: ''
    id: '5304629236729177644'
    kind: compute#firewall
    name: allow-130-211-0-0-22-ssl
    network: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default
    selfLink: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/allow-ssl-lb-and-health
    sourceRanges:
      130.211.0.0/22,35.191.0.0/16
    targetTags:
      ssl-lb
  5. Une fois que vous avez la certitude que les instances fonctionnent correctement, retirez la règle de pare-feu "depuis n'importe quelle source" :

    gcloud compute firewall-rules delete allow-ssl-0-0-0-0
    

Étape suivante