Un équilibreur de charge réseau proxy externe régional est un équilibreur de charge régional de couche 4, basé sur un proxy, qui vous permet d'exécuter un service basé sur TCP, et d'effectuer le scaling du trafic associé à celui-ci, dans une seule région derrière une adresse IP régionale externe. Ces équilibreurs de charge distribuent le trafic TCP externe depuis Internet vers les backends de la même région.
Ce guide contient des instructions pour configurer un équilibreur de charge réseau proxy externe régional avec un backend de groupe de points de terminaison du réseau (NEG, Network Endpoint Group) zonal.
Avant de commencer, consultez les documents suivants :
Dans cet exemple, nous allons utiliser l'équilibreur de charge pour répartir le trafic TCP entre les VM de backend de deux NEG zonaux de la région us-west1
. Pour les besoins de cet exemple, le service est un ensemble de serveurs Apache configurés pour répondre sur le port 80
.
Dans cet exemple, vous configurez le déploiement présenté dans le schéma suivant.
Il s'agit d'un équilibreur de charge régional. Tous les composants de l'équilibreur de charge (groupe d'instances backend, service de backend, proxy cible et règle de transfert) doivent se trouver dans la même région.
Autorisations
Pour suivre ce guide, vous devez savoir comment créer des instances et modifier un réseau dans un projet. Vous devez être propriétaire ou éditeur du projet, ou disposer de tous les rôles IAM Compute Engine suivants.
Tâche | Rôle requis |
---|---|
Créer des réseaux, des sous-réseaux et des composants de l'équilibreur de charge | Administrateur de réseaux Compute (roles/compute.networkAdmin ) |
Ajouter et supprimer des règles de pare-feu | Administrateur de sécurité de Compute (roles/compute.securityAdmin ) |
Créer des instances | Administrateur d'instances Compute
(roles/compute.instanceAdmin ) |
Pour en savoir plus, consultez les guides suivants :
Configurer le réseau et les sous-réseaux
Vous avez besoin d'un réseau VPC avec deux sous-réseaux : un pour les backends de l'équilibreur de charge et l'autre pour les proxys de l'équilibreur de charge. Il s'agit d'un équilibreur de charge régional. Le trafic au sein du réseau VPC est acheminé vers l'équilibreur de charge si la source du trafic se trouve dans un sous-réseau dans la même région que l'équilibreur de charge.
Cet exemple utilise le réseau VPC, la région et les sous-réseaux suivants :
Réseau : un réseau VPC en mode personnalisé nommé
lb-network
Sous-réseau pour les backends : un sous-réseau nommé
backend-subnet
dans la régionus-west1
qui utilise10.1.2.0/24
pour sa plage d'adresses IP principaleSous-réseau pour les proxys : un sous-réseau nommé
proxy-only-subnet
dans la régionus-west1
qui utilise10.129.0.0/23
pour sa plage d'adresses IP principale
Créer le réseau et le sous-réseau pour les backends
Console
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, procédez comme suit :
- Définissez Mode de création du sous-réseau sur Personnalisé.
- Dans la section Nouveau sous-réseau, saisissez les informations suivantes :
- Nom :
backend-subnet
- Région :
us-west1
- Plage d'adresses IP :
10.1.2.0/24
- Nom :
- Cliquez sur OK.
Cliquez sur Créer.
gcloud
Pour créer un réseau VPC personnalisé, utilisez la commande
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Pour créer un sous-réseau sur le réseau
lb-network
, dans la régionus-west1
, utilisez la commandegcloud compute networks subnets create
:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
Créer le sous-réseau proxy réservé
Un sous-réseau proxy réservé fournit un ensemble d'adresses IP utilisées par Google pour exécuter des proxys Envoy en votre nom. Les proxys interrompent les connexions du client et créent de nouvelles connexions vers les backends.
Ce sous-réseau proxy réservé est utilisé par tous les équilibreurs de charge basés sur Envoy dans la région us-west1
du réseau VPC lb-network
.
Console
Si vous utilisez la console Google Cloud, vous pouvez créer le sous-réseau proxy réservé ultérieurement sur la page Équilibrage de charge.
Si vous souhaitez créer le sous-réseau proxy réservé maintenant, procédez comme suit :
Dans Google Cloud Console, accédez à la page Réseaux VPC.
Cliquez sur le nom du réseau VPC partagé :
lb-network
.Cliquez sur Ajouter un sous-réseau.
Dans le champ Nom, saisissez
proxy-only-subnet
.Pour Région, sélectionnez
us-west1
.Définissez le champ Objectif sur Proxy géré régional.
Dans Plage d'adresses IP, saisissez
10.129.0.0/23
.Cliquez sur Ajouter.
gcloud
Pour créer le sous-réseau proxy réservé, utilisez la commande gcloud compute networks subnets
create
:
gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-west1 \ --network=lb-network \ --range=10.129.0.0/23
Créer des règles de pare-feu
Dans cet exemple, vous devez créer les règles de pare-feu suivantes :
fw-allow-health-check
. Une règle d'entrée, applicable aux instances Google Cloud soumises à l'équilibrage de charge, qui autorise le trafic provenant de l'équilibreur de charge et des systèmes de vérification d'état de Google Cloud (130.211.0.0/22
et35.191.0.0/16
). Cet exemple utilise le tag cibleallow-health-check
pour identifier les VM de backend auxquelles il doit s'appliquer.fw-allow-ssh
. Une règle d'entrée qui autorise la connectivité SSH entrante sur le port TCP22
à 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 des systèmes à partir desquels 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-proxy-only-subnet
. Une règle de pare-feu d'entréeallow
pour le sous-réseau proxy réservé qui permet à l'équilibreur de charge de communiquer avec les instances backend sur le port TCP80
. Cet exemple utilise le tag cibleallow-proxy-only-subnet
pour identifier les VM de backend auxquelles la règle doit s'appliquer.
Console
Dans la console Google Cloud, accédez à la page Règles d'administration.
Cliquez sur Créer une règle de pare-feu, puis renseignez les champs suivants :
- Nom :
fw-allow-health-check
- Réseau :
lb-network
- 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 :
- Choisissez Protocoles et ports spécifiés.
- Cochez la case TCP, puis saisissez
80
pour le numéro de port.
- Nom :
Cliquez sur Créer.
Cliquez une deuxième fois sur Créer une règle de pare-feu pour créer la règle autorisant les connexions SSH entrantes :
- Nom :
fw-allow-ssh
- Réseau :
lb-network
- Priorité :
1000
- Sens du trafic : entrée
- Action en cas de correspondance : autoriser
- Cibles : Tags cibles spécifiés
- Tags cibles :
allow-ssh
- Filtre source : Plages IPv4
- Plages IPv4 sources :
0.0.0.0/0
- Protocoles et ports :
- Choisissez Protocoles et ports spécifiés.
- Cochez la case TCP, puis saisissez
22
pour le numéro de port.
- Nom :
Cliquez sur Créer.
Cliquez une troisième fois sur Créer une règle de pare-feu pour créer la règle autorisant les connexions entrantes depuis le sous-réseau proxy réservé vers les backends Google Cloud :
- Nom :
fw-allow-proxy-only-subnet
- 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-proxy-only-subnet
- Filtre source : Plages IPv4
- Plages IPv4 sources :
10.129.0.0/23
- Protocoles et ports :
- Choisissez Protocoles et ports spécifiés.
- Cochez la case TCP, puis saisissez
80
pour le numéro de port.
- Nom :
Cliquez sur Créer.
gcloud
Créez la règle
fw-allow-health-check
pour autoriser les vérifications d'état Google Cloud à atteindre les instances backend sur le port TCP80
:gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80
Créez la règle de pare-feu
fw-allow-ssh
pour autoriser la connectivité SSH aux VM avec le tag réseauallow-ssh
. Lorsque vous omettezsource-ranges
, Google Cloud interprète la règle comme désignant n'importe quelle source.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Créez une règle de pare-feu autorisant le trafic entrant pour le sous-réseau proxy réservé afin de permettre à l'équilibreur de charge de communiquer avec les instances backend sur le port TCP
80
:gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-proxy-only-subnet \ --source-ranges=10.129.0.0/23 \ --rules=tcp:80
Réserver l'adresse IP de l'équilibreur de charge
Console
Dans la console Google Cloud, accédez à la page Réserver une adresse statique.
Choisissez un nom pour la nouvelle adresse.
Définissez le Niveau de service réseau sur Standard.
Pour Version IP, sélectionnez IPv4. Les adresses IPv6 ne sont pas compatibles.
Pour le Type, sélectionnez Régional.
Pour Région, sélectionnez
us-west1
.Laissez l'option Associé à définie sur Aucun. Une fois l'équilibreur de charge créé, cette adresse IP sera associée à la règle de transfert de l'équilibreur de charge.
Cliquez sur Réserver pour réserver l'adresse IP.
gcloud
Pour réserver une adresse IP externe statique, utilisez la commande
gcloud compute addresses create
:gcloud compute addresses create ADDRESS_NAME \ --region=us-west1 \ --network-tier=STANDARD
Remplacez
ADDRESS_NAME
par le nom que vous souhaitez donner à cette adresse.Pour afficher le résultat, utilisez la commande
gcloud compute addresses describe
:gcloud compute addresses describe ADDRESS_NAME
Configurer le NEG zonal
Configurez un NEG zonal avec des points de terminaison de type GCE_VM_IP_PORT
dans la région us-west1
. Commencez par créer les VM, puis créez un NEG zonal et ajoutez les points de terminaison du réseau des VM au NEG.w
Créer des VM
Console
Dans la console Google Cloud, accédez à la page Instances de VM.
Cliquez sur Créer une instance.
Pour Nom, définissez
vm-a1
.Pour Région, sélectionnez
us-west1
.Pour Zone, sélectionnez
us-west1-a
.Dans la section Disque de démarrage, assurez-vous que les options sélectionnées sont Debian pour le système d'exploitation et 10 (Buster) pour la version. Si nécessaire, cliquez sur Sélectionner pour modifier l'image.
Cliquez sur Options avancées.
Cliquez sur Mise en réseau, puis configurez les champs suivants :
- Pour Tags réseau, saisissez
allow-ssh
,allow-health-check
etallow-proxy-only-subnet
. - Pour Interfaces réseau, sélectionnez l'option suivante :
- Réseau :
lb-network
- Sous-réseau :
backend-subnet
- Réseau :
- Pour Tags réseau, saisissez
Cliquez sur Gestion. Saisissez 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 Créer.
Répétez les étapes précédentes pour créer trois autres VM. Utilisez les combinaisons de noms et de zones suivantes :
- Nom :
vm-a2
| Zone :us-west1-a
- Nom :
vm-c1
| Zone :us-west1-c
- Nom :
vm-c2
| Zone :us-west1-c
- Nom :
gcloud
Pour créer les VM, utilisez la commande gcloud compute instances create
deux fois. Utilisez les combinaisons suivantes pour VM_NAME
et ZONE
. Le contenu du script est identique pour les deux VM :
VM_NAME
:vm-a1
etZONE
:us-west1-a
VM_NAME
:vm-a2
etZONE
:us-west1-a
VM_NAME
:vm-c1
etZONE
:us-west1-c
VM_NAME
:vm-c2
etZONE
:us-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --subnet=backend-subnet \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y 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éer les NEG zonaux
Console
Créer un groupe de points de terminaison du réseau zonal
Dans la console Google Cloud, accédez à la page Groupes de points de terminaison du réseau.
Accéder à la page Groupes de points de terminaison du réseau
Cliquez sur Créer un groupe de points de terminaison du réseau.
Dans le champ Nom, saisissez
zonal-neg-a
.Pour le type de groupe de points de terminaison du réseau, sélectionnez Groupe de points de terminaison du réseau (zonal).
Pour Réseau, sélectionnez
lb-network
.Pour Sous-réseau, sélectionnez
backend-subnet
.Pour Zone, sélectionnez
us-west1-a
.Pour le port par défaut, saisissez
80
.Cliquez sur Créer.
Répétez toutes les étapes de cette section pour créer un deuxième NEG zonal avec les modifications suivantes dans les paramètres :
- Nom :
zonal-neg-c
- Zone :
us-west1-c
- Nom :
Ajouter des points de terminaison aux NEG zonaux
Dans la console Google Cloud, accédez à la page Groupes de points de terminaison du réseau.
Accéder à la page Groupes de points de terminaison du réseau
Cliquez sur le nom du groupe de points de terminaison du réseau que vous avez créé à l'étape précédente (par exemple,
zonal-neg-a
).Dans la section Points de terminaison du réseau de ce groupe de la page Détails du groupe de points de terminaison du réseau, cliquez sur Ajouter un point de terminaison du réseau.
Sélectionnez une instance de VM (par exemple,
vm-a1
).Dans la section Interface réseau, le nom, la zone et le sous-réseau de la VM s'affichent.
- Dans le champ Adresse IP, saisissez l'adresse IP du nouveau point de terminaison du réseau. Pour obtenir l'adresse IP, cliquez sur Vérifier les adresses IP principales et la plage d'adresses IP d'alias dans nic0.
- Pour Type de port, sélectionnez Par défaut. Le point de terminaison utilise le port par défaut
80
pour tous les points de terminaison du groupe de points de terminaison du réseau. Cela est suffisant pour notre exemple, car le serveur Apache diffuse les requêtes au port80
. - Cliquez sur Créer.
Cliquez sur Ajouter un point de terminaison du réseau. Sélectionnez la deuxième instance de VM
vm-a2
, puis répétez les étapes précédentes pour ajouter ses points de terminaison àzonal-neg-a
.Répétez toutes les étapes de cette section pour ajouter des points de terminaison de
vm-c1
etvm-c2
àzonal-neg-c
.
gcloud
Créez un NEG zonal dans la zone
us-west1-a
avec des points de terminaisonGCE_VM_IP_PORT
:gcloud compute network-endpoint-groups create zonal-neg-a \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=us-west1-a \ --network=lb-network \ --subnet=backend-subnet
Vous pouvez spécifier le paramètre
--default-port
lors de la création du NEG ou spécifier un numéro de port pour chaque point de terminaison, comme indiqué à l'étape suivante.Ajoutez des points de terminaison au NEG zonal :
gcloud compute network-endpoint-groups update zonal-neg-a \ --zone=us-west1-a \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'
Créez un NEG zonal dans la zone
us-west1-c
avec des points de terminaisonGCE_VM_IP_PORT
:gcloud compute network-endpoint-groups create zonal-neg-c \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=us-west1-c \ --network=lb-network \ --subnet=backend-subnet
Vous pouvez spécifier le paramètre
--default-port
lors de la création du NEG ou spécifier un numéro de port pour chaque point de terminaison, comme indiqué à l'étape suivante.Ajoutez des points de terminaison au NEG zonal :
gcloud compute network-endpoint-groups update zonal-neg-c \ --zone=us-west1-c \ --add-endpoint='instance=vm-c1,port=80' \ --add-endpoint='instance=vm-c2,port=80'
Configurer l'équilibreur de charge
Console
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 proxy, puis cliquez sur Suivant.
- Pour Public ou interne, sélectionnez Public (externe), puis cliquez sur Suivant.
- Pour Déploiement global ou dans une seule région, sélectionnez Recommandé pour les charges de travail régionales, puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
- Dans le champ Nom, saisissez
my-ext-tcp-lb
. - Pour Région, sélectionnez
us-west1
. - Pour Réseau, sélectionnez
lb-network
.
Réserver un sous-réseau proxy réservé
- Cliquez sur Réserver un sous-réseau.
- Dans le champ Nom, saisissez
proxy-only-subnet
. - Dans Plage d'adresses IP, saisissez
10.129.0.0/23
. - Cliquez sur Ajouter.
Configurer les backends
- Cliquez sur Configuration du backend.
- Pour le type de backend, sélectionnez Groupe de points de terminaison du réseau zonal.
- Dans le champ Protocole, sélectionnez TCP.
- Configurez le premier backend :
- Pour le Nouveau backend, sélectionnez un NEG zonal
zonal-neg-a
. - Conservez les valeurs par défaut restantes, puis cliquez sur OK.
- Pour le Nouveau backend, sélectionnez un NEG zonal
- Configurez le deuxième backend :
- Cliquez sur Ajouter un backend.
- Dans le champ Nouveau backend, sélectionnez le groupe d'instances
zonal-neg-c
. - Conservez les valeurs par défaut restantes, puis cliquez sur OK.
- Configurez la vérification d'état :
- Dans la section Health check (Vérification d'état), sélectionnez Create a health check (Créer une vérification d'état).
- Définissez le nom de la vérification d'état sur
tcp-health-check
. - Dans le champ Protocole, sélectionnez TCP.
- Dans la section Port, saisissez
80
.
- Conservez les valeurs par défaut restantes, puis cliquez sur Enregistrer.
- Dans la console Google Cloud, vérifiez qu'une coche apparaît à côté de Configuration du backend. Si ce n'est pas le cas, vérifiez que vous avez bien suivi la procédure ci-dessous dans son intégralité.
Configurer l'interface
- Cliquez sur Configuration de l'interface.
- Dans le champ Nom, saisissez
ext-tcp-forwarding-rule
. - Pour Sous-réseau, sélectionnez
backend-subnet
. - Pour Adresse IP, sélectionnez
ext-tcp-ip-address
. - Pour Numéro de port, saisissez
9090
. La règle de transfert transfère les paquets avec un port de destination correspondant. - Dans le champ Protocole de proxy, sélectionnez Désactivé, car le protocole PROXY ne fonctionne pas avec le logiciel Apache HTTP Server. Pour en savoir plus, consultez la section Protocole de PROXY.
- Cliquez sur OK.
- Dans Google Cloud Console, vérifiez qu'une coche apparaît à côté de Configuration du frontend. Dans le cas contraire, vérifiez que vous avez bien suivi la procédure ci-dessus dans son intégralité.
Vérifier et finaliser
- Cliquez sur Vérification et finalisation.
- Vérifiez vos paramètres.
- Cliquez sur Create (Créer).
gcloud
Créez une vérification d'état régionale pour les backends :
gcloud compute health-checks create tcp tcp-health-check \ --region=us-west1 \ --use-serving-port
Créez un service de backend :
gcloud compute backend-services create external-tcp-proxy-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --region=us-west1 \ --health-checks=tcp-health-check \ --health-checks-region=us-west1
Ajoutez le NEG zonal dans la zone
us-west1-a
au service de backend :gcloud compute backend-services add-backend external-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-a \ --network-endpoint-group-zone=us-west1-a \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=us-west1
Ajoutez le NEG zonal dans la zone
us-west1-c
au service de backend :gcloud compute backend-services add-backend external-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-c \ --network-endpoint-group-zone=us-west1-c \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=us-west1
Créez le proxy TCP cible :
gcloud compute target-tcp-proxies create ext-tcp-target-proxy \ --backend-service=external-tcp-proxy-bs \ --region=us-west1
Créez la règle de transfert. Pour
--ports
, spécifiez un seul numéro de port compris entre 1 et 65 535. Cet exemple utilise le port9090
. La règle de transfert transfère les paquets avec un port de destination correspondant.gcloud compute forwarding-rules create ext-tcp-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --address=ext-tcp-ip-address \ --ports=9090 \ --region=us-west1 \ --target-tcp-proxy=ext-tcp-target-proxy \ --target-tcp-proxy-region=us-west1
Tester votre équilibreur de charge
Maintenant que vous avez configuré votre équilibreur de charge, vous pouvez commencer à envoyer du trafic vers son adresse IP.
Obtenez l'adresse IP de l'équilibreur de charge.
Pour obtenir l'adresse IPv4, exécutez la commande suivante :
gcloud compute addresses describe ADDRESS_NAME
Envoyez du trafic à votre équilibreur de charge en exécutant la commande suivante. Remplacez
LB_IP_ADDRESS
par l'adresse IPv4 de votre équilibreur de charge.curl -m1 LB_IP_ADDRESS:9090
Étapes suivantes
- Pour en savoir plus sur le fonctionnement des équilibreurs de charge réseau proxy externes, consultez la page Présentation de l'équilibreur de charge réseau proxy externe.
- Pour configurer la journalisation et la surveillance de votre équilibreur de charge, consultez la page Journalisation et surveillance de l'équilibreur de charge réseau proxy.
- Pour savoir comment ajouter un backend Private Service Connect à un équilibreur de charge réseau proxy externe, consultez la page Ajouter un backend Private Service Connect.
- Pour supprimer les ressources que vous avez créées afin qu'elles ne vous soient plus facturées à l'avenir, consultez la section Nettoyer la configuration de l'équilibreur de charge.