Configurer un équilibreur de charge réseau proxy externe global (proxy TCP) avec des backends de groupe d'instances de VM

Les équilibreurs de charge réseau externes globaux Google Cloud vous permettent d'utiliser une adresse IP unique pour vos utilisateurs du monde entier. Les équilibreurs de charge réseau proxy externes globaux acheminent automatiquement le trafic vers les instances backend les plus proches de l'utilisateur.

Cette page contient des instructions pour configurer un équilibreur de charge réseau proxy externe global avec un proxy TCP cible et des backends de groupe d'instances de VM. Avant de commencer, consultez la page Présentation de l'équilibreur de charge réseau proxy externe pour en savoir plus sur le fonctionnement de ces équilibreurs de charge.

Vue d'ensemble de la configuration

Cet exemple montre comment configurer un équilibreur de charge réseau proxy externe pour un service existant dans deux régions : la région A et la région B. Pour les besoins de cet exemple, le service est un ensemble de serveurs Apache configurés pour répondre sur le port 110. De nombreux navigateurs n'autorisent pas le port 110. La section consacrée aux tests utilise donc curl.

Dans cet exemple, vous configurez les éléments suivants :

  1. Quatre instances réparties entre deux régions
  2. Des groupes d'instances contenant les instances
  3. Une vérification d'état pour examiner l'état de l'instance
  4. Un service de backend qui surveille les instances et les empêche de dépasser le taux d'utilisation configuré
  5. Un proxy TCP cible
  6. Une adresse IPv4 externe statique et une règle de transfert permettant d'envoyer le trafic utilisateur au proxy
  7. Une adresse IPv6 externe statique et une règle de transfert permettant d'envoyer le trafic utilisateur au proxy
  8. 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

Une fois l'équilibreur de charge configuré, vous pouvez tester la 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 le réseau et les sous-réseaux

Pour créer les exemples de réseau et de sous-réseaux, procédez comme suit :

Console

Pour assurer la compatibilité avec le trafic IPv4 et IPv6, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Réseaux VPC.

    Accéder aux réseaux VPC

  2. Cliquez sur Créer un réseau VPC.

  3. Saisissez un Nom pour le réseau.

  4. Facultatif : Si vous souhaitez configurer des plages d'adresses IPv6 internes sur les sous-réseaux de ce réseau, procédez comme suit :

    1. Dans le champ Plage IPv6 interne ULA du réseau VPC, sélectionnez Activée.
    2. Dans le champ Allouer une plage IPv6 interne, sélectionnez Automatiquement ou Manuellement.

      Si vous sélectionnez Manuellement, saisissez une plage /48 comprise dans la plage fd20::/20. Si la plage est utilisée, vous êtes invité à en fournir une autre.

  5. Dans le champ Mode de création du sous-réseau, sélectionnez Personnalisé.

  6. Dans la section Nouveau sous-réseau, configurez les champs suivants :

    1. Dans le champ Nom, indiquez un nom pour le sous-réseau.
    2. Dans le champ Région, sélectionnez une région.
    3. Dans le champ Type de pile d'adresses IP, sélectionnez IPv4 et IPv6 (double pile).
    4. Dans le champ Plage d'adresses IP, saisissez une plage d'adresses IP. Il s'agit de la plage d'adresses IPv4 principale du sous-réseau.

      Bien que vous puissiez configurer une plage d'adresses IPv4 pour le sous-réseau, vous ne pouvez pas choisir la plage d'adresses IPv6 pour le sous-réseau. Google fournit un bloc CIDR IPv6 de taille fixe (/64).

    5. Dans le champ Type d'accès IPv6, sélectionnez Externe.

  7. Cliquez sur OK.

  8. Pour ajouter un sous-réseau dans une autre région, cliquez sur Ajouter un sous-réseau, puis répétez les étapes précédentes.

  9. Cliquez sur Créer.

Pour assurer la compatibilité avec le trafic IPv4 uniquement, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Réseaux VPC.

    Accéder aux réseaux VPC

  2. Cliquez sur Créer un réseau VPC.

  3. Dans le champ Nom, saisissez un nom pour le réseau.

  4. Dans le champ Mode de création du sous-réseau, sélectionnez Personnalisé.

  5. Dans la section Nouveau sous-réseau, configurez les champs suivants :

    1. Dans le champ Nom, indiquez un nom pour le sous-réseau.
    2. Dans le champ Région, sélectionnez une région.
    3. Pour Type de pile IP, sélectionnez IPv4 (pile simple).
    4. Dans le champ Plage d'adresses IP, saisissez la plage d'adresses IPv4 principale du sous-réseau.
  6. Cliquez sur OK.

  7. Pour ajouter un sous-réseau dans une autre région, cliquez sur Ajouter un sous-réseau, puis répétez les étapes précédentes.

  8. Cliquez sur Créer.

