Ce guide fournit des instructions pour créer des équilibreurs de charge réseau passthrough externes basés sur un service de backend qui équilibrent la charge du trafic TCP, UDP, ESP, GRE, ICMP et ICMPv6. Vous pouvez utiliser cette configuration si vous souhaitez équilibrer la charge du trafic dont les protocoles IP ne sont pas TCP ou UDP. Les équilibreurs de charge réseau passthrough externes basés sur un pool cible ne sont pas compatibles avec cette fonctionnalité.
Pour configurer un équilibreur de charge réseau passthrough externe pour des protocoles IP autres que TCP ou UDP, vous devez créer une règle de transfert avec un protocole défini sur L3_DEFAULT
. Cette règle de transfert pointe vers un service de backend dont le protocole est défini sur UNSPECIFIED
.
Dans cet exemple, nous utilisons deux équilibreurs de charge réseau passthrough externe pour répartir le trafic entre les VM de backend de deux groupes d'instances gérés zonaux dans la région us-central1
.
Les deux équilibreurs de charge reçoivent le trafic sur la même adresse IP externe.
L'un deux contient une règle de transfert avec le protocole TCP
et le port 80, et l'autre une règle de transfert avec le protocole L3_DEFAULT
. Le trafic TCP arrivant à l'adresse IP sur le port 80 est géré par la règle de transfert TCP
. Tout autre trafic qui ne correspond pas à la règle de transfert spécifique à TCP est géré par la règle de transfert L3_DEFAULT
.
Dans ce scénario, le trafic est réparti entre les instances opérationnelles. Pour ce faire, vous devez créer des vérifications d'état TCP afin de vous assurer que le trafic n'est envoyé qu'aux instances opérationnelles.
L'équilibreur de charge réseau passthrough externe est un équilibreur de charge régional. Tous les composants de l'équilibreur de charge doivent se trouver dans la même région.
Avant de commencer
Installez Google Cloud CLI. Pour une présentation complète de l'outil, consultez la présentation de gcloud CLI. Vous trouverez des commandes liées à l'équilibrage de charge dans la documentation de référence de l'API et de gcloud CLI.
Si vous n'avez pas encore utilisé gcloud CLI, exécutez d'abord la commande gcloud init
pour vous authentifier.
Dans ce guide, nous partons du principe que vous maîtrisez bash.
Configurer le réseau et les sous-réseaux
L'exemple de cette page utilise un réseau VPC en mode personnalisé nommé lb-network
. Vous pouvez utiliser un réseau VPC en mode automatique si vous souhaitez uniquement gérer le trafic IPv4.
Cependant, le trafic IPv6 requiert un sous-réseau en mode personnalisé.
Le trafic IPv6 nécessite également un sous-réseau à double pile (stack-type
défini sur IPv4_IPv6
). Lorsque vous créez un sous-réseau à double pile sur un réseau VPC en mode personnalisé, choisissez un type d'accès IPv6 pour le sous-réseau. Pour cet exemple, nous définissons le paramètre ipv6-access-type
du sous-réseau sur EXTERNAL
. Cela signifie que les nouvelles VM de ce sous-réseau peuvent se voir attribuer des adresses IPv4 externes et des adresses IPv6 externes. Les règles de transfert peuvent également être attribuées à la fois à des adresses IPv4 externes et à des adresses IPv6 externes.
Les backends et les composants de l'équilibreur de charge utilisés pour cet exemple sont situés dans cette région et ce sous-réseau :
- Région :
us-central1
- Sous-réseau:
lb-subnet
, avec plage d'adresses IPv4 principale10.1.2.0/24
. Bien que vous choisissiez la plage d'adresses IPv4 configurée sur le sous-réseau, la plage d'adresses IPv6 est attribuée automatiquement. Google fournit un bloc CIDR IPv6 de taille fixe (/64).
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:
Dans la console Google Cloud, accédez à 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, configurez les champs suivants, puis cliquez sur OK :
- Nom :
lb-subnet
- Région :
us-central1
- Type de pile d'adresses IP: IPv4 et IPv6 (double pile)
- Plage IPv4:
10.1.2.0/24
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). - Type d'accès IPv6: Externe
- Nom :
Cliquez sur Créer.
Pour assurer la compatibilité avec le trafic IPv4 uniquement, procédez comme suit :
Dans la console Google Cloud, accédez à 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, configurez les champs suivants, puis cliquez sur OK :
- Nom :
lb-subnet
- Région :
us-central1
- Type de pile IP: IPv4 (pile unique)
- Plage IPv4 :
10.1.2.0/24
- Nom :
Cliquez sur Créer.
gcloud
Créez le réseau VPC en mode personnalisé:
gcloud compute networks create lb-network \ --subnet-mode=custom
Au sein du réseau
lb-network
, créez un sous-réseau pour les backends dans la régionus-central1
.Pour le trafic IPv4 et IPv6, utilisez la commande suivante pour créer un sous-réseau à double pile :
gcloud compute networks subnets create lb-subnet \ --stack-type=IPV4_IPv6 \ --ipv6-access-type=EXTERNAL \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-central1
Pour le trafic IPv4 uniquement, utilisez la commande suivante:
gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-central1
Créer les groupes d'instances gérés zonaux
Dans ce scénario d'équilibrage de charge, vous allez créer deux groupes d'instances gérés zonaux Compute Engine et installer un serveur Web Apache sur chaque instance.
Pour gérer le trafic IPv4 et IPv6, configurez les VM backend en une pile double. Définissez le paramètre stack-type
de la VM sur IPv4_IPv6
. Les VM héritent également du paramètre ipv6-access-type
(dans cet exemple, EXTERNAL
) du sous-réseau. Pour en savoir plus sur les exigences IPv6, consultez la page Présentation de l'équilibreur de charge réseau passthrough externe : règles de transfert.
Pour utiliser des VM existantes comme backends, mettez-les à jour en pile double à l'aide de la commande gcloud compute instances network-interfaces update
.
Les instances qui participent en tant que VM backend pour les équilibreurs de charge réseau passthrough externes doivent exécuter l'environnement invité Linux, l'environnement invité Windows ou d'autres processus appropriés présentant des fonctionnalités équivalentes.
Créer le groupe d'instances pour le trafic TCP sur le port 80
Console
Créez un modèle d'instance. Dans Google Cloud Console, accédez à la page Modèles d'instances.
Accéder à la page Modèles d'instances
- Cliquez sur Create instance template (Créer un modèle d'instance).
- Dans le champ Nom, saisissez
ig-us-template-tcp-80
. - Assurez-vous que le disque de démarrage est défini sur une image Debian, telle que Debian GNU/Linux 12 (bookworm). Ces instructions utilisent des commandes uniquement disponibles dans Debian, comme
apt-get
. - Développez la section Options avancées.
Développez la section Gestion, puis copiez 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
Développez la section Mise en réseau, puis procédez comme suit :
- Pour Tags réseau, ajoutez
network-lb-tcp-80
. - Pour Interfaces réseau, cliquez sur l'interface default et configurez les champs suivants :
- Réseau :
lb-network
- Sous-réseau :
lb-subnet
- Réseau :
- Pour Tags réseau, ajoutez
Cliquez sur Créer.
Créez un groupe d'instances géré. Accédez à la page Groupes d'instances de la console Google Cloud.
Accéder à la page "Groupes d'instances"
- Cliquez sur Créer un groupe d'instances.
- Sélectionnez Nouveau groupe d'instances géré (sans état). Pour des informations plus détaillées, consultez la page Groupes d'instances gérés (MIG) sans état ou avec état.
- Dans le champ Nom, saisissez
ig-us-tcp-80
. - Pour l'emplacement, sélectionnez Zone unique.
- Pour la région, sélectionnez
us-central1
. - Pour la zone, sélectionnez
us-central1-a
. - Pour le paramètre Modèle d'instance, sélectionnez
ig-us-template-tcp-80
. 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
.
- Dans le champ Mode autoscaling, sélectionnez
Cliquez sur Créer.
gcloud
Les instructions gcloud
de ce guide supposent que vous utilisez Cloud Shell ou un autre environnement avec bash installé.
Créez un modèle d'instance de VM avec le serveur HTTP à l'aide de la commande
gcloud compute instance-templates create
.Pour gérer le trafic IPv4 et IPv6, utilisez la commande suivante.
gcloud compute instance-templates create ig-us-template-tcp-80 \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=network-lb-tcp-80 \ --image-family=debian-12 \ --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'
Si vous souhaitez gérer le trafic IPv4 uniquement, utilisez la commande suivante.
gcloud compute instance-templates create ig-us-template-tcp-80 \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=network-lb-tcp-80 \ --image-family=debian-12 \ --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'
Créez un groupe d'instances géré dans la zone à l'aide de la commande
gcloud compute instance-groups managed create
.gcloud compute instance-groups managed create ig-us-tcp-80 \ --zone us-central1-a \ --size 2 \ --template ig-us-template-tcp-80
Créer le groupe d'instances pour le trafic TCP (sur le port 8080), UDP, ESP et ICMP
Console
Créez un modèle d'instance. Dans Google Cloud Console, accédez à la page Modèles d'instances.
Accéder à la page Modèles d'instances
- Cliquez sur Create instance template (Créer un modèle d'instance).
- Dans le champ Nom, saisissez
ig-us-template-l3-default
. - Assurez-vous que le disque de démarrage est défini sur une image Debian, telle que Debian GNU/Linux 12 (bookworm). Ces instructions utilisent des commandes uniquement disponibles dans Debian, comme
apt-get
. - Développez la section Options avancées.
Développez la section Gestion, puis copiez le script suivant dans le champ Script de démarrage. Le script de démarrage configure également le serveur Apache pour qu'il écoute sur le port
8080
au lieu du port80
.#! /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 sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf systemctl restart apache2
Développez la section Mise en réseau, puis procédez comme suit :
- Pour Tags réseau, ajoutez
network-lb-l3-default
. - Pour Interfaces réseau, cliquez sur l'interface default et configurez les champs suivants :
- Réseau :
lb-network
- Sous-réseau :
lb-subnet
- Réseau :
- Pour Tags réseau, ajoutez
Cliquez sur Créer.
Créez un groupe d'instances géré. Accédez à la page Groupes d'instances de la console Google Cloud.
Accéder à la page "Groupes d'instances"
- Cliquez sur Créer un groupe d'instances.
- Choisissez Nouveau groupe d'instances géré (sans état). Pour des informations plus détaillées, consultez la page Groupes d'instances gérés (MIG) sans état ou avec état.
- Dans le champ Nom, saisissez
ig-us-l3-default
. - Pour l'emplacement, sélectionnez Zone unique.
- Pour la région, sélectionnez
us-central1
. - Pour la zone, sélectionnez
us-central1-c
. - Pour le paramètre Modèle d'instance, sélectionnez
ig-us-template-l3-default
. 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
.
- Dans le champ Mode autoscaling, sélectionnez
Cliquez sur Créer.
gcloud
Les instructions gcloud
de ce guide supposent que vous utilisez Cloud Shell ou un autre environnement avec bash installé.
Créez un modèle d'instance de VM avec le serveur HTTP à l'aide de la commande
gcloud compute instance-templates create
.Le script de démarrage configure également le serveur Apache pour qu'il écoute sur le port
8080
au lieu du port80
.Pour gérer le trafic IPv4 et IPv6, utilisez la commande suivante.
gcloud compute instance-templates create ig-us-template-l3-default \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=network-lb-l3-default \ --image-family=debian-12 \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
Si vous souhaitez gérer le trafic IPv4 uniquement, utilisez la commande suivante.
gcloud compute instance-templates create ig-us-template-l3-default \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=network-lb-l3-default \ --image-family=debian-12 \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
Créez un groupe d'instances géré dans la zone à l'aide de la commande
gcloud compute instance-groups managed create
.gcloud compute instance-groups managed create ig-us-l3-default \ --zone us-central1-c \ --size 2 \ --template ig-us-template-l3-default
Configurer des règles de pare-feu
Créez les règles de pare-feu suivantes :
- Règles de pare-feu autorisant le trafic TCP externe à atteindre des instances de backend dans le groupe d'instances
ig-us-tcp-80
sur le port 80 (à l'aide du tag ciblenetwork-lb-tcp-80
). Créez des règles de pare-feu distinctes pour autoriser le trafic IPv4 et IPv6. - Règles de pare-feu autorisant un autre trafic externe (TCP sur le port 8080, UDP, ESP et ICMP) à atteindre des instances backend dans le groupe d'instances
ig-us-l3-default
(à l'aide du tag ciblenetwork-lb-l3-default
). Créez des règles de pare-feu distinctes pour autoriser le trafic IPv4 et IPv6.
Cet exemple crée des règles de pare-feu permettant au trafic de toutes les plages sources d'atteindre vos instances backend sur les ports configurés. Si vous souhaitez créer des règles de pare-feu distinctes qui sont spécifiques aux vérifications d'état, utilisez les plages d'adresses IP sources décrites dans la section Présentation des vérifications d'état : plages d'adresses IP de vérification et règles de pare-feu.
Console
- Dans la console Google Cloud, accédez à la page Règles d'administration.
Accéder à la page "Stratégies de pare-feu" - Pour permettre au trafic TCP IPv4 d'atteindre les backends du groupe d'instances
ig-us-tcp-80
, créez la règle de pare-feu suivante :- Cliquez sur Créer une règle de pare-feu.
- Saisissez le nom
allow-network-lb-tcp-80-ipv4
. - Sélectionnez le réseau auquel s'applique la règle de pare-feu (par défaut).
- Sous Cibles, sélectionnez Tags cibles spécifiés.
- Dans le champ Tags cibles, saisissez
network-lb-tcp-80
. - Définissez Filtre source sur Plages IPv4.
- Définissez le champ Plages IPv4 sources sur
0.0.0.0/0
pour autoriser tout trafic, quelle que soit l'adresse IP source. Cela permet à la fois au trafic externe et aux test de vérification d'état d'atteindre les instances backend. - Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés. Cochez la case tcp et saisissez comme port
80
. - Cliquez sur Créer. L'affichage de la nouvelle règle de pare-feu dans la console peut prendre un certain temps. Vous devrez peut-être cliquer sur Actualiser pour qu'elle apparaisse.
- Pour permettre au trafic IPv4 UDP, ESP et ICMP d'atteindre les backends du groupe d'instances
ig-us-l3-default
, créez la règle de pare-feu suivante :- Cliquez sur Créer une règle de pare-feu.
- Saisissez le nom
allow-network-lb-l3-default-ipv4
. - Sélectionnez le réseau auquel s'applique la règle de pare-feu (par défaut).
- Sous Cibles, sélectionnez Tags cibles spécifiés.
- Dans le champ Tags cibles, saisissez
network-lb-l3-default
. - Définissez Filtre source sur Plages IPv4.
- Définissez le champ Plages IPv4 sources sur
0.0.0.0/0
pour autoriser tout trafic, quelle que soit l'adresse IP source. Cela permet à la fois au trafic externe et aux test de vérification d'état d'atteindre les instances backend. - Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés.
- Cochez la case TCP et saisissez
8080
. - Cochez la case UDP.
- Cochez la case Autre, puis saisissez
esp, icmp
.
- Cochez la case TCP et saisissez
- Cliquez sur Créer. L'affichage de la nouvelle règle de pare-feu dans la console peut prendre un certain temps. Vous devrez peut-être cliquer sur Actualiser pour qu'elle apparaisse.
- Pour permettre au trafic TCP IPv6 d'atteindre les backends du groupe d'instances
ig-us-tcp-80
, créez la règle de pare-feu suivante :- Cliquez sur Créer une règle de pare-feu.
- Saisissez le nom
allow-network-lb-tcp-80-ipv6
. - Sélectionnez le réseau auquel s'applique la règle de pare-feu (par défaut).
- Sous Cibles, sélectionnez Tags cibles spécifiés.
- Dans le champ Tags cibles, saisissez
network-lb-tcp-80
. - Définissez Filtre source sur Plages IPv6.
- Définissez le champ Plages d'adresses IPv6 sources sur
::/0
pour autoriser tout trafic, quelle que soit la source. Cela permet à la fois au trafic externe et aux test de vérification d'état d'atteindre les instances backend. - Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés. Cochez la case à côté de TCP, puis saisissez
80
. - Cliquez sur Créer. L'affichage de la nouvelle règle de pare-feu dans la console peut prendre un certain temps. Vous devrez peut-être cliquer sur Actualiser pour qu'elle apparaisse.
- Pour permettre au trafic IPv6 UDP, ESP et ICMPv6 d'atteindre les backends du groupe d'instances
ig-us-l3-default
, créez la règle de pare-feu suivante : Cette règle de pare-feu permet également aux tests de vérification d'état TCP d'atteindre les instances sur le port 8080.- Cliquez sur Créer une règle de pare-feu.
- Saisissez le nom
allow-network-lb-l3-default-ipv6
. - Sélectionnez le réseau auquel s'applique la règle de pare-feu (par défaut).
- Sous Cibles, sélectionnez Tags cibles spécifiés.
- Dans le champ Tags cibles, saisissez
network-lb-l3-default
. - Définissez Filtre source sur Plages IPv6.
- Définissez le champ Plages d'adresses IPv6 sources sur
::/0
pour autoriser tout trafic, quelle que soit la source. Cela permet à la fois au trafic externe et aux test de vérification d'état d'atteindre les instances backend. - Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés.
- Cochez la case à côté de TCP, puis saisissez
8080
. - Cochez la case à côté de UDP.
- Cochez la case à côté de Autres, puis saisissez
esp, 58
.
- Cochez la case à côté de TCP, puis saisissez
- Cliquez sur Créer. L'affichage de la nouvelle règle de pare-feu dans la console peut prendre un certain temps. Vous devrez peut-être cliquer sur Actualiser pour qu'elle apparaisse.
gcloud
Pour permettre au trafic TCP IPv4 d'atteindre les backends du groupe d'instances
ig-us-tcp-80
, créez la règle de pare-feu suivante :gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv4 \ --network=lb-network \ --target-tags network-lb-tcp-80 \ --allow tcp:80 \ --source-ranges=0.0.0.0/0
Pour permettre au trafic IPv4 UDP, ESP et ICMP d'atteindre les backends du groupe d'instances
ig-us-l3-default
, créez la règle de pare-feu suivante : Cette règle de pare-feu permet également aux tests de vérification d'état TCP d'atteindre les instances sur le port 8080.gcloud compute firewall-rules create allow-network-lb-l3-default-ipv4 \ --network=lb-network \ --target-tags network-lb-l3-default \ --allow tcp:8080,udp,esp,icmp \ --source-ranges=0.0.0.0/0
Pour permettre au trafic TCP IPv6 d'atteindre les backends du groupe d'instances
ig-us-tcp-80
, créez la règle de pare-feu suivante :gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv6 \ --network=lb-network \ --target-tags network-lb-tcp-80 \ --allow tcp:80 \ --source-ranges=::/0
Pour permettre au trafic IPv6 UDP, ESP et ICMPv6 d'atteindre les backends du groupe d'instances
ig-us-l3-default
, créez la règle de pare-feu suivante : Cette règle de pare-feu permet également aux tests de vérification d'état TCP d'atteindre les instances sur le port 8080.gcloud compute firewall-rules create allow-network-lb-l3-default-ipv6 \ --network=lb-network \ --target-tags network-lb-l3-default \ --allow tcp:8080,udp,esp,58 \ --source-ranges=::/0
Configurer les équilibreurs de charge
Configurez ensuite deux équilibreurs de charge. Configurez les deux équilibreurs de charge pour qu'ils utilisent la même adresse IP externe pour les règles de transfert, où l'un d'eux gère le trafic TCP sur le port 80 et l'autre le trafic TCP, UDP, ESP et ICMP sur le port 8080.
Lorsque vous configurez un équilibreur de charge, vos instances de VM backend reçoivent des paquets destinés à l'adresse IP externe statique configurée. Si vous utilisez une image fournie par Compute Engine, vos instances sont automatiquement configurées pour gérer cette adresse IP. Si vous utilisez une autre image, vous devez configurer cette adresse en tant qu'alias sur eth0
ou en tant qu'adresse de rebouclage sur chaque instance.
Pour configurer deux équilibreurs de charge, suivez les instructions ci-dessous.
Console
Démarrer la configuration
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
- Cliquez sur Créer un équilibreur de charge.
- Sous Type d'équilibreur de charge, sélectionnez Équilibreur de charge réseau (TCP/UDP/SSL), puis cliquez sur Suivant.
- Pour Proxy ou passthrough, sélectionnez Équilibreur de charge passthrough, puis cliquez sur Suivant.
- Pour Public ou interne, sélectionnez Public (externe), puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
- Dans le champ Nom, saisissez le nom
backend-service-tcp-80
pour le nouvel équilibreur de charge. - Dans la liste Région, sélectionnez
us-central1
.
Configuration du backend
- Cliquez sur Configuration du backend.
- Sur l'écran Configuration du backend, apportez les modifications suivantes :
- Dans la section Nouveau backend, sélectionnez le type de pile IP. Si vous avez créé des backends de pile double pour gérer le trafic IPv4 et IPv6, sélectionnez IPv4 et IPv6 (double pile). Pour ne gérer que le trafic IPv4, sélectionnez IPv4 (pile unique).
- Dans la liste Groupe d'instances, sélectionnez
ig-us-tcp-80
, puis cliquez sur Terminé. - Dans la liste Vérification d'état, cliquez sur Créer une vérification d'état, puis saisissez les informations suivantes :
- Nom :
tcp-health-check-80
- Protocole :
TCP
- Port :
80
- Nom :
- Cliquez sur Enregistrer.
- Vérifiez qu'une coche bleue apparaît à côté de Configuration du backend avant de continuer.
Configuration de l'interface
- Cliquez sur Configuration de l'interface.
- Dans le champ Nom, saisissez
forwarding-rule-tcp-80
. - Pour gérer le trafic IPv4, procédez comme suit :
- Pour Version IP, sélectionnez IPv4.
- Dans la section Objectif de l'adresse IP interne, dans la liste Adresse IP, sélectionnez Créer une adresse IP.
- Dans le champ Nom, saisissez
network-lb-ipv4
. - Cliquez sur Réserver.
- Dans le champ Nom, saisissez
- Dans le champ Ports, sélectionnez Unique. Dans le champ Numéro de port, saisissez
80
. - Cliquez sur OK.
Pour gérer le trafic IPv6, procédez comme suit :
- Pour Version IP, sélectionnez IPv6.
- Pour le Sous-réseau, sélectionnez lb-subnet.
- Dans la liste Plage IPv6, sélectionnez Créer une adresse IP.
- Dans le champ Nom, saisissez
network-lb-ipv6
. - Cliquez sur Réserver.
- Dans le champ Nom, saisissez
- Dans le champ Ports, sélectionnez Unique. Dans le champ Numéro de port, saisissez
80
. - Cliquez sur OK.
Si un cercle bleu avec une coche s'affiche à gauche de Configuration du frontend, cela indique que la configuration a réussi.
Vérifier la configuration
- Cliquez sur Vérifier et finaliser.
- Vérifiez les paramètres de configuration de votre équilibreur de charge.
- Facultatif : cliquez sur Code équivalent pour afficher la requête API REST qui sera utilisée pour créer l'équilibreur de charge.
Cliquez sur Créer.
Sur l'écran Équilibrage de charge, sous la colonne Backend qui concerne votre nouvel équilibreur de charge, vous devriez voir une coche verte indiquant que celui-ci est opérationnel.
Créer le deuxième équilibreur de charge
Démarrer la configuration
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
- Cliquez sur Créer un équilibreur de charge.
- Sous Type d'équilibreur de charge, sélectionnez Équilibreur de charge réseau (TCP/UDP/SSL), puis cliquez sur Suivant.
- Pour Proxy ou passthrough, sélectionnez Équilibreur de charge passthrough, puis cliquez sur Suivant.
- Pour Public ou interne, sélectionnez Public (externe), puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
- Dans le champ Nom, saisissez le nom
backend-service-l3-default
pour le nouvel équilibreur de charge. - Dans la liste Région, sélectionnez
us-central1
.
Configuration du backend
- Cliquez sur Configuration du backend.
- Sur l'écran Configuration du backend, apportez les modifications suivantes :
- Dans la section Nouveau backend, sélectionnez le type de pile IP. Si vous avez créé des backends de pile double pour gérer le trafic IPv4 et IPv6, sélectionnez IPv4 et IPv6 (double pile). Pour ne gérer que le trafic IPv4, sélectionnez IPv4 (pile unique).
- Dans la liste Groupe d'instances, sélectionnez
ig-us-l3-default
, puis cliquez sur Terminé. - Dans la liste Protocoles, sélectionnez L3 (plusieurs protocoles).
- Dans la liste Vérification d'état, cliquez sur Créer une vérification d'état, puis saisissez les informations suivantes :
- Nom :
tcp-health-check-8080
- Protocole :
TCP
- Port :
8080
- Nom :
- Cliquez sur Enregistrer.
- Vérifiez qu'une coche bleue apparaît à côté de Configuration du backend avant de continuer.
Configuration de l'interface
- Cliquez sur Configuration de l'interface.
- Dans le champ Nom, saisissez
forwarding-rule-l3-default
. - Pour gérer le trafic IPv4, procédez comme suit :
- Pour Version IP, sélectionnez IPv4.
- Dans la section Objectif de l'adresse IP interne, dans la liste Adresse IP, sélectionnez Créer une adresse IP.
- Dans le champ Nom, saisissez
network-lb-ipv4
. - Cliquez sur Réserver.
- Dans le champ Nom, saisissez
- Dans la liste Protocole, sélectionnez L3 (plusieurs protocoles).
- Dans Ports, sélectionnez Tous.
- Cliquez sur OK.
Pour gérer le trafic IPv6, procédez comme suit :
- Pour Version IP, sélectionnez IPv6.
- Pour le Sous-réseau, sélectionnez lb-subnet.
- Dans la liste Plage IPv6, sélectionnez Créer une adresse IP.
- Dans le champ Nom, saisissez
network-lb-ipv6
. - Cliquez sur Réserver.
- Dans le champ Nom, saisissez
- Dans le champ Protocole, sélectionnez L3 (plusieurs protocoles).
- Pour Ports, sélectionnez Tous.
- Cliquez sur OK.
Si un cercle bleu avec une coche s'affiche à gauche de Configuration du frontend, cela indique que la configuration a réussi.
Vérifier la configuration
- Cliquez sur Vérifier et finaliser.
- Vérifiez les paramètres de configuration de votre équilibreur de charge.
- Facultatif : cliquez sur Code équivalent pour afficher la requête API REST qui sera utilisée pour créer l'équilibreur de charge.
Cliquez sur Créer.
Sur l'écran Équilibrage de charge, sous la colonne Backend qui concerne votre nouvel équilibreur de charge, vous devriez voir une coche verte indiquant que celui-ci est opérationnel.
gcloud
Réservez une adresse IP externe statique.
Pour le trafic IPv4 : créez une adresse IP externe statique pour vos équilibreurs de charge.
gcloud compute addresses create network-lb-ipv4 \ --region us-central1
Pour le trafic IPv6 : créez une plage d'adresses IPv6 externe statique pour vos équilibreurs de charge. Le sous-réseau utilisé doit être un sous-réseau à double pile avec une plage de sous-réseau IPv6 externe.
gcloud compute addresses create network-lb-ipv6 \ --region us-central1 \ --subnet lb-subnet \ --ip-version IPV6 \ --endpoint-type NETLB
Créez une vérification d'état TCP pour le port
80
. Cette vérification d'état permet de vérifier l'état des backends dans le groupe d'instancesig-us-tcp-80
.gcloud compute health-checks create tcp tcp-health-check-80 \ --region us-central1 \ --port 80
Créez une vérification d'état TCP pour le port
8080
. Cette vérification d'état permet de vérifier l'état des backends dans le groupe d'instancesig-us-l3-default
.gcloud compute health-checks create tcp tcp-health-check-8080 \ --region us-central1 \ --port 8080
Créez le premier équilibreur de charge pour le trafic TCP sur le port
80
.Créez le service de backend avec le protocole défini sur
TCP
.gcloud compute backend-services create backend-service-tcp-80 \ --protocol TCP \ --health-checks tcp-health-check-80 \ --health-checks-region us-central1 \ --region us-central1
Ajoutez le groupe d'instances backend au service de backend.
gcloud compute backend-services add-backend backend-service-tcp-80 \ --instance-group ig-us-tcp-80 \ --instance-group-zone us-central1-a \ --region us-central1
Pour le trafic IPv4 : créez une règle de transfert pour acheminer le trafic TCP entrant sur le port
80
vers le service de backend.TCP
est le protocole de règle de transfert par défaut. Il n'a pas besoin d'être défini explicitement.Utilisez l'adresse IP réservée à l'étape 1 comme adresse IP externe statique de l'équilibreur de charge.
gcloud compute forwarding-rules create forwarding-rule-tcp-80 \ --load-balancing-scheme external \ --region us-central1 \ --ports 80 \ --address network-lb-ipv4 \ --backend-service backend-service-tcp-80
Pour le trafic IPv6 : créez une règle de transfert pour acheminer le trafic TCP entrant sur le port
80
vers le service de backend.TCP
est le protocole de règle de transfert par défaut. Il n'a pas besoin d'être défini explicitement.Utilisez la plage d'adresses IPv6 réservée à l'étape 1 comme adresse IP externe statique de l'équilibreur de charge. Le sous-réseau utilisé doit être un sous-réseau à double pile avec une plage de sous-réseau IPv6 externe.
gcloud compute forwarding-rules create forwarding-rule-tcp-80 \ --load-balancing-scheme external \ --region us-central1 \ --network-tier PREMIUM \ --ip-version IPV6 \ --subnet lb-subnet \ --address network-lb-ipv6 \ --ports 80 \ --backend-service backend-service-tcp-80
Créez le deuxième équilibreur de charge pour le trafic TCP sur le port
8080
, ainsi que le trafic UDP, ESP et ICMP.Créez le service de backend avec le protocole défini sur
UNSPECIFIED
.gcloud compute backend-services create backend-service-l3-default \ --protocol UNSPECIFIED \ --health-checks tcp-health-check-8080 \ --health-checks-region us-central1 \ --region us-central1
Ajoutez le groupe d'instances backend au service de backend.
gcloud compute backend-services add-backend backend-service-l3-default \ --instance-group ig-us-l3-default \ --instance-group-zone us-central1-c \ --region us-central1
Pour le trafic IPv4 : créez une règle de transfert en définissant le protocole sur
L3_DEFAULT
pour gérer le trafic de tous les protocoles IP compatibles restants (TCP sur le port8080
, UDP, ESP et ICMP). Tous les ports doivent être configurés avec des règles de transfertL3_DEFAULT
.Utilisez la même adresse IPv4 externe que celle utilisée pour l'équilibreur de charge précédent.
gcloud compute forwarding-rules create forwarding-rule-l3-default \ --load-balancing-scheme external \ --region us-central1 \ --ports all \ --ip-protocol L3_DEFAULT \ --address network-lb-ipv4 \ --backend-service backend-service-l3-default
Pour le trafic IPv6 : créez une règle de transfert en définissant le protocole sur
L3_DEFAULT
pour gérer le trafic de tous les protocoles IP compatibles restants (TCP sur le port8080
, UDP, ESP et ICMP). Tous les ports doivent être configurés avec des règles de transfertL3_DEFAULT
.Utilisez la plage d'adresses IPv6 réservée à l'étape 1 comme adresse IP externe statique de l'équilibreur de charge. Le sous-réseau utilisé doit être un sous-réseau à double pile avec une plage de sous-réseau IPv6 externe.
gcloud compute forwarding-rules create forwarding-rule-l3-default \ --load-balancing-scheme external \ --region us-central1 \ --network-tier PREMIUM \ --ip-version IPV6 \ --subnet lb-subnet \ --address network-lb-ipv6 \ --ports all \ --ip-protocol L3_DEFAULT \ --backend-service backend-service-l3-default
Tester l'équilibreur de charge
Maintenant que le service d'équilibrage de charge est configuré, vous pouvez commencer à envoyer le trafic vers l'adresse IP externe de l'équilibreur de charge et surveiller le trafic qui est distribué aux instances backend.
Rechercher l'adresse IP externe de l'équilibreur de charge
Console
- Sur la page Équilibrage de charge avancé, accédez à l'onglet Règles de transfert.
Accéder à l'onglet Règles de transfert - Localisez les règles de transfert utilisées par l'équilibreur de charge.
- Dans la colonne Adresse IP, notez l'adresse IP externe répertoriée pour chaque règle de transfert IPv4 et IPv6.
gcloud: IPv4
Saisissez la commande suivante pour afficher l'adresse IP externe de la règle de transfert utilisée par l'équilibreur de charge.
gcloud compute forwarding-rules describe forwarding-rule-tcp-80 \ --region us-central1
Dans cet exemple, nous utilisons la même adresse IPv4 pour les deux règles de transfert. Vous pouvez donc utiliser forwarding-rule-l3-default
.
gcloud: IPv6
Saisissez la commande suivante pour afficher l'adresse IPv6 externe de la règle de transfert forwarding-rule-tcp-80
utilisée par l'équilibreur de charge.
gcloud compute forwarding-rules describe forwarding-rule-tcp-80 \ --region us-central1
Dans cet exemple, nous utilisons la même adresse IP pour les deux règles de transfert IPv6. Vous pouvez donc utiliser forwarding-rule-l3-default
.
Envoyer du trafic vers l'équilibreur de charge
Cette procédure envoie le trafic externe à l'équilibreur de charge. Exécutez les tests suivants pour vous assurer que le trafic TCP sur le port 80 est équilibré en charge par le groupe d'instances ig-us-tcp-80
, tandis que le reste du trafic (TCP sur le port 8080, UDP, ESP et ICMP) est géré par le groupe d'instances ig-us-l3-default
.
Vérifier le comportement avec des requêtes TCP sur le port 80
Envoyez des requêtes Web (via TCP sur le port 80) à l'équilibreur de charge à l'aide de
curl
pour contacter son adresse IP.À partir de clients disposant d'une connectivité IPv4, exécutez la commande suivante:
$ while true; do curl -m1 IP_ADDRESS; done
À partir de clients disposant d'une connectivité IPv6, exécutez la commande suivante:
$ while true; do curl -m1 http://IPV6_ADDRESS; done
Par exemple, si l'adresse IPv6 attribuée est
[2001:db8:1:1:1:1:1:1/96]
, la commande doit se présenter comme suit :$ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]; done
Notez le texte renvoyé par la commande
curl
. Le nom de la VM de backend qui génère la réponse est affiché dans ce texte, par exemple :Page served from: VM_NAME
. Les réponses ne doivent provenir que des instances du groupe d'instancesig-us-tcp-80
.En cas d'échec au début de la phase de réponse, il vous faudra probablement patienter environ 30 secondes pour que la configuration soit entièrement chargée et que vos instances soient identifiées comme saines avant de réessayer :
Vérifier le comportement avec des requêtes TCP sur le port 8080
Envoyez des requêtes Web (via TCP sur le port 8080
) à l'équilibreur de charge à l'aide de curl
pour contacter son adresse IP.
À partir de clients disposant d'une connectivité IPv4, exécutez la commande suivante:
$ while true; do curl -m1 IPV4_ADDRESS:8080; done
À partir de clients disposant d'une connectivité IPv6, exécutez la commande suivante:
$ while true; do curl -m1 http://IPV6_ADDRESS; done
Par exemple, si l'adresse IPv6 attribuée est
[2001:db8:1:1:1:1:1:1/96]
, la commande doit se présenter comme suit:$ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]:8080; done
Notez le texte renvoyé par la commande curl
. Les réponses ne doivent provenir que des instances du groupe d'instances ig-us-l3-default
.
Cela montre que tout le trafic envoyé à l'adresse IP de l'équilibreur de charge sur le port 8080
n'est traité que par les backends du groupe d'instances ig-us-l3-default
.
Vérifier le comportement avec des requêtes ICMP
Pour vérifier le comportement avec le trafic ICMP, vous devez capturer la sortie de la commande tcpdump
pour confirmer que seules les VM de backend du groupe d'instances ig-us-l3-default
gèrent les requêtes ICMP envoyées à l'équilibreur de charge.
Connectez-vous en SSH aux VM de backend.
Dans Google Cloud Console, accédez à la page Instances de VM.
Accéder à la page Instances de VMDans la liste des instances de machines virtuelles, cliquez sur SSH sur la ligne de l'instance à laquelle vous souhaitez vous connecter.
Exécutez la commande suivante pour utiliser
tcpdump
afin de commencer à écouter le trafic ICMP.sudo tcpdump icmp -w ~/icmpcapture.pcap -s0 -c 10000 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Laissez la fenêtre SSH ouverte.
Répétez les étapes 1 et 2 pour les quatre VM de backend.
Envoyez des requêtes ICMP à l'équilibreur de charge.
Pour tester les réponses IPv4, utilisez
ping
pour contacter l'adresse IPv4 de l'équilibreur de charge.ping IPV4_ADDRESS
Pour tester les réponses IPv6, utilisez
ping6
pour contacter l'adresse IPv6 de l'équilibreur de charge.ping6 IPV6_ADDRESS
Par exemple, si l'adresse IPv6 attribuée est
[2001:db8:1:1:1:1:1:1/96]
, la commande doit se présenter comme suit:ping6 2001:db8:1:1:1:1:1:1
Revenez à la fenêtre SSH de chaque VM et arrêtez la commande de capture
tcpdump
. Pour cela, vous pouvez utiliser Ctrl+C.Pour chaque VM, vérifiez la sortie de la commande
tcpdump
dans le fichiericmpcapture.pcap
.sudo tcpdump -r ~/icmpcapture.pcap -n
Pour les VM de backend du groupe d'instances
ig-us-l3-default
, les entrées de fichier doivent s'afficher comme suit :reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet) 22:13:07.814486 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 1, length 64 22:13:07.814513 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 1, length 64 22:13:08.816150 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 2, length 64 22:13:08.816175 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 2, length 64 22:13:09.817536 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 3, length 64 22:13:09.817560 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 3, length 64 ...
Pour les VM de backend du groupe d'instances
ig-us-tcp-80
, vous devez constater qu'aucun paquet n'a été reçu et que le fichier doit être vide :reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet)
Options de configuration supplémentaires
Créer une règle de transfert IPv6 avec BYOIP
L'équilibreur de charge créé lors des étapes précédentes a été configuré avec des règles de transfert avec IP version
comme IPv4
ou IPv6
. Cette section fournit des instructions pour créer une règle de transfert IPv6 avec des adresses BYOIP (Bring Your Own IP).
Les adresses BYOIP (Bring your own IP) vous permettent de provisionner et d'utiliser vos propres adresses IPv6 publiques pour les ressources Google Cloud. Pour en savoir plus, consultez la section Utiliser vos propres adresses IP.
Avant de commencer à configurer une règle de transfert IPv6 avec des adresses BYOIP, vous devez suivre les étapes suivantes:
- Créer un préfixe IPv6 annoncé publiquement
- Créer des préfixes délégués publics
- Créer des sous-préfixes IPv6
- Annoncer le préfixe
Pour créer une règle de transfert, procédez comme suit:
Console
Dans la console Google Cloud, accédez à la page Équilibrage de charge.
- Cliquez sur le nom de l'équilibreur de charge que vous souhaitez modifier.
- Cliquez sur Modifier ( ).
- Cliquez sur Frontend configuration (Configuration du frontend).
- Cliquez sur Ajouter une adresse IP et un port frontend.
- Dans la section Nouveaux IP et port frontend, spécifiez les éléments suivants:
- Le protocole est TCP.
- Dans le champ Version IP, sélectionnez IPv6.
- Dans le champ Source de la plage IPv6, sélectionnez BYOIP.
- Dans la liste Collection d'adresses IP, sélectionnez un sous-préfixe créé aux étapes précédentes avec l'option de règle de transfert activée.
- Dans le champ Plage IPv6, saisissez la plage d'adresses IPv6. La plage d'adresses IPv6 doit respecter les spécifications des sous-préfixes IPv6.
- Dans le champ Ports, saisissez un numéro de port.
- Cliquez sur OK.
- Cliquez sur Ajouter une adresse IP et un port frontend.
- Dans la section Nouveaux IP et port frontend, spécifiez les éléments suivants:
- Le protocole est L3 (plusieurs protocoles).
- Dans le champ Version IP, sélectionnez IPv6.
- Dans le champ Source de la plage IPv6, sélectionnez BYOIP.
- Dans la liste Collection d'adresses IP, sélectionnez un sous-préfixe créé aux étapes précédentes avec l'option de règle de transfert activée.
- Dans le champ Plage IPv6, saisissez la plage d'adresses IPv6. La plage d'adresses IPv6 doit respecter les spécifications des sous-préfixes IPv6.
- Dans le champ Ports, sélectionnez Tous.
- Cliquez sur OK.
- Cliquez sur Mettre à jour.
Google Cloud CLI
Créez la règle de transfert à l'aide de la
commande gcloud compute forwarding-rules create
:
gcloud compute forwarding-rules create FWD_RULE_NAME \ --load-balancing-scheme EXTERNAL \ --ip-protocol L3_DEFAULT \ --ports ALL \ --ip-version IPV6 \ --region REGION_A \ --address IPV6_CIDR_RANGE \ --backend-service BACKEND_SERVICE \ --ip-collection PDP_NAME
Créez la règle de transfert à l'aide de la
commande gcloud compute forwarding-rules create
:
gcloud compute forwarding-rules create FWD_RULE_NAME \ --load-balancing-scheme EXTERNAL \ --ip-protocol PROTOCOL \ --ports ALL \ --ip-version IPV6 \ --region REGION_A \ --address IPV6_CIDR_RANGE \ --backend-service BACKEND_SERVICE \ --ip-collection PDP_NAME
Remplacez les éléments suivants :
FWD_RULE_NAME
: nom de la règle de transfert.REGION_A
: région de la règle de transfert.IPV6_CIDR_RANGE
: plage d'adresses IPv6 utilisée par la règle de transfert. La plage d'adresses IPv6 doit respecter les spécifications des sous-préfixes IPv6.BACKEND_SERVICE
: nom du service de backendPDP_NAME
: nom du préfixe délégué public. Le PDP doit être un sous-préfixe en mode EXTERNAL_IPV6_FORWARDING_RULE_CREATION.
Étape suivante
- Pour configurer un équilibreur de charge réseau passthrough externe avec des backends de NEG zonaux qui vous permettent de transférer des paquets vers des interfaces réseau non-
nic0
d'instances de VM, consultez la page Configurer un équilibreur de charge réseau passthrough externe avec des NEG zonaux. - Pour en savoir plus sur le fonctionnement des équilibreurs de charge réseau passthrough externes, consultez la page Présentation de l'équilibreur de charge réseau passthrough externe basé sur un service de backend.
- Pour découvrir comment passer d'un équilibreur de charge réseau passthrough externe depuis un backend de pool cible vers un service de backend régional, consultez la page Migrer des équilibreurs de charge réseau passthrough externes depuis des pools cibles vers des services de backend.
- Pour configurer la protection DDoS avancée du réseau pour un équilibreur de charge réseau passthrough externe à l'aide de Google Cloud Armor, consultez la section Configurer la protection DDoS avancée du réseau.
- Pour supprimer des ressources, consultez la page Nettoyer la configuration de l'équilibreur de charge.