Configurer un équilibreur de charge proxy TCP régional interne avec des backends de NEG zonaux

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

L'équilibreur de charge proxy TCP 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 proxy TCP interne régional avec un backend de groupe de points de terminaison du réseau zonal (NEG). Avant de commencer :

Présentation

Dans cet exemple, nous allons utiliser l'équilibreur de charge pour répartir le trafic TCP entre les VM de backend de deux NEG zonaux de la région us-west1. Pour les besoins de cet exemple, le service est un ensemble de serveurs Apache configurés pour répondre sur le port 80.

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

Exemple de configuration d'équilibreur de charge proxy TCP interne régional avec des backends de NEG zonaux.
Exemple de configuration d'un équilibreur de charge proxy TCP interne régional avec des backends de NEG zonaux.

L'équilibreur de charge proxy TCP 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. Un équilibreur de charge proxy TCP interne régional est régional. 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 us-west1 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 us-west1 utilise 10.129.0.0/23 pour sa plage d'adresses IP principale.

Créer le réseau et le sous-réseau pour les backends

Console

  1. Dans Google Cloud Console, accédez à la page Réseaux VPC.
    Accéder à la page "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 Mode de création du sous-réseau sur Personnalisé.
    • Dans la section Nouveau sous-réseau, saisissez les informations suivantes :
      • Nom : backend-subnet
      • Région : us-west1
      • Plage d'adresses IP : 10.1.2.0/24
    • Cliquez sur OK.
  5. Cliquez sur Create (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 us-west1 à 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=us-west1
    

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 us-west1 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 la région, sélectionnez us-west1.
  6. Définissez le champ Objectif sur Proxy géré régional.
  7. Pour la 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=us-west1 \
    --network=lb-network \
    --range=10.129.0.0/23

Créer des règles de pare-feu

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

  • fw-allow-health-check : règle d'entrée, applicable aux instances Google Cloud soumises à l'équilibrage de charge, qui autorise le trafic provenant de l'équilibreur de charge et des systèmes de vérification d'état de Google Cloud (130.211.0.0/22 et 35.191.0.0/16). Cet exemple utilise le tag cible allow-health-check pour identifier les VM de backend auxquelles il doit s'appliquer.
  • fw-allow-ssh : règle d'entrée 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 pour identifier les VM auxquelles la règle doit s'appliquer.
  • fw-allow-proxy-only-subnet : Créez une règle de pare-feu autorisant le trafic entrant pour le sous-réseau proxy réservé afin de permettre à l'équilibreur de charge de communiquer avec les instances backend sur le port TCP 80 : Cet exemple utilise le tag cible allow-proxy-only-subnet pour identifier les VM de backend auxquelles la règle doit s'appliquer.

Console

  1. Dans Google Cloud Console, accédez à la page Pare-feu.
    Accéder à la page Pare-feu
  2. Cliquez sur Create Firewall Rule (Créer une règle de pare-feu) :
    1. Saisissez le nom fw-allow-health-check.
    2. Sous Réseau, sélectionnez NETWORK.
    3. Sous Cibles, sélectionnez Tags cibles spécifiés.
    4. Dans le champ Tags cibles, saisissez allow-health-check.
    5. Définissez Filtre source sur Plages IPv4.
    6. Définissez Plages IPv4 sources sur 130.211.0.0/22 et 35.191.0.0/16.
    7. Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés.
    8. Cochez la case en regard de tcp et saisissez 80 comme numéros de port.
    9. Cliquez sur Create (Créer).
  3. 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 : NETWORK
    • Priorité : 1000
    • 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, puis saisissez tcp:22.
  4. Cliquez sur Create (Créer).
  5. Cliquez de nouveau sur Créer une règle de pare-feu pour créer la règle autorisant les connexions entrantes du sous-réseau proxy réservé aux backends Google Cloud :
    • Nom : fw-allow-proxy-only-subnet
    • Réseau : NETWORK
    • Priorité : 1000
    • 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, puis saisissez tcp:80.
  6. Cliquez sur Create (Créer).

gcloud

  1. Créez la règle fw-allow-health-check pour autoriser les vérifications d'état Google Cloud à atteindre les instances backend sur le port TCP 80 :

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80
    
  2. 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
    
  3. Créez une règle de pare-feu autorisant le trafic entrant pour le sous-réseau proxy réservé afin de permettre à l'équilibreur de charge de communiquer avec les instances backend sur le port TCP 80 :

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

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

Console

Vous pouvez réserver une adresse IP interne à l'aide de la console Google Cloud.

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

    Accéder aux réseaux VPC

  2. Cliquez sur le réseau utilisé pour configurer la connectivité hybride entre les environnements.
  3. Cliquez sur Adresses IP internes statiques, puis sur Réserver une adresse statique.
  4. Saisissez un Nom : LB_IP_ADDRESS.
  5. Pour le sous-réseau, sélectionnez backend-subnet.
  6. Si vous souhaitez spécifier l'adresse IP à réserver, sous Adresse IP statique, sélectionnez Laissez-moi choisir, puis indiquez une adresse IP personnalisée. Sinon, le système attribue automatiquement une adresse IP dans le sous-réseau.
  7. Si vous souhaitez utiliser cette adresse IP avec plusieurs règles de transfert, sous Usage, sélectionnez Partagée.
  8. Cliquez sur Réserver pour terminer le processus.

gcloud

Réservez une adresse IP interne régionale pour la règle de transfert de l'équilibreur de charge.

gcloud compute addresses create LB_IP_ADDRESS \
    --region=us-west1 \
    --subnet=backend-subnet \
    --purpose=SHARED_LOADBALANCER_VIP

Configurer le NEG zonal

Configurez un NEG zonal (avec des points de terminaison de type GCE_VM_IP_PORT) dans la région us-west1. Commencez par créer les VM. Créez ensuite un NEG zonal et ajoutez-y les points de terminaison du réseau des VM.

Créer des VM

Console

  1. Dans Google Cloud Console, accédez à la page Instances de VM.
    Accéder à la page "Instances de VM"
  2. Cliquez sur Create instance (Créer une instance).
  3. Dans le champ Nom, spécifiez vm-a1.
  4. Pour la région, sélectionnez us-west1.
  5. Pour la zone, consultez la page us-west1-a.
  6. Dans la section Disque de démarrage, assurez-vous que les options sélectionnées sont Debian pour le système d'exploitation et 10 (Buster) pour la version. Si nécessaire, cliquez sur Sélectionner pour modifier l'image.
  7. Cliquez sur Options avancées.
  8. 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
  9. Cliquez sur Gestion. Saisissez le script suivant dans le champ Script de démarrage.

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

  11. Répétez les étapes ci-dessous pour créer trois VM supplémentaires, en utilisant les combinaisons de nom et de zone suivantes :

    • Nom : vm-a2, zone : us-west1-a
    • Nom : vm-c1, zone : us-west1-c
    • Nom : vm-c2, zone : us-west1-c

gcloud

Créez les VM en exécutant la commande suivante deux fois, en utilisant les combinaisons suivantes pour VM_NAME et ZONE. Le contenu du script est identique pour les deux VM.

  • VM_NAME : vm-a1 et ZONE : us-west1-a
  • VM_NAME : vm-a2 et ZONE : us-west1-a
  • VM_NAME : vm-c1 et ZONE : us-west1-c
  • VM_NAME : vm-c2 et ZONE : us-west1-c

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
        --subnet=backend-subnet \
        --metadata=startup-script='#! /bin/bash
         apt-get update
         apt-get install apache2 -y
         vm_hostname="$(curl -H "Metadata-Flavor:Google" \
         http://169.254.169.254/computeMetadata/v1/instance/name)"
         echo "Page served from: $vm_hostname" | \
         tee /var/www/html/index.html
         systemctl restart apache2'
    

Créer les NEG zonaux

gcloud

  1. Créez un NEG zonal dans la zone us-west1-a avec des points de terminaison GCE_VM_IP_PORT.

    gcloud compute network-endpoint-groups create zonal-neg-a \
       --network-endpoint-type=GCE_VM_IP_PORT \
       --zone=us-west1-a \
       --network=lb-network \
       --subnet=backend-subnet
    

    Vous pouvez spécifier le paramètre --default-port lors de la création du NEG ou spécifier un numéro de port pour chaque point de terminaison, comme indiqué à l'étape suivante.

  2. Ajoutez des points de terminaison au NEG zonal.

    gcloud compute network-endpoint-groups update zonal-neg-a \
        --zone=us-west1-a \
        --add-endpoint='instance=vm-a1,port=80' \
        --add-endpoint='instance=vm-a2,port=80'
    
  3. Créez un NEG zonal dans la zone us-west1-c avec des points de terminaison GCE_VM_IP_PORT.

    gcloud compute network-endpoint-groups create zonal-neg-c \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=us-west1-c \
        --network=lb-network \
        --subnet=backend-subnet
    

    Vous pouvez spécifier le paramètre --default-port lors de la création du NEG ou spécifier un numéro de port pour chaque point de terminaison, comme indiqué à l'étape suivante.

  4. Ajoutez des points de terminaison au NEG zonal.

    gcloud compute network-endpoint-groups update zonal-neg-c \
        --zone=us-west1-c \
        --add-endpoint='instance=vm-c1,port=80' \
        --add-endpoint='instance=vm-c2,port=80'
    

Configurer l'équilibreur de charge

Console

gcloud

  1. Créez une vérification d'état régionale pour les backends.

    gcloud compute health-checks create tcp tcp-health-check \
        --region=us-west1 \
        --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=us-west1 \
       --health-checks=tcp-health-check \
       --health-checks-region=us-west1
    
  3. Ajoutez le NEG zonal dans la zone us-west1-a au service de backend.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --network-endpoint-group=zonal-neg-a \
       --network-endpoint-group-zone=us-west1-a \
       --balancing-mode=CONNECTION \
       --max-connections-per-endpoint=50 \
       --region=us-west1
    
  4. Ajoutez le NEG zonal dans la zone us-west1-c au service de backend.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --network-endpoint-group=zonal-neg-c \
       --network-endpoint-group-zone=us-west1-c \
       --balancing-mode=CONNECTION \
       --max-connections-per-endpoint=50 \
       --region=us-west1
    
  5. Créez le proxy TCP cible.

    gcloud compute target-tcp-proxies create int-tcp-target-proxy \
       --backend-service=internal-tcp-proxy-bs \
       --region=us-west1
    
  6. 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 9090. 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 \
      --address=LB_IP_ADDRESS \
      --ports=9090 \
      --region=us-west1 \
      --target-tcp-proxy=int-tcp-target-proxy \
      --target-tcp-proxy-region=us-west1
    

Tester l'é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 CLIENT_VM_ZONE.

  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=CLIENT_VM_ZONE \
    --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. Connectez-vous à l'instance cliente via SSH.

    gcloud compute ssh client-vm \
      --zone=CLIENT_VM_ZONE
    
  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 LB_IP_ADDRESS \
        --region=us-west1
      

      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:9090
      

Étape suivante