Ce guide explique comment déployer un équilibreur de charge réseau passthrough interne avec des backends de groupes de points de terminaison du réseau (NEG) zonaux. Les NEG zonaux sont des ressources zonales qui représentent des collections d'adresses IP ou de combinaisons adresses IP/port pour les ressources Google Cloud faisant partie d'un même sous-réseau. Les NEG vous permettent de créer des regroupements logiques d'adresses IP ou de combinaisons d'adresses IP et de ports représentant des services logiciels plutôt que des VM entières.
Avant de suivre ce guide, familiarisez-vous avec les points suivants :
Les équilibreurs de charge réseau passthrough internes ne sont compatibles qu'avec les NEG zonaux dotés de points de terminaison GCE_VM_IP
.
Autorisations
Pour suivre ce guide, vous devez 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 :
- Access control (Contrôle des accès)
- Conditions IAM
Vue d'ensemble de la configuration
Ce guide vous explique comment configurer et tester un équilibreur de charge réseau passthrough interne avec des backends de NEG zonaux GCE_VM_IP
. Les étapes de cette section décrivent comment configurer les éléments suivants :
- Un exemple de réseau VPC appelé
lb-network
avec un sous-réseau personnalisé - Des règles de pare-feu autorisant les connexions entrantes aux VM de backend
- Quatre VM :
- VM
vm-a1
etvm-a2
dans la zoneus-west1-a
- VM
vm-c1
etvm-c2
dans la zoneus-west1-c
- VM
- Deux NEG zonaux de backend,
neg-a
dans la zoneus-west1-a
etneg-c
dans la zoneus-west1-c
. Chaque NEG possède les points de terminaison suivants :neg-a
contient les deux points de terminaison suivants :- Adresse IP interne de la VM
vm-a1
- Adresse IP interne de la VM
vm-a2
- Adresse IP interne de la VM
neg-c
contient les deux points de terminaison suivants :- Adresse IP interne de la VM
vm-c1
- Adresse IP interne de la VM
vm-c2
- Adresse IP interne de la VM
- VM cliente (
vm-client
) dansus-west1-a
pour tester les connexions - Les composants de l'équilibreur de charge réseau passthrough interne suivants :
- Un service de backend interne dans la région
us-west1
pour gérer la distribution des connexions vers les deux NEG zonaux - Règle de transfert interne et adresse IP interne pour l'interface de l'équilibreur de charge
- Un service de backend interne dans la région
L'architecture de cet exemple se présente comme suit :
Configurer un réseau, une région et un sous-réseau
L'exemple d'équilibreur de charge réseau passthrough interne décrit sur cette page est créé dans un réseau VPC en mode personnalisé nommé lb-network
.
Les VM de backend, les NEG zonaux et les composants de l'équilibreur de charge de cet exemple sont situés dans cette région et ce sous-réseau :
- Région :
us-west1
- Sous-réseau :
lb-subnet
, avec plage d'adresses IP principale10.1.2.0/24
Pour créer les exemples de réseau et de sous-réseaux, procédez comme suit :
Console
- Accédez à la page Réseaux VPC dans Google Cloud Console.
Accéder à la page "Réseaux VPC" - Cliquez sur Créer un réseau VPC.
- Saisissez le nom
lb-network
. - 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 :
lb-subnet
- Région :
us-west1
- Plage d'adresses IP :
10.1.2.0/24
- Cliquez sur OK.
- Nom :
- Cliquez sur Créer.
gcloud
Créez le réseau VPC personnalisé :
gcloud compute networks create lb-network --subnet-mode=custom
- Dans le réseau
lb-network
, créez un sous-réseau pour les VM de backend dans la régionus-west1
:
gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
- Dans le réseau
Configurer des règles de pare-feu
Cet exemple utilise les règles de pare-feu suivantes :
fw-allow-lb-access
: règle d'entrée applicable à toutes les cibles du réseau VPC, autorisant tout le trafic provenant de sources comprises dans la plage10.1.2.0/24
. Cette règle autorise le trafic entrant depuis n'importe quel client situé danslb-subnet
.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 source plus restrictive pour cette règle. Par exemple, vous pouvez spécifier uniquement les plages d'adresses IP du système à partir duquel vous prévoyez de lancer des sessions SSH. Cet exemple utilise le tag cibleallow-ssh
pour identifier les VM auxquelles la règle doit s'appliquer.
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.
Console
- Dans la console Google Cloud, accédez à la page Règles d'administration.
Accéder à la page "Stratégies de pare-feu" - Cliquez sur Créer une règle de pare-feu et saisissez les informations suivantes pour créer la règle permettant d'autoriser le trafic de sous-réseau :
- Nom :
fw-allow-lb-access
- Réseau :
lb-network
- Priorité :
1000
- Sens du trafic : entrée
- Action en cas de correspondance : autoriser
- Cibles : toutes les instances du réseau
- Filtre source : Plages IPv4
- Plages IPv4 sources :
10.1.2.0/24
- Protocoles et ports : tout autoriser
- Nom :
- Cliquez sur Créer.
- 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
- 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
.
- Nom :
- Cliquez sur Créer.
- Cliquez une troisiè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
- Priorité :
1000
- 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
et35.191.0.0/16
- Protocoles et ports : tout autoriser
- Nom :
- Cliquez sur Créer.
gcloud
Créez la règle de pare-feu
fw-allow-lb-access
pour autoriser la communication depuis le sous-réseau :gcloud compute firewall-rules create fw-allow-lb-access \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmp
Créez la règle de pare-feu
fw-allow-ssh
pour autoriser la connectivité SSH aux VM avec le tag réseauallow-ssh
. Lorsque vous omettezsource-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
Créez la règle
fw-allow-health-check
pour autoriser les vérifications d'état Google Cloud.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,udp,icmp
Créer des backends de NEG
Pour démontrer la nature régionale des équilibreurs de charge réseau passthrough internes, cet exemple utilise deux backends NEG zonaux, neg-a
et neg-c
, dans les zones us-west1-a
et us-
west1-c
. Le trafic est équilibré à la fois par les NEG et par les points de terminaison de chaque NEG.
Créer des VM
Pour utiliser cet exemple, chacune des quatre VM exécute un serveur Web Apache qui écoute sur les ports TCP suivants : 80, 8008, 8080, 8088, 443 et 8443.
Chaque VM reçoit une adresse IP interne dans lb-subnet
et une adresse IP externe éphémère (publique). Vous pouvez supprimer les adresses IP externes ultérieurement.
Les adresses IP externes ne sont pas requises pour les VM de backend. Toutefois, elles sont utiles dans cet exemple, car elles permettent aux VM de télécharger Apache depuis Internet et en plus de vous fournir la connexion via SSH. Par défaut, Apache est configuré pour se lier à n’importe quelle adresse IP. Les équilibreurs de charge réseau passthrough internes transmettent les paquets en conservant l'adresse IP de destination.
Vérifiez que le logiciel serveur exécuté sur les VM écoute l'adresse IP de la règle de transfert interne de l'équilibreur de charge.
Pour plus de simplicité, ces VM de backend exécutent Debian GNU Linux 10.
Console
Créer des VM
- Accédez à la page Instances de VM de Google Cloud Console.
Accéder à la page Instances de VM - Répétez les étapes ci-dessous pour créer quatre VM, en utilisant les combinaisons de noms et de zones suivantes :
- Nom :
vm-a1
, zone :us-west1-a
- Nom :
vm-a2
, zone :us-west1-a
- Nom :
vm-c1
, zone :us-west1-c
- Nom :
vm-c2
, zone :us-west1-c
- Nom :
- Cliquez sur Créer une instance.
- Définissez le Nom comme indiqué à l'étape 2.
- Dans le champ Région, choisissez
us-west1
, puis sélectionnez une zone comme indiqué à l'étape 2. - Dans la section Disque de démarrage, assurez-vous que Debian GNU/Linux 12 (bookworm) est sélectionné pour les options du disque de démarrage. Si nécessaire, cliquez sur Sélectionner pour modifier l'image.
Cliquez sur Options avancées et apportez les modifications suivantes :
- Cliquez sur Mise en réseau et ajoutez les tags réseau suivants :
allow-ssh
etallow-health-check
. - Cliquez sur le bouton Modifier (
- Réseau :
lb-network
- Sous-réseau :
lb-subnet
- Adresse IP interne principale : éphémère (automatique)
- Adresse IP externe : Éphémère
) sous Interfaces réseau, apportez les modifications suivantes, puis cliquez sur OK : - Réseau :
Cliquez sur Gestion. Dans le champ Script de démarrage, copiez et collez le contenu de script suivant. Le contenu du script est identique pour les quatre VM :
#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed
- Cliquez sur Mise en réseau et ajoutez les tags réseau suivants :
Cliquez sur Créer.
gcloud
Créez quatre VM en exécutant la commande suivante quatre fois, en utilisant ces quatre combinaisons pour [VM-NAME]
et [ZONE]
. Le contenu du script est identique pour les quatre 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-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --metadata=startup-script='#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed'
Créer des NEG zonaux GCE_VM_IP
Les NEG (neg-a
et neg-c
) doivent être créés dans les mêmes zones que les VM créées à l'étape précédente.
Console
Pour créer un groupe de points de terminaison de réseau zonal :
- Accédez à la page "Groupes de points de terminaison du réseau" dans la console Google Cloud.
Accéder à la page Groupes de points de terminaison du réseau - Cliquez sur Créer un groupe de points de terminaison du réseau.
- Saisissez un nom pour le NEG zonal :
neg-a
. - Sélectionnez le type de groupe de points de terminaison du réseau : Groupe de points de terminaison du réseau (zonal).
- Sélectionnez le réseau : lb-network.
- Sélectionnez le sous-réseau : lb-subnet.
- Sélectionnez la zone : us-west1-a.
- Cliquez sur Créer.
- Répétez ces étapes pour créer un deuxième NEG zonal nommé
neg-c
dans la zone us-west1-c.
Ajoutez des points de terminaison au NEG zonal :
- Accédez à la page "Groupes de points de terminaison du réseau" dans Google Cloud Console.
Accéder à la page Groupes de points de terminaison du réseau - Cliquez sur le nom du premier groupe de points de terminaison du réseau créé à l'étape précédente (neg-a). La page Détails du groupe de points de terminaison du réseau s'affiche.
Dans la section Points de terminaison du réseau de ce groupe, cliquez sur Ajouter un point de terminaison du réseau. La page Ajouter un point de terminaison du réseau s'affiche.
- Cliquez sur Instance de VM, puis sélectionnez vm-a1 pour ajouter ses adresses IP internes en tant que points de terminaison du réseau.
- Cliquez sur Créer.
- Cliquez à nouveau sur Ajouter un point de terminaison du réseau, puis sélectionnez vm-a2 sous Instance de VM.
- Cliquez sur Créer.
Cliquez sur le nom du deuxième groupe de points de terminaison du réseau créé à l'étape précédente (neg-c). La page Détails du groupe de points de terminaison du réseau s'affiche.
Dans la section Points de terminaison du réseau de ce groupe, cliquez sur Ajouter un point de terminaison du réseau. La page Ajouter un point de terminaison du réseau s'affiche.
- Cliquez sur Instance de VM, puis sélectionnez vm-c1 pour ajouter ses adresses IP internes en tant que points de terminaison du réseau.
- Cliquez sur Créer.
- Cliquez à nouveau sur Ajouter un point de terminaison du réseau, puis sélectionnez vm-c2 sous Instance de VM.
- Cliquez sur Créer.
gcloud
Créez un NEG zonal
GCE_VM_IP
appeléneg-a
dansus-west1-a
à l'aide de la commandegcloud compute network-endpoint-groups create
:gcloud compute network-endpoint-groups create neg-a \ --network-endpoint-type=gce-vm-ip \ --zone=us-west1-a \ --network=lb-network \ --subnet=lb-subnet
Ajoutez des points de terminaison à
neg-a
:gcloud compute network-endpoint-groups update neg-a \ --zone=us-west1-a \ --add-endpoint='instance=vm-a1' \ --add-endpoint='instance=vm-a2'
Créez un NEG zonal
GCE_VM_IP
appeléneg-c
dansus-west1-c
à l'aide de la commandegcloud compute network-endpoint-groups create
:gcloud compute network-endpoint-groups create neg-c \ --network-endpoint-type=gce-vm-ip \ --zone=us-west1-c \ --network=lb-network \ --subnet=lb-subnet
Ajoutez des points de terminaison à
neg-c
:gcloud compute network-endpoint-groups update neg-c \ --zone=us-west1-c \ --add-endpoint='instance=vm-c1' \ --add-endpoint='instance=vm-c2'
Configurer les composants de l'équilibreur de charge
Ces étapes configurent tous les composants de l'équilibreur de charge réseau passthrough interne :
Service de backend : pour cet exemple, vous devez transmettre le trafic HTTP via l'équilibreur de charge. Vous devez donc utiliser TCP, et non UDP.
Règle de transfert : Cet exemple crée une seule règle de transfert interne.
Adresse IP interne : dans cet exemple, vous spécifiez une adresse IP interne,
10.1.2.99
, lors de la création de la règle de transfert.
Console
gcloud
Créez une vérification d'état HTTP régionale.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Créez le service de backend :
gcloud compute backend-services create bs-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Ajoutez les deux NEG zonaux,
neg-a
etneg-c
, au service de backend :gcloud compute backend-services add-backend bs-ilb \ --region=us-west1 \ --network-endpoint-group=neg-a \ --network-endpoint-group-zone=us-west1-a
gcloud compute backend-services add-backend bs-ilb \ --region=us-west1 \ --network-endpoint-group=neg-c \ --network-endpoint-group-zone=us-west1-c
Créez une règle de transfert pour le service de backend. Lorsque vous créez la règle de transfert, indiquez
10.1.2.99
pour l'adresse IP interne dans le sous-réseau.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=TCP \ --ports=80,8008,8080,8088 \ --backend-service=bs-ilb \ --backend-service-region=us-west1
Tester l'équilibreur de charge
Ce test contacte l'équilibreur de charge à partir d'une VM cliente distincte (autre qu'une VM de backend de l'équilibreur de charge). Le comportement attendu est une répartition du trafic entre les quatre VM de backend, car aucune affinité de session n'a été configurée.
Créer une VM cliente de test
Cet exemple crée une VM cliente (vm-client
) dans la même région que les VM de backend (serveur). Le client est utilisé pour valider la configuration de l'équilibreur de charge et faire la démonstration du comportement attendu, tel que décrit dans la section consacrée aux tests.
Console
- Accédez à la page "Instances de VM" de Google Cloud Console.
Accéder à la page Instances de VM - Cliquez sur Créer une instance.
- Définissez le paramètre Nom sur
vm-client
. - Définissez le paramètre Zone sur
us-west1-a
. - Cliquez sur Options avancées et apportez les modifications suivantes :
- Cliquez sur Mise en réseau et ajoutez
allow-ssh
aux tags réseau. - Cliquez sur le bouton de modification sous Interfaces réseau, apportez les modifications suivantes, puis cliquez sur OK :
- Réseau :
lb-network
- Sous-réseau :
lb-subnet
- Adresse IP interne principale : éphémère (automatique)
- Adresse IP externe : Éphémère
- Réseau :
- Cliquez sur Mise en réseau et ajoutez
- Cliquez sur Créer.
gcloud
La VM cliente peut se trouver dans n'importe quelle zone de la même région que l'équilibreur de charge, et utiliser n'importe quel sous-réseau de cette région. Dans cet exemple, le client se situe dans la zone us-west1-a
et utilise le même sous-réseau que les VM de backend.
gcloud compute instances create vm-client \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=lb-subnet
Envoyer du trafic vers l'équilibreur de charge
Pour vous connecter à l'équilibreur de charge, procédez comme suit :
Connectez-vous à l'instance de VM cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Envoyez une requête Web à l'équilibreur de charge à l'aide de
curl
pour contacter son adresse IP. Répétez la requête pour que les réponses proviennent de différentes VM de backend. Le nom de la VM qui génère la réponse est affiché dans le texte de la réponse HTML, selon le contenu de/var/www/html/index.html
sur chaque VM de backend. Les réponses attendues ressemblent à ceci :Page served from: vm-a1
etPage served from: vm-a2
.curl http://10.1.2.99
La règle de transfert est configurée pour desservir les ports
80
,8008
,8080
et8088
. Pour envoyer du trafic vers ces autres ports, ajoutez deux points (:
) et le numéro de port après l'adresse IP, comme ceci :curl http://10.1.2.99:8008
Étapes suivantes
- Pour configurer des options de configuration supplémentaires telles que l'activation de l'accès mondial, l'acceptation du trafic sur tous les ports et l'acceptation du trafic sur plusieurs ports via deux règles de transfert, consultez la section Options de configuration supplémentaires pour les équilibreurs de charge réseau passthrough internes.
- Pour connaître les principes de base importants, consultez la page Présentation de l'équilibreur de charge réseau passthrough interne.
- Pour plus d'informations sur le basculement, consultez la page Concepts de basculement pour les équilibreurs de charge réseau passthrough internes.
- Pour plus d'informations sur la configuration de la journalisation et de la surveillance pour les équilibreurs de charge réseau passthrough internes, consultez la page Journalisation et surveillance de l'équilibreur de charge réseau passthrough interne.
- Pour en savoir plus sur l'accès aux équilibreurs de charge réseau passthrough internes à partir des réseaux pairs connectés à votre réseau VPC, consultez la page Équilibreurs de charge réseau passthrough internes.
- Pour plus d'informations sur la résolution des problèmes liés à votre équilibreur de charge réseau passthrough interne, consultez la page Résoudre les problèmes liés aux équilibreurs de charge réseau passthrough internes.