gcloud

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

    gcloud compute networks update NETWORK \
        [ --enable-ula-internal-ipv6 [ --internal-ipv6-range=ULA_IPV6_RANGE ]] \
        --switch-to-custom-subnet-mode
    
  2. Dans le réseau, créez un sous-réseau pour les backends.

    Pour le trafic IPv4 et IPv6, utilisez la commande suivante pour mettre à jour un sous-réseau :

    gcloud compute networks subnets update SUBNET \
       --stack-type=IPV4_IPv6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_A
    
    gcloud compute networks subnets update SUBNET_B \
       --stack-type=IPV4_IPv6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_B
    

    Pour le trafic IPv4 uniquement, utilisez la commande suivante:

    gcloud compute networks subnets update SUBNET \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=10.1.2.0/24 \
       --region=REGION_A
    
    gcloud compute networks subnets update SUBNET_B \
       --stack-type=IPV4_ONLY \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_B
    

Remplacez les éléments suivants :

  • NETWORK : nom du réseau VPC.

  • ULA_IPV6_RANGE : préfixe /48 de la plage fd20::/20 utilisée par Google pour les plages de sous-réseaux IPv6 internes. Si vous n'utilisez pas l'option --internal-ipv6-range, Google sélectionne un préfixe /48 pour le réseau.

  • SUBNET : nom du sous-réseau

  • REGION_A ou REGION_B : nom de la région

Configurer des backends du groupe d'instances

Cette section explique comment créer des groupes d'instances simples et y ajouter des instances, puis ajouter ces instances au service de backend avec une vérification d'état. 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 est plus rapide pour la phase de test initiale.

Configurer les instances

À des fins de test, installez Apache sur quatre instances réparties équitablement entre deux groupes d'instances. En règle générale, les équilibreurs de charge réseau proxy externes ne sont pas utilisés pour le trafic HTTP. Néanmoins, le logiciel Apache est couramment utilisé pour les tests.

Dans cet exemple, vous créez des instances avec le tag tcp-lb. Ce tag sera utilisé ultérieurement par la règle de pare-feu.

Console

Créer des instances

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Cliquez sur Créer une instance.

  3. Pour Nom, définissez vm-a1.

  4. Définissez le paramètre Région sur REGION_A.

  5. Définissez le paramètre Zone sur ZONE_A.

  6. Cliquez sur Options avancées.

  7. Cliquez sur Mise en réseau et configurez les champs suivants :

    • Pour Tags réseau, saisissez tcp-lb, allow-health-check-ipv6.

    Pour assurer la compatibilité avec le trafic IPv4 et IPv6, procédez comme suit:

    1. Dans la section Interfaces réseau, cliquez sur Modifier et apportez les modifications suivantes :
      • Réseau : NETWORK
      • Sous-réseau : SUBNET
      • Type de pile d'adresses IP: IPv4 et IPv6 (double pile)
    2. Cliquez sur Terminé.
  8. Cliquez sur Gestion. Saisissez le script suivant dans le champ Script de démarrage.

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
  9. Cliquez sur Créer.

  10. Créez une instance nommée vm-a2 en utilisant les mêmes paramètres, excepté pour le champ Script de démarrage, dans lequel vous allez insérer le script suivant :

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html

  11. Créez vm-b1 en utilisant les mêmes paramètres, excepté pour les champs Région et Zone, que vous définissez respectivement sur REGION_B et ZONE_B. Dans le champ Script de démarrage, saisissez le script suivant :

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html

  12. Créez vm-b2 en utilisant les mêmes paramètres, excepté pour les champs Région et Zone, que vous définissez respectivement sur REGION_B et ZONE_B. Dans le champ Script de démarrage, saisissez le script suivant :

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html

gcloud

  1. Créez vm-a1 dans la zone ZONE_A

    gcloud compute instances create vm-a1 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_A \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  2. Créez vm-a2 dans la zone ZONE_A

    gcloud compute instances create vm-a2 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_A \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  3. Créez vm-b1 dans la zone ZONE_B

    gcloud compute instances create vm-b1 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_B \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  4. Créez vm-b2 dans la zone ZONE_B

    gcloud compute instances create vm-b2 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_B \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    

Créer des groupes d'instances

Dans cette section, vous allez créer un groupe d'instances dans chaque zone et ajouter les instances.

