Ce tutoriel explique comment un producteur de services peut créer un service simple qui utilise un équilibreur de charge réseau passthrough interne. Par défaut, un équilibreur de charge réseau passthrough interne n'est disponible que depuis le réseau VPC qui l'héberge.
Ce tutoriel est destiné aux architectes cloud, aux architectes réseau, aux administrateurs réseau et aux administrateurs informatiques.
Objectifs
- Configurer la mise en réseau pour les ressources du producteur de services
- Créer des ressources de VM pour le backend de l'équilibreur de charge
- Configurer les composants de l'équilibreur de charge
- Tester l'accès à l'équilibreur de charge
Coûts
Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :
Vous pouvez obtenir une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Créez ou sélectionnez un projet à utiliser pour les ressources du producteur de services.
Dans les tutoriels suivants, ce projet est appelé
PRODUCER_PROJECT. -
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Enable the Compute Engine API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Make sure that you have the following role or roles on the project: Compute Engine > Compute Network Admin, Compute Engine > Compute Security Admin, Compute Engine > Compute Instance Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Accéder à IAM - Sélectionnez le projet.
- Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.
- Cliquez sur Sélectionner un rôle, puis recherchez le rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez tous les rôles supplémentaires.
- Cliquez sur Enregistrer.
-
Configurer la mise en réseau
Les sections suivantes expliquent comment créer un réseau, un sous-réseau et des règles de pare-feu pour le service.
Configurer un réseau et un sous-réseau
Pour créer le réseau et le sous-réseau de service pour l'équilibreur de charge, suivez les étapes décrites dans les sections suivantes.
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
service-network.Dans le champ Mode de création de sous-réseau, sélectionnez Personnalisé.
Dans la section Nouveau sous-réseau, saisissez les informations suivantes.
- Dans le champ Nom, saisissez
service-subnet. - Dans le champ Région, sélectionnez la région que vous souhaitez utiliser.
- Pour Type de pile d'adresses IP, sélectionnez IPv4 (pile simple).
- Dans Plage IPv4, saisissez
10.10.10.0/24. - Cliquez sur OK.
- Dans le champ Nom, saisissez
Cliquez sur Créer.
gcloud
Créez un réseau VPC en mode personnalisé :
gcloud compute networks create service-network --subnet-mode=custom
Dans le réseau
service-network, créez un sous-réseau.gcloud compute networks subnets create service-subnet \ --network=service-network \ --range=10.10.10.0/24 \ --region=REGIONRemplacez
REGIONpar la région que vous souhaitez utiliser.
Configurer des règles de pare-feu
Créez des règles de pare-feu pour autoriser le trafic suivant :
fw-allow-subnet: permet au trafic provenant de10.10.10.0/24d'accéder à d'autres ressources dans10.10.10.0/24.fw-allow-ssh: permet au trafic SSH provenant de0.0.0.0/0d'atteindre les VM qui possèdent le tag réseauallow-ssh.fw-allow-healthcheck: permet au trafic des systèmes de vérification de l'état Google Cloudd'atteindre les VM qui possèdent le tag réseauallow-healthcheck.
Console
Dans la console Google Cloud , accédez à la page Règles de pare-feu.
Pour autoriser le trafic de sous-réseau, cliquez sur Créer une règle de pare-feu, puis utilisez les paramètres suivants :
- Dans le champ Nom, saisissez
fw-allow-subnet. - Pour Réseau, sélectionnez
service-network. - Dans le champ Priorité, saisissez
1000. - Pour le Sens du trafic, sélectionnez Entrée.
- Pour l'option Action en cas de correspondance, sélectionnez Autoriser.
- Pour les Cibles, sélectionnez Toutes les instances du réseau.
- Dans la section Filtre source, sélectionnez Plages IPv4.
- Dans le champ Plages IPv4 sources, saisissez
10.10.10.0/24. - Pour Protocoles et ports, sélectionnez Tout autoriser.
- Dans le champ Nom, saisissez
Cliquez sur Créer.
Pour autoriser les connexions SSH entrantes, cliquez sur Créer une règle de pare-feu et utilisez les paramètres suivants :
- Dans le champ Nom, saisissez
fw-allow-ssh. - Pour Réseau, sélectionnez
service-network. - Dans le champ Priorité, saisissez
1000. - Pour le Sens du trafic, sélectionnez Entrée.
- Pour l'option Action en cas de correspondance, sélectionnez Autoriser.
- Pour Cibles, sélectionnez Specified target tags (Tags cibles spécifiés).
- Pour Tags cibles, saisissez
allow-ssh. - Dans la section Filtre source, sélectionnez Plages IPv4.
- Dans le champ Plages IPv4 sources, saisissez
0.0.0.0/0. - Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés, puis cochez la case TCP. Pour Ports, saisissez
22.
- Dans le champ Nom, saisissez
Cliquez sur Créer.
Pour autoriser les vérifications d'état Google Cloud , cliquez sur Créer une règle de pare-feu et utilisez les paramètres suivants :
- Dans le champ Nom, saisissez
fw-allow-healthcheck. - Pour Réseau, sélectionnez
service-network. - Dans le champ Priorité, saisissez
1000. - Pour le Sens du trafic, sélectionnez Entrée.
- Pour l'option Action en cas de correspondance, sélectionnez Autoriser.
- Pour Cibles, sélectionnez Specified target tags (Tags cibles spécifiés).
- Pour Tags cibles, saisissez
allow-healthcheck. - Dans la section Filtre source, sélectionnez Plages IPv4.
- Dans le champ Plages IPv4 sources, saisissez
130.211.0.0/22et35.191.0.0/16. - Pour Protocoles et ports, sélectionnez Tout autoriser.
- Dans le champ Nom, saisissez
Cliquez sur Créer.
gcloud
Créez la règle de pare-feu
fw-allow-subnetpour autoriser la communication depuis le sous-réseau :gcloud compute firewall-rules create fw-allow-subnet \ --network=service-network \ --action=allow \ --direction=ingress \ --source-ranges=10.10.10.0/24 \ --rules=tcp,udp,icmp
Créez la règle de pare-feu
fw-allow-sshpour autoriser la connectivité SSH aux VM avec le tag réseauallow-ssh.gcloud compute firewall-rules create fw-allow-ssh \ --network=service-network \ --action=allow \ --direction=ingress \ --source-ranges=0.0.0.0/0 \ --target-tags=allow-ssh \ --rules=tcp:22
Créez la règle
fw-allow-healthcheckpour autoriser les vérifications d'état Google Cloud.gcloud compute firewall-rules create fw-allow-healthcheck \ --network=service-network \ --action=allow \ --direction=ingress \ --target-tags=allow-healthcheck \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
Créer des ressources de VM pour le backend de l'équilibreur de charge
Créez les VM et le groupe d'instances à utiliser avec l'équilibreur de charge.
Créer des VM de backend
Le service que vous créez s'exécute sur deux VM pour une disponibilité accrue : vm-1 et vm-2. Les VM se trouvent dans la même zone, mais dans un environnement de production, nous vous recommandons d'utiliser plusieurs zones.
En plus de créer les VM, les étapes suivantes permettent d'accomplir les tâches suivantes :
- Configure les VM pour qu'elles utilisent les tags réseau que vous avez configurés comme cibles dans les règles de pare-feu et un tag réseau supplémentaire (
allow-nat) qui sera utilisé ultérieurement. Installe, configure et démarre le service Apache.
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-1.Pour Région et Zone, sélectionnez une région et une zone dans cette région.
Dans le menu de navigation, accédez à OS et stockage.
Dans le volet Système d'exploitation et espace de stockage, assurez-vous que Debian GNU/Linux 12 (bookworm) est sélectionné pour le disque de démarrage. Si vous devez sélectionner une autre image, cliquez sur Modifier.
Dans le menu de navigation, accédez à Mise en réseau.
Pour Tags réseau, saisissez
allow-ssh,allow-healthchecketallow-nat.Pour Interfaces réseau, sélectionnez les éléments suivants :
- Pour Réseau, sélectionnez
service-network. - Pour Sous-réseau, sélectionnez
service-subnet. - Pour Type de pile d'adresses IP, sélectionnez IPv4 (pile simple).
- Pour Adresse IPv4 interne principale, sélectionnez Éphémère (automatique).
- Pour Adresse IPv4 externe, sélectionnez Éphémère.
- Pour Réseau, sélectionnez
Dans le menu de navigation, accédez à Avancé.
Dans la section Automatisation, dans le champ Script de démarrage, saisissez le script suivant.
#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completedCliquez sur Créer.
Répétez ces étapes pour créer une autre VM nommée
vm-2dans la même région et la même zone quevm-1.
gcloud
Créez deux VM en exécutant les commandes suivantes :
gcloud compute instances create vm-1 \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-healthcheck,allow-nat \ --subnet=service-subnet \ --metadata=startup-script='#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed'gcloud compute instances create vm-2 \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-healthcheck,allow-nati \ --subnet=service-subnet \ --metadata=startup-script='#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed'Remplacez
ZONEpar la zone que vous souhaitez utiliser.
Créer un groupe d'instances
Pour utiliser les VM dans un backend d'équilibreur de charge, vous devez les ajouter à un groupe d'instances.
Console
Dans la console Google Cloud , accédez à la page Groupes d'instances.
Cliquez sur Créer un groupe d'instances.
Dans le volet de navigation, cliquez sur Nouveau groupe d'instances non géré.
Dans le champ Nom, saisissez
ig-1.Dans la section Emplacement, sélectionnez la même région et la même zone que vos VM.
Pour Réseau, sélectionnez
service-network.Pour Sous-réseau, sélectionnez
service-subnet.Dans la section Instances de VM, ajoutez
vm-1etvm-2au groupe d'instances.Cliquez sur Créer.
gcloud
Créez un groupe d'instances non géré :
gcloud compute instance-groups unmanaged create ig-1 \ --zone=ZONERemplacez
ZONEpar la zone qui contient les VM.Ajoutez les VM au groupe d'instances :
gcloud compute instance-groups unmanaged add-instances ig-1 \ --zone=ZONE \ --instances=vm-1,vm-2
Configurer les composants de l'équilibreur de charge
Configurez tous les composants de l'équilibreur de charge réseau passthrough interne, en commençant par la vérification de l'état d'état et le service de backend, puis les composants d'interface :
Vérification de l'état : Vous utilisez une vérification de l'état HTTP qui recherche un code d'état HTTP
200 OK.Service de backend Étant donné que vous devez transmettre le trafic HTTP via l'équilibreur de charge interne, vous devez utiliser TCP, et non UDP.
Règle de transfert Vous créez une seule règle de transfert interne,
service-rule.Adresse IP interne : Vous spécifiez une adresse IP interne,
10.10.10.99, lorsque vous créez la règle de transfert.
Console
Démarrer la configuration
Dans la console Google Cloud , accédez à la page Équilibrage de charge.
- Cliquez sur Créer un équilibreur de charge.
- Sous Type d'équilibreur de charge, sélectionnez Équilibreur de charge réseau (TCP/UDP/SSL), puis cliquez sur Suivant.
- Pour Proxy ou passthrough, sélectionnez Équilibreur de charge passthrough, puis cliquez sur Suivant.
- Pour Public ou interne, sélectionnez Interne, puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
Sur la page Créer un équilibreur de charge réseau passthrough interne, saisissez les informations suivantes :
- Dans le champ Nom de l'équilibreur de charge, saisissez
service-lb. - Pour Région, sélectionnez la même région que celle de vos VM.
- Pour Réseau, sélectionnez
service-network.
Configurer les backends
- Cliquez sur Configuration du backend.
- Dans la liste Vérification d'état, cliquez sur Créer une vérification d'état, puis saisissez les informations suivantes :
- Pour Nom, saisissez
hc-http-80. - Pour Protocole, sélectionnez
HTTP. - Pour Port, saisissez
80. - Pour Protocole de proxy, sélectionnez
NONE. - Dans le champ Chemin de requête, saisissez
/.
- Pour Nom, saisissez
- Cliquez sur Créer.
- Dans la section Nouveau backend de Backends, sélectionnez IPv4 (pile unique).
- Dans Groupe d'instances, sélectionnez le groupe d'instances
ig-1puis cliquez sur OK. - Vérifiez qu'une coche bleue apparaît à côté de Configuration du backend avant de continuer.
Configurer l'interface
- Cliquez sur Configuration de l'interface.
- Dans la section Nouveaux IP et port frontend, procédez comme suit :
- Dans le champ Nom, saisissez
service-rule. - Pour Sous-réseau, sélectionnez
service-subnet. - Dans la section Objectif de l'adresse IP interne, dans la liste Adresse IP, sélectionnez Créer une adresse IP, puis saisissez les informations suivantes :
- Dans le champ Nom, saisissez
service-rule-ip. - Pour Version IP, sélectionnez IPv4.
- Sous Adresse IP statique, sélectionnez Let me choose.
- Sous Adresse IP personnalisée, saisissez
10.10.10.99.
- Dans le champ Nom, saisissez
- Cliquez sur Réserver.
- Pour Ports, sélectionnez Unique, puis dans Numéros de ports, saisissez
80. - Cliquez sur OK.
- Vérifiez qu'une coche bleue apparaît à côté de Configuration de l'interface avant de continuer.
- Dans le champ Nom, saisissez
Vérifier la configuration
- Cliquez sur Vérifier et finaliser.
- Vérifiez les paramètres de configuration de votre équilibreur de charge.
- Cliquez sur Créer.
gcloud
Créez une vérification d'état HTTP régionale pour tester la connectivité HTTP aux VM sur le port 80.
gcloud compute health-checks create http hc-http-80 \ --region=REGION \ --port=80Remplacez
REGIONpar la même région que les VM de backend.Créez le service de backend pour le trafic HTTP :
gcloud compute backend-services create service-lb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=REGION \ --health-checks=hc-http-80 \ --health-checks-region=REGIONRemplacez
REGIONpar la même région que les VM de backend.Ajoutez le groupe d'instances backend au service de backend :
gcloud compute backend-services add-backend service-lb \ --region=REGION \ --instance-group=ig-1 \ --instance-group-zone=ZONERemplacez les éléments suivants :
REGION: la même région que les VM de backend.ZONE: la même zone que les VM de backend.
Créez une règle de transfert pour le service de backend.
gcloud compute forwarding-rules create service-rule \ --region=REGION \ --load-balancing-scheme=internal \ --network=service-network \ --subnet=service-subnet \ --address=10.10.10.99 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=service-lb \ --backend-service-region=REGIONRemplacez
REGIONpar la même région que les VM de backend.
Tester l'accès à l'équilibreur de charge
Pour vérifier que l'équilibreur de charge fonctionne, créez une VM de test et envoyez-lui une requête.
Créer une VM cliente pour les tests
Créez une VM cliente dans la même région que les VM de backend (serveur).
Console
Dans la console Google Cloud , accédez à la page Instances de VM.
Cliquez sur Créer une instance.
Dans le champ Nom, saisissez
producer-test.Pour Région, sélectionnez la même région que celle des VM de backend.
Pour Zone, sélectionnez une zone dans cette région.
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 :
- Pour Réseau, sélectionnez
service-network. - Pour Sous-réseau, sélectionnez
service-subnet.
- Pour Réseau, sélectionnez
- Pour Tags réseau, saisissez
Cliquez sur Créer.
gcloud
gcloud compute instances create producer-test \
--zone=ZONE \
--image-family=debian-12 \
--image-project=debian-cloud \
--tags=allow-ssh \
--subnet=service-subnet
Remplacez ZONE par une zone située dans la même région que les VM de backend.
Tester la connectivité
Ce test contacte l'équilibreur de charge à partir d'une VM cliente. Le comportement attendu est une répartition du trafic entre les VM de backend de l'équilibreur de charge.
- Connectez-vous à l'instance de VM cliente.
Remplacezgcloud compute ssh producer-test --zone=ZONE
ZONEpar la zone de la VM cliente. - Envoyez une requête Web à l'équilibreur de charge à l'aide de
curlpour 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, en raison du contenu de/var/www/html/index.htmlsur chaque VM de backend. Par exemple, les réponses attendues ressemblent àPage served from: vm-1etPage served from: vm-2.curl -s http://10.10.10.99