Configurer un équilibreur de charge réseau proxy interne régional avec des backends de groupe d'instances de VM

L'équilibreur de charge proxy interne régional est un équilibreur de charge régional de couche 4 basé sur un proxy qui vous permet d'exécuter et d'effectuer le scaling de votre trafic de service TCP derrière une adresse IP interne accessible uniquement aux clients situés dans le même réseau VPC ou aux clients connectés à votre réseau VPC

Ce guide contient des instructions pour configurer un équilibreur de charge réseau proxy interne régional avec un backend de groupe d'instances géré (MIG).

Avant de commencer, consultez la présentation de l'équilibreur de charge réseau proxy interne.

Présentation

Dans cet exemple, nous utilisons l'équilibreur de charge pour répartir le trafic TCP entre les VM de backend de deux groupes d'instances gérés zonaux dans la région REGION_A. 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 :

Exemple de configuration d'équilibreur de charge réseau proxy interne régional avec des backends de groupe d'instances.
Exemple de configuration d'un équilibreur de charge réseau proxy interne régional avec des backends de groupe d'instances

L'équilibreur de charge réseau proxy interne régional est un équilibreur de charge régional. Tous les composants de l'équilibreur de charge (groupes d'instances backend, service de backend, proxy cible et règle de transfert) doivent se trouver dans la même région.

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

Vous avez besoin d'un réseau VPC avec deux sous-réseaux : un pour les backends de l'équilibreur de charge et l'autre pour les proxys de l'équilibreur de charge. Les équilibreurs de charge réseau proxy internes régionaux sont régionaux. Le trafic au sein du réseau VPC est acheminé vers l'équilibreur de charge si la source du trafic se trouve dans un sous-réseau dans la même région que l'équilibreur de charge.

Cet exemple utilise le réseau VPC, la région et les sous-réseaux suivants :

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

  • Sous-réseau pour les backends : un sous-réseau nommé backend-subnet dans la région REGION_A utilise 10.1.2.0/24 pour sa plage d'adresses IP principale.

  • Sous-réseau pour les proxys : un sous-réseau nommé proxy-only-subnet dans la région REGION_A utilise 10.129.0.0/23 pour sa plage d'adresses IP principale.

Pour tester l'accès mondial, cet exemple crée également une deuxième VM cliente de test dans une région différente (REGION_B), ainsi qu'un sous-réseau avec la plage d'adresses IP principale10.3.4.0/24.

Créer le réseau et les sous-réseaux

Console

  1. Dans Google Cloud Console, 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 lb-network.

  4. Dans la section Sous-réseaux, définissez le Mode de création du sous-réseau sur Personnalisé.

  5. Créez un sous-réseau pour les backends de l'équilibreur de charge. Dans la section Nouveau sous-réseau, saisissez les informations suivantes :

    • Nom : backend-subnet
    • Région : REGION_A
    • Plage d'adresses IP : 10.1.2.0/24
  6. Cliquez sur OK.

  7. Cliquez sur Ajouter un sous-réseau.

  8. Créez un sous-réseau pour faire la démonstration de l'accès mondial. Dans la section Nouveau sous-réseau, saisissez les informations suivantes :

    • Nom : test-global-access-subnet
    • Région : REGION_B
    • Plage d'adresses IP : 10.3.4.0/24
  9. Cliquez sur OK.

  10. Cliquez sur Créer.

gcloud

  1. Créez le réseau VPC personnalisé à l'aide de la commande gcloud compute networks create :

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Créez un sous-réseau dans le réseau lb-network de la région REGION_A à l'aide de la commande gcloud compute networks subnets create :

    gcloud compute networks subnets create backend-subnet \
       --network=lb-network \
       --range=10.1.2.0/24 \
       --region=REGION_A
    

    Remplacez REGION_A par le nom de la région Google Cloud cible.

  3. Créez un sous-réseau dans le réseau lb-network de la région REGION_B à l'aide de la commande gcloud compute networks subnets create :

    gcloud compute networks subnets create test-global-access-subnet \
       --network=lb-network \
       --range=10.3.4.0/24 \
       --region=REGION_B
    

    Remplacez REGION_B par le nom de la région Google Cloud dans laquelle vous souhaitez créer le deuxième sous-réseau pour tester l'accès mondial.

Créer le sous-réseau proxy réservé

Un sous-réseau proxy réservé fournit un ensemble d'adresses IP utilisées par Google pour exécuter des proxys Envoy en votre nom. Les proxys interrompent les connexions du client et créent de nouvelles connexions vers les backends.

Ce sous-réseau proxy réservé est utilisé par tous les équilibreurs de charge basés sur Envoy dans la région REGION_A du réseau VPC lb-network.

Console

Si vous utilisez la console Google Cloud, vous pouvez créer le sous-réseau proxy réservé ultérieurement sur la page Équilibrage de charge.

Si vous souhaitez créer le sous-réseau proxy réservé maintenant, procédez comme suit :

  1. Dans Google Cloud Console, accédez à la page Réseaux VPC.
    Accéder à la page "Réseaux VPC"
  2. Cliquez sur le nom du réseau VPC partagé : lb-network.
  3. Cliquez sur Ajouter un sous-réseau.
  4. Dans le champ Nom, saisissez proxy-only-subnet.
  5. Pour Région, sélectionnez REGION_A.
  6. Définissez le champ Objectif sur Proxy géré régional.
  7. Dans Plage d'adresses IP, saisissez 10.129.0.0/23.
  8. Cliquez sur Ajouter.

gcloud

Créez le sous-réseau proxy réservé à l'aide de la commande gcloud compute networks subnets create.

gcloud compute networks subnets create proxy-only-subnet \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=REGION_A \
    --network=lb-network \
    --range=10.129.0.0/23

Créer des règles de pare-feu

Cet exemple nécessite les règles de pare-feu suivantes :

  • fw-allow-ssh : règle d'entrée, applicable aux instances faisant l'objet d'un équilibrage de charge, qui autorise la connectivité SSH entrante sur le port TCP 22 à partir de n'importe quelle adresse. Vous pouvez choisir une plage d'adresses IP sources plus restrictive pour cette règle. Par exemple, vous pouvez spécifier uniquement les plages d'adresses IP du système à partir duquel vous souhaitez lancer des sessions SSH. Cet exemple utilise le tag cible allow-ssh.

  • fw-allow-health-check : règle d'entrée, applicable aux instances faisant l'objet d'un équilibrage de charge, qui autorise tout le trafic TCP issu des systèmes de vérification d'état Google Cloud (dans 130.211.0.0/22 et 35.191.0.0/16). Cet exemple utilise le tag cible allow-health-check.

  • fw-allow-proxy-only-subnet : règle d'entrée qui autorise les connexions provenant du sous-réseau proxy réservé à accéder aux backends.

Sans ces règles de pare-feu, la règle d'entrée interdite par défaut bloque le trafic entrant vers les instances backend.

Les tags cibles définissent les instances backend. Sans les tags cibles, les règles de pare-feu s'appliquent à toutes les instances backend du réseau VPC. Lorsque vous créez les VM de backend, veillez à inclure les tags cibles spécifiés, comme décrit dans la section Créer un groupe d'instances géré.

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 de nouveau sur Créer une règle de pare-feu pour créer la règle autorisant les connexions SSH entrantes :
    • Nom : fw-allow-ssh
    • Réseau : lb-network
    • Sens du trafic : entrée
    • Action en cas de correspondance : autoriser
    • Cibles : Tags cibles spécifiés
    • Tags cibles : allow-ssh
    • Filtre source : Plages IPv4
    • Plages IPv4 sources : 0.0.0.0/0
    • Protocoles et ports :
      • Choisissez Protocoles et ports spécifiés.
      • Cochez la case TCP, puis saisissez 22 pour le numéro de port.
  3. Cliquez sur Créer.
  4. Cliquez une deuxième fois sur Créer une règle de pare-feu pour créer la règle autorisant les vérifications d'état Google Cloud :
    • Nom : fw-allow-health-check
    • Réseau : lb-network
    • Sens du trafic : entrée
    • Action en cas de correspondance : autoriser
    • Cibles : Tags cibles spécifiés
    • Tags cibles : allow-health-check
    • Filtre source : Plages IPv4
    • Plages IPv4 sources : 130.211.0.0/22 et 35.191.0.0/16
    • Protocoles et ports :
      • Choisissez Protocoles et ports spécifiés.
      • Cochez la case TCP, puis saisissez 80 pour le numéro de port.
        Nous vous recommandons de limiter cette règle aux seuls protocoles et ports qui correspondent à ceux utilisés par votre vérification de l'état. Si vous utilisez tcp:80 pour le protocole et le port, Google Cloud peut contacter vos VM via HTTP sur le port 80, mais pas via HTTPS sur le port 443.
  5. Cliquez sur Créer.
  6. Cliquez une troisième fois sur Créer une règle de pare-feu pour créer la règle autorisant les serveurs proxy de l'équilibreur de charge à se connecter aux backends :
    • Nom : fw-allow-proxy-only-subnet
    • Réseau : lb-network
    • Sens du trafic : entrée
    • Action en cas de correspondance : autoriser
    • Cibles : Tags cibles spécifiés
    • Tags cibles : allow-proxy-only-subnet
    • Filtre source : Plages IPv4
    • Plages IPv4 sources : 10.129.0.0/23
    • Protocoles et ports :
      • Choisissez Protocoles et ports spécifiés.
      • Cochez la case TCP, puis saisissez 80 pour les numéros de port.
  7. Cliquez sur Créer.

gcloud

  1. Créez la règle de pare-feu fw-allow-ssh pour autoriser la connectivité SSH aux VM avec le tag réseau allow-ssh. Lorsque vous omettez source-ranges, Google Cloud 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 pour autoriser les vérifications d'état Google Cloud. Cet exemple autorise tout le trafic TCP provenant des tests de vérification d'état. Toutefois, vous pouvez configurer un ensemble de ports plus restreint en fonction de vos besoins.

    gcloud compute firewall-rules create fw-allow-health-check \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=130.211.0.0/22,35.191.0.0/16 \
       --target-tags=allow-health-check \
       --rules=tcp:80
    
  3. Créez la règle fw-allow-proxy-only-subnet pour autoriser les proxys Envoy de la région à se connecter à vos backends. Définissez --source-ranges sur les plages allouées de votre sous-réseau proxy réservé, dans cet exemple, 10.129.0.0/23.

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=10.129.0.0/23 \
       --target-tags=allow-proxy-only-subnet \
       --rules=tcp:80
    

Réserver l'adresse IP de l'équilibreur de charge

Pour réserver une adresse IP interne statique pour votre équilibreur de charge, consultez la section Réserver une nouvelle adresse IPv4 ou IPv6 interne statique.

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

Cette section explique comment créer deux backends de groupe d'instances géré (MIG) dans la région REGION_A pour l'équilibreur de charge. Le MIG fournit des instances de VM exécutant les serveurs Apache backend pour cet exemple d'équilibreur de charge réseau proxy interne. En règle générale, un équilibreur de charge réseau proxy interne régional n'est pas utilisé pour le trafic HTTP. Néanmoins, Apache offre l'avantage d'être couramment utilisé et facile à configurer dans le cadre de ces tests.

Console

  1. Créez un modèle d'instance. Dans la console Google Cloud, accédez à la page Modèles d'instances.

    Accéder à la page Modèles d'instances

    1. Cliquez sur Create instance template (Créer un modèle d'instance).
    2. Dans le champ Nom, saisissez int-tcp-proxy-backend-template.
    3. Assurez-vous que le disque de démarrage est défini sur une image Debian, telle que Debian GNU/Linux 10 (Stretch). Ces instructions utilisent des commandes uniquement disponibles dans Debian, comme apt-get.
    4. Cliquez sur Options avancées.
    5. Cliquez sur Mise en réseau et configurez les champs suivants :
      1. Pour Tags réseau, saisissez allow-ssh, allow-health-check et allow-proxy-only-subnet.
      2. Pour Interfaces réseau, sélectionnez l'option suivante :
        • Réseau : lb-network
        • Sous-réseau : backend-subnet
    6. Cliquez sur Gestion. Saisissez le script suivant dans le champ Script de démarrage.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
    7. Cliquez sur Créer.

  2. Créez un groupe d'instances géré. Dans la console Google Cloud, accédez à la page Groupes d'instances.

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

    1. Cliquez sur Créer un groupe d'instances.
    2. Sélectionnez Nouveau groupe d'instances géré (sans état). Pour plus d'informations, consultez la page Groupes d'instances gérés (MIG) sans état ou avec état.
    3. Dans le champ Nom, saisissez mig-a.
    4. Pour l'emplacement, sélectionnez Zone unique.
    5. Pour Région, sélectionnez REGION_A.
    6. Pour Zone, sélectionnez ZONE_A1.
    7. Pour le paramètre Modèle d'instance, sélectionnez int-tcp-proxy-backend-template.
    8. Spécifiez le nombre d'instances que vous souhaitez créer au sein du groupe.

      Pour cet exemple, spécifiez les options suivantes sous Autoscaling :

      • Dans le champ Mode autoscaling, sélectionnez Off:do not autoscale.
      • Dans le champ Nombre maximal d'instances, saisissez 2.
    9. Pour Mappage des ports, cliquez sur Ajouter un port.

      • Pour nom du port, saisissez tcp80.
      • Pour Numéro de port, saisissez 80.
    10. Cliquez sur Créer.

  3. Répétez l'étape 2 pour créer un deuxième groupe d'instances géré avec les paramètres suivants :

    1. Nom : mig-c
    2. Zone : ZONE_A2 Conservez les autres paramètres.

gcloud

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

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

    gcloud compute instance-templates create int-tcp-proxy-backend-template \
       --region=REGION_A \
       --network=lb-network \
       --subnet=backend-subnet \
       --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
       --image-family=debian-10 \
       --image-project=debian-cloud \
       --metadata=startup-script='#! /bin/bash
         apt-get update
         apt-get install apache2 -y
         a2ensite default-ssl
         a2enmod ssl
         vm_hostname="$(curl -H "Metadata-Flavor:Google" \
         http://metadata.google.internal/computeMetadata/v1/instance/name)"
         echo "Page served from: $vm_hostname" | \
         tee /var/www/html/index.html
         systemctl restart apache2'
    
  2. Créez un groupe d'instances géré dans la zone ZONE_A1.

    gcloud compute instance-groups managed create mig-a \
       --zone=ZONE_A1 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    Remplacez ZONE_A1 par le nom de la zone dans la région Google Cloud cible.

  3. Créez un groupe d'instances géré dans la zone ZONE_A2.

    gcloud compute instance-groups managed create mig-c \
       --zone=ZONE_A2 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    Remplacez ZONE_A2 par le nom d'une autre zone de la région Google Cloud cible.

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 Interne, puis cliquez sur Suivant.
  6. Pour Déploiement interrégional ou dans une seule région, sélectionnez Recommandé pour les charges de travail régionales, puis cliquez sur Suivant.
  7. Cliquez sur Configurer.

Configuration de base

  1. Dans le champ Nom, saisissez my-int-tcp-lb.
  2. Pour Région, sélectionnez REGION_A.
  3. Pour Réseau, sélectionnez lb-network.

Réserver un sous-réseau proxy réservé

Pour réserver un sous-réseau proxy réservé :

  1. Cliquez sur Réserver un sous-réseau.
  2. Dans le champ Nom, saisissez proxy-only-subnet.
  3. Dans Plage d'adresses IP, saisissez 10.129.0.0/23.
  4. Cliquez sur Ajouter.

Configuration du backend

  1. Cliquez sur Configuration du backend.
  2. Pour Type de backend, sélectionnez Groupe d'instances.
  3. Dans le champ Protocole, sélectionnez TCP.
  4. Pour le Port nommé, saisissez tcp80.
  5. Configurez le premier backend :
    1. Sous Nouveau backend, sélectionnez le groupe d'instances mig-a.
    2. Pour Numéros de ports, saisissez 80.
    3. Conservez les valeurs par défaut restantes, puis cliquez sur OK.
  6. Configurez le deuxième backend :
    1. Cliquez sur Ajouter un backend.
    2. Sous Nouveau backend, sélectionnez le groupe d'instances mig-c.
    3. Pour Numéros de ports, saisissez 80.
    4. Conservez les valeurs par défaut restantes, puis cliquez sur OK.
  7. Configurez la vérification d'é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 tcp-health-check.
    3. Dans le champ Protocole, sélectionnez TCP.
    4. Définissez le paramètre Port sur 80.
  8. Conservez les valeurs par défaut restantes, puis cliquez sur Enregistrer.
  9. 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 de l'interface

  1. Cliquez sur Configuration de l'interface.
  2. Dans le champ Nom, saisissez int-tcp-forwarding-rule.
  3. Pour Sous-réseau, sélectionnez backend-subnet.
  4. Pour Adresse IP, sélectionnez l'adresse IP réservée précédemment : LB_IP_ADDRESS
  5. Pour Numéro de port, saisissez 110. La règle de transfert transfère les paquets avec un port de destination correspondant.
  6. Dans cet exemple, n'activez pas le protocole de proxy, car il ne fonctionne pas avec le logiciel Apache HTTP Server. Pour en savoir plus, consultez la section Protocole de proxy.
  7. Cliquez sur OK.
  8. Dans Google Cloud Console, 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 régionale.

    gcloud compute health-checks create tcp tcp-health-check \
       --region=REGION_A \
       --use-serving-port
    
  2. Créez un service de backend.

    gcloud compute backend-services create internal-tcp-proxy-bs \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --protocol=TCP \
       --region=REGION_A \
       --health-checks=tcp-health-check \
       --health-checks-region=REGION_A
    
  3. Ajoutez des groupes d'instances au service de backend.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-a \
       --instance-group-zone=ZONE_A1 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-c \
       --instance-group-zone=ZONE_A2 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
  4. Créez un proxy TCP cible interne.

    gcloud compute target-tcp-proxies create int-tcp-target-proxy \
       --backend-service=internal-tcp-proxy-bs \
       --proxy-header=NONE \
       --region=REGION_A
    

    Si vous souhaitez activer l'en-tête de proxy, définissez le paramètre --proxy-header sur PROXY_V1 au lieu de NONE. Dans cet exemple, n'activez pas le protocole de proxy, car il ne fonctionne pas avec le logiciel Apache HTTP Server. Pour en savoir plus, consultez la section Protocole de proxy.

  5. Créez la règle de transfert. Pour --ports, spécifiez un seul numéro de port compris entre 1 et 65 535. Cet exemple utilise le port 110. La règle de transfert transfère les paquets avec un port de destination correspondant.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110
    

Tester votre équilibreur de charge

Pour tester l'équilibreur de charge, créez une VM cliente dans la même région que l'équilibreur de charge. Envoyez ensuite du trafic depuis le client vers l'équilibreur de charge.

Créer une VM cliente

Créez une VM cliente (client-vm) dans la même région que l'équilibreur de charge.

Console

  1. Dans la console Google Cloud, 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 client-vm.

  4. Définissez le champ Zone sur ZONE_A1.

  5. Cliquez sur Options avancées.

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

    1. Pour Tags réseau, saisissez allow-ssh.
    2. Pour Interfaces réseau, sélectionnez l'option suivante :
      • Réseau : lb-network
      • Sous-réseau : backend-subnet
  7. Cliquez sur Créer.

gcloud

La VM cliente doit se trouver dans le même réseau VPC et dans la même région que l'équilibreur de charge. Elle ne doit pas nécessairement se trouver dans le même sous-réseau ou la même zone. Le client utilise le même sous-réseau que les VM de backend.

gcloud compute instances create client-vm \
    --zone=ZONE_A1 \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=backend-subnet

Envoyer du trafic vers l'équilibreur de charge

Maintenant que vous avez configuré votre équilibreur de charge, vous pouvez commencer à envoyer du trafic vers son adresse IP.

  1. Utilisez SSH pour vous connecter à l'instance cliente.

    gcloud compute ssh client-vm \
       --zone=ZONE_A1
    
  2. Vérifiez que l'équilibreur de charge diffuse les noms d'hôte de backend comme prévu.

    1. Utilisez la commande compute addresses describe pour afficher l'adresse IP de l'équilibreur de charge :

      gcloud compute addresses describe int-tcp-ip-address \
       --region=REGION_A
      

      Notez l'adresse IP.

    2. Envoyez du trafic vers l'équilibreur de charge. Remplacez IP_ADDRESS par l'adresse IP de l'équilibreur de charge.

      curl IP_ADDRESS:110
      

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 l'accès mondial

Vous pouvez activer l'accès mondial pour votre équilibreur de charge afin de le rendre accessible aux clients situés dans toutes les régions. Les backends de votre exemple d'équilibreur de charge doivent toujours être situés dans une région (REGION_A).

Équilibreur de charge réseau interne régional avec accès global
Équilibreur de charge réseau proxy interne régional avec accès mondial (cliquez pour agrandir)

Vous ne pouvez pas modifier une règle de transfert régionale existante pour activer l'accès mondial. Vous devez créer une règle de transfert à cette fin. En outre, une fois qu'une règle de transfert a été créée avec l'accès mondial activé, elle ne peut pas être modifiée. Pour désactiver l'accès mondial, vous devez créer une règle de transfert d'accès régional et supprimer la règle de transfert d'accès global précédente.

Pour configurer l'accès mondial, procédez aux modifications de configuration ci-dessous.

Console

Créez une règle de transfert pour l'équilibreur de charge :

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

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

  2. Dans la colonne Nom, cliquez sur votre équilibreur de charge.

  3. Cliquez sur Configuration de l'interface.

  4. Cliquez sur Ajouter une adresse IP et un port frontend.

  5. Saisissez le nom et les détails du sous-réseau pour la nouvelle règle de transfert.

  6. Pour Sous-réseau, sélectionnez backend-subnet.

  7. Pour Adresse IP, vous pouvez sélectionner la même adresse IP qu'une règle de transfert existante, réserver une nouvelle adresse IP ou utiliser une adresse IP éphémère. Le partage d'une même adresse IP entre plusieurs règles de transfert n'est possible que si vous définissez l'option --purpose de l'adresse IP sur SHARED_LOADBALANCER_VIP, lors de la création de l'adresse IP.

  8. Pour Numéro de port, saisissez 110.

  9. Pour Accès mondial, sélectionnez Activer.

  10. Cliquez sur OK.

  11. Cliquez sur Mettre à jour.

gcloud

  1. Créez une règle de transfert pour l'équilibreur de charge avec l'option --allow-global-access.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule-global-access \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110 \
       --allow-global-access
    
  2. Vous pouvez utiliser la commande gcloud compute forwarding-rules describe pour déterminer si l'accès mondial est activé pour une règle de transfert. Exemple :

    gcloud compute forwarding-rules describe int-tcp-forwarding-rule-global-access \
       --region=REGION_A \
       --format="get(name,region,allowGlobalAccess)"
    

    Lorsque l'accès mondial est activé, le mot True apparaît dans la sortie après le nom et la région de la règle de transfert.

Créer une VM cliente pour tester l'accès mondial

Console

  1. Dans la console Google Cloud, 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 test-global-access-vm.

  4. Définissez le champ Zone sur ZONE_B1.

  5. Cliquez sur Options avancées.

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

    1. Pour Tags réseau, saisissez allow-ssh.
    2. Pour Interfaces réseau, sélectionnez l'option suivante :
      • Réseau : lb-network
      • Sous-réseau : test-global-access-subnet
  7. Cliquez sur Créer.

gcloud

Créez une VM cliente dans la zone ZONE_B1.

gcloud compute instances create test-global-access-vm \
    --zone=ZONE_B1 \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=test-global-access-subnet

Remplacez ZONE_B1 par le nom de la zone dans la région REGION_B.

Se connecter à la VM cliente et tester la connectivité

  1. Utilisez ssh pour vous connecter à l'instance cliente :

    gcloud compute ssh test-global-access-vm \
        --zone=ZONE_B1
    
  2. Utilisez la commande gcloud compute addresses describe pour afficher l'adresse IP de l'équilibreur de charge :

    gcloud compute addresses describe int-tcp-ip-address \
        --region=REGION_A
    

    Notez l'adresse IP.

  3. Envoyez du trafic à l'équilibreur de charge. Remplacez IP_ADDRESS par l'adresse IP de l'équilibreur de charge :

    curl IP_ADDRESS:110
    

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

Vous ne pouvez pas mettre à jour l'en-tête du protocole de PROXY dans le proxy cible existant. Vous devez créer un proxy cible avec le paramètre requis pour l'en-tête du protocole de PROXY. Pour créer une interface avec les paramètres requis, procédez comme suit :

Console

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

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

  2. Cliquez sur le nom de l'équilibreur de charge que vous souhaitez modifier.
  3. Cliquez sur Modifier à côté du nom de votre équilibreur de charge.
  4. Cliquez sur Configuration de l'interface.
  5. Supprimez l'ancien port et l'ancienne adresse IP de l'interface.
  6. Cliquez sur Ajouter une adresse IP et un port frontend.
    1. Dans le champ Nom, saisissez int-tcp-forwarding-rule.
    2. Pour Sous-réseau, sélectionnez backend-subnet.
    3. Pour Adresse IP, sélectionnez l'adresse IP réservée précédemment : LB_IP_ADDRESS
    4. Pour Numéro de port, saisissez 110. La règle de transfert transfère les paquets avec un port de destination correspondant.
    5. Définissez la valeur du champ Protocole de proxy sur On (Activé).
    6. Cliquez sur OK.
  7. Cliquez sur Mettre à jour pour enregistrer vos modifications.

gcloud

  1. 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 create TARGET_PROXY_NAME \
           --backend-service=BACKEND_SERVICE \
           --proxy-header=[NONE | PROXY_V1] \
           --region=REGION
       
  2. Supprimez la règle de transfert existante.

       gcloud compute forwarding-rules delete int-tcp-forwarding-rule \
           --region=REGION
       
  3. Créez une règle de transfert et associez-la au proxy cible.

       gcloud compute forwarding-rules create int-tcp-forwarding-rule \
           --load-balancing-scheme=INTERNAL_MANAGED \
           --network=lb-network \
           --subnet=backend-subnet \
           --region=REGION \
           --target-tcp-proxy=TARGET_PROXY_NAME \
           --target-tcp-proxy-region=REGION \
           --address=LB_IP_ADDRESS \
           --ports=110
       

Activer 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 réseau proxy interne régional 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 interne d'une règle de transfert interne).

Console

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

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.
    Accéder à la page "Équilibrage de charge"
  2. Cliquez sur Backends.
  3. Cliquez sur internal-tcp-proxy-bs (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 internal-tcp-proxy-bs, en spécifiant l'affinité de session basée sur les adresses IP client :

gcloud compute backend-services update internal-tcp-proxy-bs \
    --region=REGION_A \
    --session-affinity=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.

Étapes suivantes