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 et d'effectuer le scaling de votre trafic de service TCP 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 d'instances géré (MIG).
Avant de commencer, consultez la présentation de l'équilibreur de charge réseau proxy externe.
Dans cet exemple, nous utilisons l'équilibreur de charge pour répartir le trafic TCP entre les VM de backend de deux groupes d'instances gérés zonaux dans la région A. Pour les besoins de cet exemple, le service est un ensemble de serveurs Apache configurés pour répondre sur le port 110
. De nombreux navigateurs n'autorisent pas le port 110
. La section consacrée aux tests utilise donc curl
.
Dans cet exemple, vous configurez le déploiement présenté dans le schéma suivant.
Un équilibreur de charge réseau proxy externe régional est 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. Cet équilibreur de charge est 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égion A 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égion B qui utilise10.129.0.0/23
pour sa plage d'adresses IP principale
Créer le réseau et les sous-réseaux
Console
Dans la console Google Cloud, 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 le Mode de création du sous-réseau sur Personnalisé.
Créez un sous-réseau pour les backends de l'équilibreur de charge. Dans la section Nouveau sous-réseau, saisissez les informations suivantes :
- Nom :
backend-subnet
- Région :
REGION_A
- 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égionREGION_A
, utilisez la commandegcloud compute networks subnets create
:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=REGION_A
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 A 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 la console Google Cloud, 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
REGION_A
.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=REGION_A \ --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-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 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 du système à partir duquel vous souhaitez lancer des sessions SSH. Cet exemple utilise le tag cibleallow-ssh
.fw-allow-health-check
: règle d'entrée, applicable aux instances faisant l'objet d'un équilibrage de charge, qui autorise tout le trafic TCP issu des systèmes de vérification d'état Google Cloud (dans130.211.0.0/22
et35.191.0.0/16
). Cet exemple utilise le tag cibleallow-health-check
.fw-allow-proxy-only-subnet
: règle d'entrée qui autorise les connexions provenant du sous-réseau proxy réservé à accéder aux backends.
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.
Les tags cibles définissent les instances backend. Sans les tags cibles, les règles de pare-feu s'appliquent à toutes les instances backend du réseau VPC. Lorsque vous créez les VM de backend, veillez à inclure les tags cibles spécifiés, comme décrit dans la section Créer un groupe d'instances géré.
Console
Dans la console Google Cloud, accédez à la page Règles d'administration.
Cliquez de nouveau sur Créer une règle de pare-feu pour créer la règle autorisant les connexions SSH entrantes. Remplissez les champs suivants :
- Nom :
fw-allow-ssh
- Réseau :
lb-network
- 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 deuxième fois sur Créer une règle de pare-feu pour créer la règle autorisant les vérifications d'état Google Cloud :
- Nom :
fw-allow-health-check
- Réseau :
lb-network
- 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 :
- Choisissez Protocoles et ports spécifiés.
- Cochez la case TCP, puis saisissez
80
pour le numéro de port.
Nous vous recommandons de limiter cette règle aux seuls protocoles et ports qui correspondent à ceux utilisés par votre vérification de l'état. Si vous utilisez
tcp:80
pour le protocole et le port, Google Cloud peut contacter vos VM via HTTP sur le port80
, mais pas via HTTPS sur le port443
.
- 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 serveurs proxy de l'équilibreur de charge à se connecter aux backends :
- Nom :
fw-allow-proxy-only-subnet
- Réseau :
lb-network
- 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
comme numéro de port.
- Nom :
Cliquez sur Créer.
gcloud
Créez la règle de pare-feu
fw-allow-ssh
pour autoriser la connectivité SSH aux VM avec le tag réseauallow-ssh
. Lorsque vous omettezsource-ranges
, Google Cloud interprète la règle comme désignant n'importe quelle source.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Créez la règle
fw-allow-health-check
pour autoriser les vérifications d'état Google Cloud. Cet exemple autorise tout le trafic TCP provenant des tests de vérification d'état. Toutefois, vous pouvez configurer un ensemble de ports plus restreint en fonction de vos besoins.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
Créez la règle
fw-allow-proxy-only-subnet
pour autoriser les proxys Envoy de la région à se connecter à vos backends. Définissez--source-ranges
sur les plages allouées de votre sous-réseau proxy réservé, dans cet exemple,10.129.0.0/23
.gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.129.0.0/23 \ --target-tags=allow-proxy-only-subnet \ --rules=tcp:80
Réserver l'adresse IP de l'équilibreur de charge
Réservez une adresse IP statique pour 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
REGION_A
.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=REGION_A \ --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
Créer un groupe d'instances géré
Cette section explique comment créer deux backends de groupe d'instances géré (MIG) dans la région A pour l'équilibreur de charge. Le MIG fournit des instances de VM exécutant les serveurs de backend Apache pour cet exemple. En règle générale, un équilibreur de charge réseau proxy externe régional n'est pas utilisé pour le trafic HTTP. Néanmoins, le logiciel Apache est couramment utilisé pour les tests.
Console
Créer un modèle d'instance
Dans Google Cloud Console, accédez à la page Modèles d'instances.
Cliquez sur Create instance template (Créer un modèle d'instance).
Dans le champ Nom, saisissez
ext-reg-tcp-proxy-backend-template
.Assurez-vous que le disque de démarrage est défini sur une image Debian, telle que Debian GNU/Linux 10 (Stretch). Ces instructions utilisent des commandes uniquement disponibles dans Debian, comme
apt-get
.Cliquez sur Options avancées.
Cliquez sur Mise en réseau et 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.
Créer un groupe d'instances géré
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Cliquez sur Créer un groupe d'instances.
Sélectionnez Nouveau groupe d'instances géré (sans état). Pour en savoir plus, consultez la page Créer un MIG avec des disques avec état.
Dans le champ Nom, saisissez
mig-a
.Pour Emplacement, sélectionnez Zone unique.
Pour Région, sélectionnez
REGION_A
.Pour Zone, sélectionnez
ZONE_A
.Pour Modèle d'instance, sélectionnez
ext-reg-tcp-proxy-backend-template
.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
Pour Mappage des ports, cliquez sur Ajouter un port.
- Pour nom du port, saisissez
tcp80
. - Pour Numéro de port, saisissez
80
.
- Pour nom du port, saisissez
Cliquez sur Créer.
Pour créer un deuxième groupe d'instances géré, répétez la procédure de création d'un groupe d'instances géré et utilisez les paramètres suivants :
- Nom :
mig-b
- Zone :
ZONE_B
Ne modifiez aucun autre paramètre.
- Nom :
gcloud
Les instructions Google Cloud CLI du présent guide supposent que vous utilisez Cloud Shell ou un autre environnement avec bash
installé.
Pour créer un modèle d'instance de VM avec le serveur HTTP, utilisez la commande
gcloud compute instance-templates create
:gcloud compute instance-templates create ext-reg-tcp-proxy-backend-template \ --region=REGION_A \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Créez un groupe d'instances géré dans la zone
ZONE_A
:gcloud compute instance-groups managed create mig-a \ --zone=ZONE_A \ --size=2 \ --template=ext-reg-tcp-proxy-backend-template
Créez un groupe d'instances géré dans la zone
ZONE_B
:gcloud compute instance-groups managed create mig-b \ --zone=ZONE_B \ --size=2 \ --template=ext-reg-tcp-proxy-backend-template
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 mondial 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
REGION_A
. - 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 Type de backend, sélectionnez Groupe d'instances.
- Dans le champ Protocole, sélectionnez TCP.
- Pour le Port nommé, saisissez
tcp80
. - Configurez le premier backend :
- Dans le champ Nouveau backend, sélectionnez le groupe d'instances
mig-a
. - Pour Numéros de ports, saisissez
80
. - Conservez les valeurs par défaut restantes, puis cliquez sur OK.
- Dans le champ Nouveau backend, sélectionnez le groupe d'instances
- Configurez le deuxième backend :
- Cliquez sur Ajouter un backend.
- Dans le champ Nouveau backend, sélectionnez le groupe d'instances
mig-b
. - Pour Numéros de ports, saisissez
80
. - 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.
- Définissez le paramètre Port sur
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-reg-tcp-forwarding-rule
. - Définissez le Niveau de service réseau sur Standard.
- Pour Adresse IP, sélectionnez l'adresse IP réservée précédemment : LB_IP_ADDRESS
- Pour Numéro de port, saisissez
110
. 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 la console Google Cloud, 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érifier et finaliser.
- Vérifiez les paramètres de configuration de votre équilibreur de charge.
- Facultatif : cliquez sur Code équivalent pour afficher la requête API REST qui est utilisée pour créer l'équilibreur de charge.
- Cliquez sur Créer.
gcloud
Créez une vérification d'état régionale :
gcloud compute health-checks create tcp tcp-health-check \ --region=REGION_A \ --use-serving-port
Créez un service de backend :
gcloud compute backend-services create ext-reg-tcp-proxy-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --port-name=tcp80 \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_A
Ajoutez des groupes d'instances au service de backend :
gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-a \ --instance-group-zone=ZONE_A \ --balancing-mode=UTILIZATION \ --max-utilization=0.8
gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-b \ --instance-group-zone=ZONE_B \ --balancing-mode=UTILIZATION \ --max-utilization=0.8
Créez un proxy TCP cible :
gcloud compute target-tcp-proxies create ext-reg-tcp-target-proxy \ --backend-service=ext-reg-tcp-proxy-bs \ --proxy-header=NONE \ --region=REGION_A
Si vous souhaitez activer l'en-tête de proxy, définissez le paramètre --proxy-header sur
PROXY_V1
au lieu deNONE
. Dans cet exemple, n'activez pas le protocole PROXY, car il ne fonctionne pas avec le logiciel Apache HTTP Server. Pour en savoir plus, consultez la section Protocole de PROXY.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 port110
. La règle de transfert transfère les paquets avec un port de destination correspondant.gcloud compute forwarding-rules create ext-reg-tcp-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --region=REGION_A \ --target-tcp-proxy=ext-reg-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A \ --address=LB_IP_ADDRESS \ --ports=110
Tester l'é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
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.
Activer l'affinité de session
L'exemple de configuration crée un service de backend sans affinité de session.
Ces procédures vous montrent comment mettre à jour un service de backend pour l'exemple d'équilibreur de charge créé précédemment afin que ce service utilise l'affinité basée sur les adresses IP client ou l'affinité basée sur les cookies générés.
Lorsque l'affinité basée sur les adresses IP client est activée, l'équilibreur de charge dirige les requêtes d'un client particulier toujours vers la même VM de backend, grâce à un hachage créé à partir de l'adresse IP du client et de l'adresse IP de l'équilibreur de charge (l'adresse IP interne d'une règle de transfert interne).
Pour activer l'affinité de session basée sur les adresses IP client, procédez comme suit :
Console
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
Cliquez sur Backends.
Cliquez sur
ext-reg-tcp-proxy-bs
(nom du service de backend que vous avez créé pour cet exemple), puis sur Modifier.Sur la page Détails du service backend, cliquez sur Configuration avancée.
Sous Affinité de session, sélectionnez IP client.
Cliquez sur Mettre à jour.
gcloud
Pour mettre à jour le service de backend ext-reg-tcp-proxy-bs
et spécifier l'affinité de session basée sur les adresses IP client, utilisez la commande gcloud compute backend-services update ext-reg-tcp-proxy-bs
:
gcloud compute backend-services update ext-reg-tcp-proxy-bs \ --region=REGION_A \ --session-affinity=CLIENT_IP
Étape suivante
- Convertir l'équilibreur de charge réseau proxy en IPv6
- Présentation de l'équilibreur de charge réseau proxy externe
- Journalisation et surveillance de l'équilibreur de charge réseau proxy
- Nettoyez la configuration de l'équilibreur de charge.