Console

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

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

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

  3. Cliquez sur Nouveau groupe d'instances non géré.

  4. Définissez le paramètre Nom sur instance-group-a.

  5. Définissez le paramètre Zone sur ZONE_A.

  6. 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. Définissez le paramètre Nom du port sur tcp110.
    2. Définissez le paramètre Numéros de ports sur 110.
  7. Dans la liste des instances de VM, sélectionnez vm-a1 et vm-a2.

  8. Ne modifiez pas les autres paramètres.

  9. Cliquez sur Créer.

  10. Répétez ces étapes, mais définissez les valeurs suivantes :

    • Nom : instance-group-b
    • Région : REGION_B
    • Zone : ZONE_B
    • Nom du port : tcp110
    • Numéros de ports : 110
    • Instances : vm-b1 et vm-b2.

gcloud

  1. Créez le groupe d'instances instance-group-a.

    gcloud compute instance-groups unmanaged create instance-group-a \
       --zone ZONE_A
    
  2. Définissez un port désigné pour le groupe d'instances.

    gcloud compute instance-groups set-named-ports instance-group-a \
       --named-ports tcp110:110 \
       --zone ZONE_A
    
  3. Ajoutez vm-a1 et vm-a2 à instance-group-a

    gcloud compute instance-groups unmanaged add-instances instance-group-a \
       --instances vm-a1,vm-a2 \
       --zone ZONE_A
    
  4. Créez le groupe d'instances us-ig2.

    gcloud compute instance-groups unmanaged create instance-group-b \
       --zone ZONE_B
    
  5. Définissez un port désigné pour le groupe d'instances.

    gcloud compute instance-groups set-named-ports instance-group-b \
       --named-ports tcp110:110 \
       --zone ZONE_B
    
  6. Ajoutez vm-b1 et vm-b2 à instance-group-b.

    gcloud compute instance-groups unmanaged add-instances instance-group-b \
       --instances vm-b1,vm-b2 \
       --zone ZONE_B
    

Vous disposez désormais d'un groupe d'instances dans chaque région. Chaque groupe d'instances possède deux instances de VM.

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

Configurez le pare-feu pour autoriser le trafic provenant de l'équilibreur de charge et du vérificateur d'état à accéder aux instances. Dans ce cas, nous ouvrons le port TCP 110. La vérification d'état utilise le même port. Comme le trafic entre l'équilibreur de charge et vos instances utilise le protocole IPv4, seules les plages IPv4 doivent être ouvertes.

Console

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page "Stratégies de pare-feu"

  2. Cliquez sur Créer une règle de pare-feu.

  3. Dans le champ Nom, saisissez allow-tcp-lb-and-health.

  4. Sélectionnez un réseau.

  5. Sous Cibles, sélectionnez Tags cibles spécifiés.

  6. Définissez Tags cibles sur tcp-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:110.

  10. Cliquez sur Créer.

gcloud

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

Créer une règle de pare-feu de vérification d'état IPv6

Assurez-vous de disposer d'une règle d'entrée applicable aux instances faisant l'objet d'un équilibrage de charge et qui autorise le trafic issu des systèmes de vérification d'état Google Cloud (2600:2d00:1:b029::/64). Cet exemple utilise le tag cible allow-health-check-ipv6 pour identifier les instances de VM auxquelles la règle s'applique.

Sans cette règle de pare-feu, la règle d'entrée interdite par défaut bloque les entrées au trafic vers les instances backend.

Console

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page "Stratégies de pare-feu"

  2. Pour autoriser le trafic de sous-réseau IPv6, cliquez à nouveau sur Créer une règle de pare-feu, puis saisissez les informations suivantes :

    • Nom : fw-allow-lb-access-ipv6
    • Sélectionnez le réseau.
    • Priorité : 1000
    • Sens du trafic : entrée
    • Cibles : Tags cibles spécifiés
    • Tags cibles : allow-health-check-ipv6
    • Filtre source : Plages IPv6
    • Plages IPv4 sources : 2600:2d00:1:b029::/64,2600:2d00:1:1::/64
    • Protocoles et ports : tout autoriser
  3. Cliquez sur Créer.

gcloud

Créez la règle de pare-feu fw-allow-lb-access-ipv6 pour autoriser la communication depuis le sous-réseau :

gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
  --network=NETWORK \
  --action=allow \
  --direction=ingress \
  --target-tags=allow-health-check-ipv6 \
  --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \
  --rules=all

Configurer l'équilibreur de charge

Console

