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 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 10 (Buster). Ces instructions utilisent des commandes uniquement disponibles dans Debian, comme
apt-get
. - Cliquez sur Mise en réseau, disques, sécurité, gestion, location unique.
Cliquez sur Gestion et 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
Cliquez sur Réseau.
- 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-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'
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-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'
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 10 (Buster). Ces instructions utilisent des commandes uniquement disponibles dans Debian, comme
apt-get
. - Cliquez sur Mise en réseau, disques, sécurité, gestion, location unique.
Cliquez sur Gestion et 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
Cliquez sur Réseau.
- 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-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 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-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 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
La prochaine étape consiste à configurer les équilibreurs de charge. Configurez un équilibreur de charge pour gérer le trafic TCP sur le port 80, et un autre pour gérer le trafic TCP sur le port 8080, ainsi que le trafic UDP, ESP et ICMP. Les deux équilibreurs de charge utilisent la même adresse IP externe avec leurs règles de transfert.
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.
Console
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-ipv4 \ --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-ipv6 \ --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-ipv4 \ --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-ipv6 \ --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-ipv4 \ --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-ipv4
.
gcloud: IPv6
Saisissez la commande suivante pour afficher l'adresse IPv6 externe de la règle de transfert forwarding-rule-tcp-80-ipv6
utilisée par l'équilibreur de charge.
gcloud compute forwarding-rules describe forwarding-rule-tcp-80-ipv6 \ --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-ipv6
.
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)
Étapes suivantes
- 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.