Cette page fournit des instructions pour créer des équilibreurs de charge réseau passthrough internes afin d'équilibrer la charge du trafic de plusieurs protocoles.
Pour configurer un équilibreur de charge pour plusieurs protocoles, y compris TCP et UDP, vous devez créer une règle de transfert avec le 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 un équilibreur de charge réseau passthrough interne pour distribuer le trafic sur une VM de backend dans la région us-west1
. L'équilibreur de charge dispose d'une règle de transfert avec le protocole L3_DEFAULT
pour gérer les flux TCP, UDP, ICMP, ICMPv6, SCTP, ESP, AH et GRE.
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. - Obtenez plus d'informations sur bash.
Autorisations
Pour obtenir les autorisations nécessaires pour suivre ce guide, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :
- Pour créer des ressources d'équilibreur de charge : Administrateur de l'équilibreur de charge Compute (
roles/compute.loadBalancerAdmin
) - Pour créer des instances et des groupes d'instances Compute Engine : Administrateur d'instances Compute (
roles/compute.instanceAdmin.v1
) - Pour créer des composants réseau : Administrateur de réseaux Compute (
roles/compute.networkAdmin
)
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Configurer l'équilibreur de charge pour le trafic L3_DEFAULT
Les étapes de cette section décrivent les configurations suivantes :
- Exemple utilisant un réseau VPC en mode personnalisé nommé
lb-network
. Vous pouvez utiliser un réseau en mode automatique si vous souhaitez uniquement gérer le trafic IPv4. Cependant, le trafic IPv6 requiert un sous-réseau en mode personnalisé. - Un sous-réseau à pile unique (
stack-type
défini surIPv4
) qui est requis pour le trafic IPv4. Lorsque vous créez un sous-réseau à pile unique sur un réseau VPC en mode personnalisé, vous choisissez une plage de sous-réseau IPv4 pour le sous-réseau. Pour le trafic IPv6, nous demandons également un sous-réseau à double pile (stack-type
défini surIPv4_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ètreipv6-access-type
du sous-réseau surINTERNAL
. Cela signifie que les nouvelles VM de ce sous-réseau peuvent se voir attribuer des adresses IPv4 internes et des adresses IPv6 internes. - Des règles de pare-feu autorisant les connexions entrantes aux VM de backend.
- Le groupe d'instances backend 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-west1
- 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).
- Région :
- Une VM de backend dans un groupe d'instances géré dans la zone
us-west1-a
. - Une VM cliente pour tester les connexions aux backends.
- Un équilibreur de charge réseau passthrough interne avec les composants suivants :
- Vérification d'état du service de backend
- Un service de backend dans la région
us-west1
avec le protocole défini surUNSPECIFIED
pour gérer la distribution des connexions vers le groupe d'instances zonal. - Une règle de transfert avec le protocole défini sur
L3_DEFAULT
et le port défini surALL
.
Configurer un réseau, une région et un sous-réseau
Pour configurer des sous-réseaux avec des plages IPv6 internes, activez une plage IPv6 interne ULA du réseau cloud privé virtuel (VPC). Les plages de sous-réseaux IPv6 internes sont allouées à partir de cette plage. Pour créer le réseau et les sous-réseaux d'exemple, procédez comme suit :
Console
Pour assurer la compatibilité avec le trafic IPv4 et IPv6, procédez comme suit:
Dans Google Cloud Console, accédez à la page Réseaux VPC.
Cliquez sur Créer un réseau VPC.
Dans le champ Nom, saisissez
lb-network
.Si vous souhaitez configurer des plages d'adresses IPv6 internes sur les sous-réseaux de ce réseau, procédez comme suit :
- Dans le champ Plage IPv6 interne ULA du réseau VPC, sélectionnez Activée.
- Dans le champ Allouer une plage IPv6 interne, sélectionnez Automatiquement ou Manuellement.
Dans le champ Mode de création de sous-réseau, sélectionnez Personnalisé.
Dans la section Nouveau sous-réseau, spécifiez les paramètres de configuration de sous-réseau suivants :
- Dans le champ Nom, saisissez
lb-subnet
. - Pour Région, sélectionnez
us-west1
. - Pour créer un sous-réseau à double pile, sélectionnez IPv4 et IPv6 (double pile) dans le champ Type de pile d'adresses IP.
- Dans Plage IPv4, saisissez
10.1.2.0/24
. - Dans le champ Type d'accès IPv6, sélectionnez Interne.
- Dans le champ Nom, saisissez
Cliquez sur OK.
Cliquez sur Créer.
Pour assurer la compatibilité avec le trafic IPv4, procédez comme suit :
Dans Google Cloud Console, accédez à la page Réseaux VPC.
Cliquez sur Créer un réseau VPC.
Dans le champ Nom, saisissez
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
- Type de pile IP : IPv4 (pile unique)
- Plage d'adresses IP :
10.1.2.0/24
- Nom :
- Cliquez sur OK.
Cliquez sur Créer.
gcloud
Pour le trafic IPv4 et IPv6, utilisez les commandes suivantes :
Pour créer un réseau VPC en mode personnalisé, exécutez la commande
gcloud compute networks create
.Pour configurer des plages IPv6 internes sur n'importe quel sous-réseau de ce réseau, utilisez l'option
--enable-ula-internal-ipv6
. Cette option attribue un préfixe ULA/48
compris dans la plagefd20::/20
utilisée par Google Cloud pour les plages de sous-réseaux IPv6 internes.gcloud compute networks create lb-network \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Au sein de
lb-network
, créez un sous-réseau pour les backends dans la régionus-west1
.Pour créer les sous-réseaux, exécutez la commande
gcloud compute networks subnets create
:gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1 \ --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL
Pour le trafic IPv4 uniquement, utilisez les commandes suivantes :
Pour créer un réseau VPC personnalisé, utilisez la
gcloud compute networks create
commande :gcloud compute networks create lb-network --subnet-mode=custom
Pour créer le sous-réseau des backends dans la région
us-west1
du réseaulb-network
, utilisez la commandegcloud compute networks subnets create
.gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
API
Pour le trafic IPv4 et IPv6, utilisez les commandes suivantes :
Créez un réseau VPC en mode personnalisé. Envoyez une requête
POST
à la méthodenetworks.insert
.Pour configurer les plages IPv6 internes sur n'importe quel sous-réseau de ce réseau, définissez
enableUlaInternalIpv6
surtrue
. Cette option attribue une plage/48
comprise dans la plagefd20::/20
utilisée par Google pour les plages de sous-réseaux IPv6 internes.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "lb-network", "mtu": MTU, "enableUlaInternalIpv6": true, }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet où le réseau VPC a été créé.MTU
: unité de transmission maximale du réseau. La MTU peut être de1460
(par défaut) ou de1500
. Consultez la page Présentation de l'unité de transmission maximale avant de définir la MTU sur1500
.
Envoyez une requête
POST
à la méthodesubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "10.1.2.0/24", "network": "lb-network", "name": "lb-subnet" "stackType": IPV4_IPV6, "ipv6AccessType": Internal }
Pour le trafic IPv4 uniquement, suivez les étapes suivantes :
Envoyez une requête
POST
à la méthodenetworks.insert
. RemplacezPROJECT_ID
par l'ID de votre projet Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "name": "lb-network", "autoCreateSubnetworks": false }
Envoyez deux requêtes
POST
à la méthodesubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "privateIpGoogleAccess": false }
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 le trafic provenant de sources dans les plages10.1.2.0/24
. Cette règle autorise le trafic entrant de n'importe quel client situé dans le sous-réseau.fw-allow-lb-access-ipv6
: règle d'entrée, applicable à toutes les cibles du réseau VPC, autorisant le trafic provenant de sources de la plage IPv6 configurée dans le sous-réseau. Cette règle autorise le trafic IPv6 entrant de n'importe quel client situé dans le sous-réseau.fw-allow-ssh
: règle d'entrée, applicable aux instances faisant l'objet d'un équilibrage de charge, qui autorise la connectivité SSH entrante sur le port TCP 22 à partir de n'importe quelle adresse. Vous pouvez choisir une plage d'adresses IP sources plus restrictive pour cette règle. Par exemple, vous pouvez spécifier uniquement les plages d'adresses IP du système à partir duquel vous souhaitez lancer des sessions SSH. Cet exemple utilise le tag cibleallow-ssh
pour identifier les VM auxquelles la règle doit s'appliquer.fw-allow-health-check
: règle d'entrée, applicable aux instances faisant l'objet d'un équilibrage de charge, qui autorise le trafic issu des systèmes de vérification d'état Google Cloud (130.211.0.0/22
et35.191.0.0/16
). Cet exemple utilise le tag cibleallow-health-check
pour identifier les instances auxquelles la règle doit s'appliquer.fw-allow-health-check-ipv6
: règle d'entrée, applicable aux instances faisant l'objet d'un équilibrage de charge, qui autorise le trafic issu des systèmes de vérification d'état Google Cloud (2600:2d00:1:b029::/64
). Cet exemple utilise le tag cibleallow-health-check-ipv6
pour identifier les instances 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.
Pour autoriser le trafic TCP, UDP et ICMP IPv4 à atteindre le groupe d'instances backend
ig-a
, procédez comme suit :- Cliquez sur Créer une règle de pare-feu.
- 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 : sélectionnez Protocoles et ports spécifiés.
- Sélectionnez TCP et saisissez
ALL
. - Sélectionnez UDP.
- Sélectionnez Autre et saisissez
ICMP
.
- Sélectionnez TCP et saisissez
Cliquez sur Créer.
Pour autoriser les connexions SSH entrantes :
- Cliquez sur Créer une règle de pare-feu.
- 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 : sélectionnez Protocoles et ports spécifiés, puis saisissez
tcp:22
.
Cliquez sur Créer.
Pour autoriser le trafic TCP, UDP et ICMP IPv6 à atteindre le groupe d'instances backend
ig-a
, procédez comme suit :- Cliquez sur Créer une règle de pare-feu.
- Nom :
fw-allow-lb-access-ipv6
- 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 IPv6
- Plages IPv6 sources : adresse IPV6_ADDRESS attribuée dans
lb-subnet
- Protocoles et ports : sélectionnez Protocoles et ports spécifiés.
- Sélectionnez TCP et saisissez
0-65535
. - Sélectionnez UDP.
- SélectionnerAutre et pour le protocole ICMPv6, saisissez
58
.
- Sélectionnez TCP et saisissez
Cliquez sur Créer.
Pour autoriser les vérifications d'état IPv6 de Google Cloud, procédez comme suit :
- Cliquez sur Créer une règle de pare-feu.
- Nom :
fw-allow-health-check-ipv6
- 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-ipv6
- Filtre source : Plages IPv6
- Plages IPv6 sources :
2600:2d00:1:b029::/64
- Protocoles et ports : tout autoriser
Cliquez sur Créer.
Pour autoriser les vérifications d'état IPv4 de Google Cloud, procédez comme suit :
- Cliquez sur Créer une règle de pare-feu.
- 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
Cliquez sur Create (Créer).
gcloud
Pour permettre au trafic TCP IPv4 d'atteindre le groupe d'instances backend
ig-a
, créez la règle suivante :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 une règle de pare-feu
fw-allow-ssh
pour autoriser la connectivité SSH aux VM en utilisant 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
Pour permettre au trafic IPv6 d'atteindre le groupe d'instances backend
ig-a
, créez la règle suivante :gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=IPV6_ADDRESS \ --rules=all
Remplacez
IPV6_ADDRESS
par l'adresse IPv6 attribuée danslb-subnet
.Créez la règle de pare-feu
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éez la règle
fw-allow-health-check-ipv6
pour autoriser les vérifications d'état IPv6 Google Cloud.gcloud compute firewall-rules create fw-allow-health-check-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64 \ --rules=tcp,udp,icmp
API
Pour créer la règle de pare-feu
fw-allow-lb-access
, envoyez une requêtePOST
à la méthodefirewalls.insert
. RemplacezPROJECT_ID
par l'ID de votre projet Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "10.1.2.0/24" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Créez la règle de pare-feu
fw-allow-lb-access-ipv6
en envoyant une requêtePOST
à la méthodefirewalls.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "IPV6_ADDRESS" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "58" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Remplacez IPV6_ADDRESS par l'adresse IPv6 attribuée dans
lb-subnet
.Pour créer la règle de pare-feu
fw-allow-ssh
, envoyez une requêtePOST
à la méthodefirewalls.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-ssh", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "0.0.0.0/0" ], "targetTags": [ "allow-ssh" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Pour créer la règle de pare-feu
fw-allow-health-check
, envoyez une requêtePOST
à la méthodefirewalls.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "allow-health-check" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Créez la règle de pare-feu
fw-allow-health-check-ipv6
en envoyant une requêtePOST
à la méthodefirewalls.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "2600:2d00:1:b029::/64" ], "targetTags": [ "allow-health-check-ipv6" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Créer des VM de backend et des groupes d'instances
Dans ce scénario d'équilibrage de charge, vous allez créer un groupe d'instances géré zonal Compute Engine et installer un serveur Web Apache.
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, INTERNAL
) 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 interne : règles de transfert.
Si vous souhaitez utiliser des VM existantes comme backends, mettez-les à jour en pile double en utilisant 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 internes doivent exécuter l'environnement invité Linux, l'environnement invité Windows ou d'autres processus appropriés présentant des fonctionnalités équivalentes.
Pour plus de simplicité, les VM de backend exécutent Debian GNU/Linux 10.
Créer le groupe d'instances
Console
Pour assurer la compatibilité avec le trafic IPv4 et IPv6, procédez comme suit:
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
vm-a1
. - 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 Mise en réseau.
- Pour Tags réseau, ajoutez
allow-ssh
etallow-health-check-ipv6
. - Pour Interfaces réseau, cliquez sur l'interface default et configurez les champs suivants :
- Réseau :
lb-network
- Sous-réseau :
lb-subnet
- Type de pile d'adresses IP: IPv4 et IPv6 (double pile)
- Réseau :
- Pour Tags réseau, ajoutez
Cliquez sur Créer.
Pour assurer la compatibilité avec le trafic IPv4, procédez comme suit :
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
vm-a1
. - 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 Mise en réseau.
- Pour Tags réseau, ajoutez
allow-ssh
etallow-health-check
. - Pour Interfaces réseau, cliquez sur l'interface default et configurez les champs suivants :
- Réseau :
lb-network
- Sous-réseau :
lb-subnet
- Type de pile IP : IPv4 (pile unique)
- 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-a
. - Pour Emplacement, sélectionnez Zone unique.
- Pour la région, sélectionnez
us-west1
. - Pour la zone, sélectionnez
us-west1-a
. - Pour Modèle d'instance, sélectionnez
vm-a1
. 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 vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=allow-ssh \ --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 vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=allow-ssh \ --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-a \ --zone us-west1-a \ --size 2 \ --template vm-a1
api
Pour gérer le trafic IPv4 et IPv6, suivez les étapes suivantes :
Créez une VM en envoyant des requêtes
POST
à la méthodeinstances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check-ipv6", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4_IPV6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Pour gérer le trafic IPv4, procédez comme suit :
Créez une VM en envoyant des requêtes
POST
à la méthodeinstances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Créez un groupe d'instance en envoyant une requête
POST
à la méthodeinstanceGroups.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups { "name": "ig-a", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
Ajoutez des instances à chaque groupe d'instances en envoyant une requête
POST
à la méthodeinstanceGroups.addInstances
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a/addInstances { "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1" } ] }
Créer une VM cliente
Cet exemple crée une VM cliente 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.
Pour le trafic IPv4 et IPv6 :
Console
Dans la console Google Cloud, accédez à la page Instances de VM.
Cliquez sur Créer une instance.
Définissez le paramètre Nom sur
vm-client-ipv6
.Définissez le paramètre Zone sur
us-west1-a
.Cliquez sur Gestion, sécurité, disques, mise en réseau et location unique et apportez les modifications suivantes :
- Cliquez sur Mise en réseau et ajoutez
allow-ssh
aux tags réseau. - Sous Interfaces réseau, cliquez sur Modifier, apportez les modifications suivantes, puis cliquez sur OK :
- Réseau :
lb-network
- Sous-réseau :
lb-subnet
- Type de pile d'adresses IP: IPv4 et IPv6 (double pile)
- 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-ipv6 \ --zone=us-west1-a \ --image-family=debian-10 \ --image-project=debian-cloud \ --stack-type=IPV4_IPV6 \ --tags=allow-ssh \ --subnet=lb-subnet
api
Envoyez une requête POST
à la méthode instances.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances { "name": "vm-client-ipv6", "tags": { "items": [ "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4_IPV6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-client", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-image-name", "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "scheduling": { "preemptible": false }, "deletionProtection": false }
Pour le trafic IPv4.
Console
Dans la console Google Cloud, accédez à la page Instances de VM.
Cliquez sur Créer une instance.
Dans le champ Nom, saisissez
vm-client
.Dans le champ Zone, saisissez
us-west1-a
.Cliquez sur Options avancées.
Cliquez sur Mise en réseau et configurez les champs suivants :
- Pour Tags réseau, saisissez
allow-ssh
. - Pour Interfaces réseau, sélectionnez l'option suivante :
- Réseau :
lb-network
- Sous-réseau :
lb-subnet
- Réseau :
- Pour Tags réseau, saisissez
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-10 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=lb-subnet
API
Envoyez une requête POST
à la méthode instances.insert
.
Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances { "name": "vm-client", "tags": { "items": [ "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-client", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-image-name", "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "scheduling": { "preemptible": false }, "deletionProtection": false }
Configurer les composants de l'équilibreur de charge
Créer un équilibreur de charge pour plusieurs protocoles
gcloud
Créez une vérification d'état HTTP pour le port 80. Cette vérification d'état permet de vérifier l'état des backends dans le groupe d'instances
ig-a
.gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Créez le service de backend avec le protocole défini sur
UNSPECIFIED
:gcloud compute backend-services create be-ilb-l3-default \ --load-balancing-scheme=internal \ --protocol=UNSPECIFIED \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Ajoutez le groupe d'instances backend au service de backend :
gcloud compute backend-services add-backend be-ilb-l3-default \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Pour le trafic IPv6 : créez une règle de transfert en définissant le protocole sur
L3_DEFAULT
pour gérer tout le trafic IPv6 compatible. Tous les ports doivent être configurés avec des règles de transfertL3_DEFAULT
.gcloud compute forwarding-rules create fr-ilb-ipv6 \ --region=us-west1 \ --load-balancing-scheme=internal \ --subnet=lb-subnet \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1 \ --ip-version=IPV6
Pour le trafic IPv4 : créez une règle de transfert en définissant le protocole sur
L3_DEFAULT
pour gérer tout le trafic IPv4 compatible. Tous les ports doivent être configurés avec des règles de transfertL3_DEFAULT
. Utilisez10.1.2.99
comme adresse IP interne.gcloud compute forwarding-rules create fr-ilb-l3-default \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1
API
Créez la vérification d'état en envoyant une requête
POST
à la méthoderegionHealthChecks.insert
. RemplacezPROJECT_ID
par l'ID de votre projet Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks { "name": "hc-http-80", "type": "HTTP", "httpHealthCheck": { "port": 80 } }
Créez le service de backend régional en envoyant une requête
POST
à la méthoderegionBackendServices.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-l3-default", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UNSPECIFIED", "connectionDraining": { "drainingTimeoutSec": 0 } }
Pour le trafic IPv6 : créez la règle de transfert en envoyant une requête
POST
à la méthodeforwardingRules.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-ipv6", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "ipVersion": "IPV6", "networkTier": "PREMIUM" }
Pour le trafic IPv4 : créez la règle de transfert en envoyant une requête
POST
à la méthodeforwardingRules.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-l3-default", "IPAddress": "10.1.2.99", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "networkTier": "PREMIUM" }
Tester votre équilibreur de charge
Les tests suivants montrent comment valider la configuration de votre équilibreur de charge et permettent d'en savoir plus sur son comportement attendu.
Tester la connexion depuis la VM cliente
Ce test contacte l'équilibreur de charge à partir d'une VM cliente distincte (autre qu'une VM de backend de l'équilibreur de charge).
gcloud : IPv6
Connectez-vous à l'instance de VM cliente.
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
Décrivez la règle de transfert IPv6
fr-ilb-ipv6
. Notez l'élémentIPV6_ADDRESS
dans la description.gcloud compute forwarding-rules describe fr-ilb-ipv6 --region=us-west1
À partir de clients disposant d'une connectivité IPv6, exécutez la commande suivante. Remplacez
IPV6_ADDRESS
par l'adresse IPv6 éphémère dans la règle de transfertfr-ilb-ipv6
.curl -m 10 -s http://IPV6_ADDRESS:80
Par exemple, si l'adresse IPv6 attribuée est
[fd20:1db0:b882:802:0:46:0:0/96]:80
, la commande doit se présenter comme suit :curl -m 10 -s http://[fd20:1db0:b882:802:0:46:0:0]:80
gcloud : IPv4
Connectez-vous à l'instance de VM cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Décrivez la règle de transfert IPv4
fr-ilb
.gcloud compute forwarding-rules describe fr-ilb --region=us-west1
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
.curl http://10.1.2.99
La règle de transfert est configurée pour desservir les ports
80
et53
. Pour envoyer du trafic vers ces ports, ajoutez deux points (:
) et le numéro de port après l'adresse IP, comme ceci :curl http://10.1.2.99:80
Pinguer l'adresse IP de l'équilibreur de charge
Ce test illustre un comportement attendu : vous ne pouvez pas pinguer l'adresse IP de l'équilibreur de charge.
gcloud : IPv6
Connectez-vous à l'instance de VM cliente.
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
Essayez de pinguer l'adresse IPv6 de l'équilibreur de charge. Remplacez
IPV6_ADDRESS
par l'adresse IPv6 éphémère dans la règle de transfertfr-ilb-ipv6
.Notez que vous obtenez une réponse et que la commande
ping
fonctionne dans cet exemple.ping6 IPV6_ADDRESS
Par exemple, si l'adresse IPv6 attribuée est
[2001:db8:1:1:1:1:1:1/96]
, la commande est la suivante :ping6 2001:db8:1:1:1:1:1:1
Le résultat ressemble à ce qui suit :
@vm-client: ping
IPV6_ADDRESS
PINGIPV6_ADDRESS
(IPV6_ADDRESS
) 56(84) bytes of data. 64 bytes fromIPV6_ADDRESS
: icmp_seq=1 ttl=64 time=1.58 ms
gcloud : IPv4
Connectez-vous à l'instance de VM cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Essayez de pinguer l'adresse IPv4 de l'équilibreur de charge. Notez que vous obtenez une réponse et que la commande
ping
fonctionne dans cet exemple.ping 10.1.2.99
Le résultat est le suivant :
@vm-client: ping 10.1.2.99 PING 10.1.2.99 (10.1.2.99) 56(84) bytes of data. 64 bytes from 10.1.2.99: icmp_seq=1 ttl=64 time=1.58 ms 64 bytes from 10.1.2.99: icmp_seq=2 ttl=64 time=0.242 ms 64 bytes from 10.1.2.99: icmp_seq=3 ttl=64 time=0.295 ms
Options de configuration supplémentaires
Cette section développe l'exemple de configuration et propose d'autres options de configuration. Toutes les tâches décrites ici sont facultatives. Vous pouvez les exécuter dans n'importe quel ordre.
Vous pouvez réserver une adresse IP interne statique pour votre exemple. Cette configuration permet à plusieurs règles de transfert internes d'utiliser la même adresse IP avec différents protocoles et ports.
Les backends de votre exemple d'équilibreur de charge doivent toujours être situés dans une région us-west1
.
Le diagramme suivant montre l'architecture de cet exemple.
Vous pouvez également envisager d'utiliser les configurations de règles de transfert suivantes :
Règles de transfert avec plusieurs ports :
- Protocole
TCP
avec les ports80,8080
- Protocole
L3_DEFAULT
avec les portsALL
- Protocole
Règles de transfert avec tous les ports :
- Protocole
TCP
avec les portsALL
- Protocole
L3_DEFAULT
avec les portsALL
- Protocole
Réserver une adresse IPv4 interne statique
Réservez une adresse IP interne statique pour 10.1.2.99
et définissez l'option --purpose
sur SHARED_LOADBALANCER_VIP
. L'option --purpose
est obligatoire pour que de nombreuses règles de transfert puissent utiliser la même adresse IP interne.
gcloud
Exécutez la commande gcloud compute addresses create
:
gcloud compute addresses create internal-lb-ipv4 \ --region us-west1 \ --subnet lb-subnet \ --purpose SHARED_LOADBALANCER_VIP \ --addresses 10.1.2.99
API
Appelez la méthode addresses.insert
.
Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/addresses
Le corps de la requête doit inclure le type d'adresse (addressType
) avec la valeur INTERNAL
, le nom de l'adresse (name
) et le sous-réseau (subnetwork
) auquel appartient l'adresse IP. Vous devez spécifier address
en tant que 10.1.2.99
.
{ "addressType": "INTERNAL", "name": "internal-lb-ipv4", "subnetwork": "regions/us-west1/subnetworks/lb-subnet", "purpose": "SHARED_LOADBALANCER_VIP", "address": "10.1.2.99" }
Configurer les composants de l'équilibreur de charge
Configurez trois équilibreurs de charge avec les composants suivants :
- Le premier équilibreur de charge dispose d'une règle de transfert avec le protocole
TCP
et le port80
. Le trafic TCP arrivant à l'adresse IP interne sur le port80
est géré par la règle de transfertTCP
. - Le second équilibreur de charge possède une règle de transfert avec le protocole
UDP
et le port53
. Le trafic UDP arrivant à l'adresse IP interne sur le port53
est géré par la règle de transfertUDP
. - Le troisième équilibreur de charge dispose d'une règle de transfert avec le protocole
L3_DEFAULT
et le portALL
. Tout autre trafic qui ne correspond pas aux règles de transfertTCP
ouUDP
est géré par la règle de transfertL3_DEFAULT
. - Les trois équilibreurs de charge partagent la même adresse IP interne statique (
internal-lb-ipv4
) dans leurs règles de transfert.
Créer le premier équilibreur de charge
Créez le premier équilibreur de charge pour le trafic TCP sur le port 80
.
gcloud
Créez le service de backend pour le trafic TCP :
gcloud compute backend-services create be-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Ajoutez le groupe d'instances backend au service de backend :
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Créez une règle de transfert pour le service de backend. Utilisez l'adresse IP interne réservée statique (
internal-lb-ipv4
) pour l'adresse IP interne.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=be-ilb \ --backend-service-region=us-west1
API
Créez le service de backend régional en envoyant une requête
POST
à la méthoderegionBackendServices.insert
. RemplacezPROJECT_ID
par l'ID de votre projet Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "TCP", "connectionDraining": { "drainingTimeoutSec": 0 } }
Create the forwarding rule by making a
POST
request to theforwardingRules.insert
method:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb", "IPAddress": "internal-lb-ipv4", "IPProtocol": "TCP", "ports": [ "80" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb", "networkTier": "PREMIUM" }
Créer le deuxième équilibreur de charge
Créez le deuxième équilibreur de charge pour le trafic UDP sur le port 53
.
gcloud
Créez le service de backend avec le protocole défini sur
UDP
:gcloud compute backend-services create be-ilb-udp \ --load-balancing-scheme=internal \ --protocol=UDP \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Ajoutez le groupe d'instances backend au service de backend :
gcloud compute backend-services add-backend be-ilb-udp \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Créez une règle de transfert pour le service de backend. Utilisez l'adresse IP interne réservée statique (
internal-lb-ipv4
) pour l'adresse IP interne.gcloud compute forwarding-rules create fr-ilb-udp \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=UDP \ --ports=53 \ --backend-service=be-ilb-udp \ --backend-service-region=us-west1
API
Créez le service de backend régional en envoyant une requête
POST
à la méthoderegionBackendServices.insert
. RemplacezPROJECT_ID
par l'ID de votre projet Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-udp", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UDP", "connectionDraining": { "drainingTimeoutSec": 0 } }
Créez la règle de transfert en envoyant une requête
POST
à la méthodeforwardingRules.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-udp", "IPAddress": "internal-lb-ipv4", "IPProtocol": "UDP", "ports": [ "53" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-udp", "networkTier": "PREMIUM" }
Créer le troisième équilibreur de charge
Créez la règle de transfert du troisième équilibreur de charge pour utiliser l'adresse IP interne réservée statique.
gcloud
Créez la règle de transfert en définissant le protocole sur L3_DEFAULT
pour gérer tout le reste du trafic IPv4 compatible. Utilisez l'adresse IP interne réservée statique (internal-lb-ipv4
) comme adresse IP interne.
gcloud compute forwarding-rules create fr-ilb-l3-default \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1
API
Créez la règle de transfert en envoyant une requête POST
à la méthode forwardingRules.insert
.
Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-l3-default", "IPAddress": "internal-lb-ipv4", "IPProtocol": "L3_DEFAULT", "ports": [ "ALL" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "networkTier": "PREMIUM" }
Tester votre équilibreur de charge
Pour tester votre équilibreur de charge, suivez les étapes de la section précédente.
Étapes suivantes
- Pour en savoir plus sur les concepts importants, consultez la page Présentation de l'équilibreur de charge réseau passthrough interne.
- Pour apprendre à configurer le basculement, consultez la page Configurer le basculement pour l'équilibreur de charge réseau passthrough interne.
- Pour en savoir plus sur la configuration de Logging et Monitoring pour les équilibreurs de charge réseau passthrough internes, consultez la page Journalisation et surveillance de l'équilibreur de charge réseau passthrough interne.
- Consultez la section Dépanner les équilibreurs de charge réseau passthrough internes pour en savoir plus sur la procédure de dépannage.
- Nettoyer une configuration d'équilibrage de charge.