Démarrer la configuration

  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. Sous Type d'équilibreur de charge, sélectionnez Équilibreur de charge réseau (TCP/UDP/SSL), puis cliquez sur Suivant.
  4. Pour Proxy ou passthrough, sélectionnez Équilibreur de charge proxy, puis cliquez sur Suivant.
  5. Pour Public ou interne, sélectionnez Public (externe), puis cliquez sur Suivant.
  6. Pour Déploiement global ou dans une seule région, sélectionnez Recommandé pour les charges de travail globales, puis cliquez sur Suivant.
  7. Pour Génération d'équilibreur de charge, sélectionnez Équilibreur de charge réseau proxy externe global, puis cliquez sur Suivant.
  8. Cliquez sur Configurer.

Configuration de base

Définissez le paramètre Nom sur my-tcp-lb.

Configurer le backend

  1. Cliquez sur Configuration du backend.
  2. Sous Type de backend, sélectionnez Groupes d'instances.
  3. Sous Protocole, sélectionnez TCP.
  4. Dans la liste Règle de sélection des adresses IP, sélectionnez Préférer IPv6.
  5. Configurez le premier backend :
    1. Sous Nouveau backend, sélectionnez le groupe d'instances instance-group-a.
    2. Conservez les valeurs par défaut restantes.
  6. Configurez le deuxième backend :

      Pour prendre en charge le trafic IPv4 et IPv6 :

      • Pour le type de pile d'adresses IP, sélectionnez IPv4 and IPv6 (dual-stack).
    1. Cliquez sur Ajouter un backend.
    2. Sélectionnez le groupe d'instances instance-group-b.
    3. Sous Numéros de port, supprimez 80 et ajoutez 110.
  7. Configurez la vérification de l'état :
    1. Sous Vérification d'état, sélectionnez Créer une vérification d'état.
    2. Définissez le paramètre Nom de la vérification d'état sur my-tcp-health-check.
    3. Sous Protocole, sélectionnez TCP.
    4. Définissez le paramètre Port sur 110.
    5. Conservez les valeurs par défaut restantes.
    6. Cliquez sur Save and continue (Enregistrer et continuer).
  8. Dans la console Google Cloud, vérifiez qu'une coche apparaît à côté de Configuration du backend. Si ce n'est pas le cas, vérifiez que vous avez bien suivi la procédure ci-dessous dans son intégralité.

Configuration du frontend

  1. Cliquez sur Configuration de l'interface.
  2. Ajoutez la première règle de transfert :
    1. Saisissez le nom my-tcp-lb-forwarding-rule.
    2. Sous Protocole, sélectionnez TCP.
    3. Sous Adresse IP, sélectionnez Créer une adresse IP :
      1. Saisissez le nom tcp-lb-static-ip.
      2. Cliquez sur Réserver.
    4. Définissez le paramètre Port sur 110.
    5. Dans cet exemple, n'activez pas le protocole PROXY, car il ne fonctionne pas avec le logiciel Apache HTTP Server. Pour en savoir plus, consultez la section Protocole de proxy.
    6. Cliquez sur OK.
  3. Dans la console Google Cloud, vérifiez qu'une coche apparaît à côté de Configuration du frontend. Dans le cas contraire, vérifiez que vous avez bien suivi la procédure ci-dessus dans son intégralité.

Vérifier et finaliser

  1. Cliquez sur Vérifier et finaliser.
  2. Vérifiez les paramètres de configuration de votre équilibreur de charge.
  3. Facultatif : cliquez sur Code équivalent pour afficher la requête API REST qui sera utilisée pour créer l'équilibreur de charge.
  4. Cliquez sur Créer.

gcloud

  1. Créez une vérification d'état.
        gcloud compute health-checks create tcp my-tcp-health-check --port 110
        
  2. Créez un service de backend.
        gcloud beta compute backend-services create my-tcp-lb \
            --load-balancing-scheme EXTERNAL_MANAGED \
            --global-health-checks \
            --global \
            --protocol TCP \
            --ip-address-selection-policy=PREFER_IPV6 \
            --health-checks my-tcp-health-check \
            --timeout 5m \
            --port-name tcp110
        

    Vous pouvez également configurer une communication chiffrée entre l'équilibreur de charge et les instances à l'aide de l'indicateur --protocol SSL.

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

        gcloud beta compute backend-services add-backend my-tcp-lb \
            --global \
            --instance-group instance-group-a \
            --instance-group-zone ZONE_A \
            --balancing-mode UTILIZATION \
            --max-utilization 0.8
        
        gcloud beta compute backend-services add-backend my-tcp-lb \
            --global \
            --instance-group instance-group-b \
            --instance-group-zone ZONE_B \
            --balancing-mode UTILIZATION \
            --max-utilization 0.8
        
  4. Configurez un proxy TCP cible. Si vous souhaitez activer l'en-tête de proxy, définissez ce paramètre sur PROXY_V1 au lieu de NONE.
        gcloud beta compute target-tcp-proxies create my-tcp-lb-target-proxy \
            --backend-service my-tcp-lb \
            --proxy-header NONE
        
  5. Réservez des adresses IPv4 et IPv6 statiques globales.

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

        gcloud compute addresses create tcp-lb-static-ipv4 \
            --ip-version=IPV4 \
            --global
        
        gcloud compute addresses create tcp-lb-static-ipv6 \
            --ip-version=IPV6 \
            --global
        
  6. Configurez des règles de transfert globales pour les deux adresses.
        gcloud beta compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \
            --load-balancing-scheme EXTERNAL_MANAGED \
            --global \
            --target-tcp-proxy my-tcp-lb-target-proxy \
            --address tcp-lb-static-ipv4 \
            --ports 110
        

Tester l'équilibreur de charge

  1. Obtenez l'adresse IP de l'équilibreur de charge.

    Pour obtenir l'adresse IPv4, exécutez la commande suivante :

    gcloud compute addresses describe tcp-lb-static-ipv4
    

    Pour obtenir l'adresse IPv6, exécutez la commande suivante :

    gcloud compute addresses describe tcp-lb-static-ipv6
    
  2. Envoyez du trafic à votre équilibreur de charge en exécutant la commande suivante. Remplacez LB_IP_ADDRESS par l'adresse IPv4 ou IPv6 de votre équilibreur de charge.

    curl -m1 LB_IP_ADDRESS:110
    

    Par exemple, si l'adresse IPv6 attribuée est [2001:db8:1:1:1:1:1:1/96]:110, la commande doit se présenter comme suit :

    curl -m1 http://[2001:db8:1:1:1:1:1:1]:110
    

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.

Protocole de PROXY pour la conservation des informations de connexion client

L'équilibreur de charge réseau proxy met fin aux connexions TCP du client et crée des connexions aux instances. Par défaut, l'adresse IP et les informations de port d'origine du client ne sont pas conservées.

Pour conserver et envoyer les informations de connexion d'origine à vos instances, activez le protocole de PROXY (version 1). 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.

Assurez-vous que les instances backend de l'équilibreur de charge réseau proxy exécutent des serveurs compatibles avec les en-têtes de protocole de PROXY. Si les serveurs ne sont pas configurés pour accepter les en-têtes de protocole de PROXY, les instances backend renvoient des réponses vides.

Si vous définissez le protocole de PROXY pour le trafic utilisateur, vous pouvez également le définir pour vos vérifications de l'é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

L'exemple suivant illustre un protocole de PROXY :

PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n

Dans l'exemple précédent, l'adresse IP du client est 192.0.2.1, l'adresse IP d'équilibrage de charge est 198.51.100.1, le port client est 15221 et le port de destination est 110.

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 le proxy cible

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 réseau proxy. Pour modifier l'en-tête du protocole de PROXY pour un proxy cible existant, suivez les instructions suivantes.

Console

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

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

  2. Cliquez sur Modifier à côté du nom de votre équilibreur de charge.
  3. Cliquez sur Configuration de l'interface.
  4. Définissez la valeur du champ Protocole de proxy sur On (Activé).
  5. Cliquez sur Mettre à jour pour enregistrer vos modifications.

gcloud

Dans la commande suivante, modifiez le champ --proxy-header et définissez-le sur NONE ou PROXY_V1 en fonction de vos besoins.

gcloud compute target-tcp-proxies update TARGET_PROXY_NAME \
    --proxy-header=[NONE | PROXY_V1]

Configurer l'affinité de session

L'exemple de configuration crée un service de backend sans affinité de session.

Ces procédures vous montrent comment mettre à jour un service de backend pour l'exemple d'équilibreur de charge afin que ce service utilise l'affinité basée sur les adresses IP client ou l'affinité basée sur les cookies générés.

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. Dans la console Google Cloud, accédez à la page Équilibrage de charge.

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

  2. Cliquez sur Backends.

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

  4. Sur la page Détails du service de 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 Google Cloud CLI suivante pour mettre à jour le service de backend my-tcp-lb, en spécifiant l'affinité de session basée sur les adresses IP client :

gcloud compute backend-services update my-tcp-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-tcp-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.

Étape suivante