Ce document décrit les options permettant d'établir des connexions Internet à l'aide de ressources Compute Engine disposant d'adresses IP privées. Cela est utile pour les développeurs qui créent des services Google Cloud et pour les administrateurs réseau des environnements Google Cloud.
Dans ce tutoriel, nous partons du principe que vous maîtrisez le déploiement de clouds privés virtuels (VPC, Virtual Private Cloud), Compute Engine et la mise en réseau TCP/IP de base.
Objectifs
- Découvrir les options disponibles pour créer des connexions entre VM privées hors de leur VPC
- Créer une instance Identity-Aware Proxy (IAP) pour les tunnels TCP adaptée aux services interactifs tels que SSH
- Créer une instance Cloud NAT pour permettre aux VM d'établir des connexions sortantes à Internet
- Configurer un équilibreur de charge HTTP compatible avec les connexions entrantes provenant d'Internet et à destination de vos VM
Coûts
Ce tutoriel utilise des composants facturables de Google Cloud, dont :
Utilisez le Simulateur de coût pour générer une estimation des coûts en fonction de votre utilisation prévue. Selon nos calculs, le coût de ce tutoriel revient à moins de 5 US$ par jour.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
Présentation
Les adresses IP privées offrent de nombreux avantages par rapport aux adresses IP publiques (externes) :
- Surface d'attaque réduite. Le fait de supprimer les adresses IP externes des VM complique la tâche aux pirates informatiques qui cherchent à accéder aux VM et à exploiter d'éventuelles failles.
- Flexibilité accrue. L'introduction d'une couche d'abstraction, telle qu'un équilibreur de charge ou un service NAT, permet une prestation de service plus fiable et plus flexible et fait vraiment la différence en comparaison avec les adresses IP externes et statiques.
Cette solution décrit les trois scénarios suivants :
Interactif | Récupération | Actif |
---|---|---|
Connexion SSH directe à une VM initiée par un hôte distant à l'aide d'IAP pour TCP
Exemple : administration à distance à l'aide de SSH ou RDP |
Connexion à un hôte externe initiée sur Internet par une VM à l'aide de Cloud NAT
Exemple : mises à jour de l'OS, API externes |
Une connexion est lancée par un hôte distant vers une VM via un équilibreur de charge Google Cloud global. Exemple : interfaces d'applications, WordPress |
Bien que certains environnements ne fassent intervenir que l'un de ces scénarios, un grand nombre exigeront tout de même qu'ils soient tous disponibles. Cette compatibilité complète vous est offerte par Google Cloud.
Les sections suivantes décrivent un environnement multirégional avec un service HTTP à équilibrage de charge secondé par deux VM dans deux régions. Ces VM ont recours à Cloud NAT pour leurs communications sortantes. À des fins d'administration, les VM sont accessibles via une session SSH acheminée par un tunnel vers IAP.
Le diagramme suivant présente un aperçu des trois cas d'utilisation et des composants associés.
Créer des instances de VM
Pour commencer le tutoriel, vous devez créer quatre instances de machine virtuelle (VM) : deux instances par région, dans deux régions différentes. Vous donnerez à chacune de vos instances le même tag ; il sera utilisé plus tard par une règle de pare-feu afin de permettre au trafic entrant d'accéder à vos instances.
Le schéma suivant montre les instances de VM et les groupes d'instances que vous créez, répartis dans deux zones.
Le script de démarrage que vous ajouterez à chaque instance installera Apache et créera une page d'accueil unique pour chaque instance.
La procédure inclut des instructions concernant l'utilisation de la console Google Cloud et des commandes gcloud
. Le moyen le plus simple d'utiliser les commandes gcloud
est Cloud Shell.
Console
Dans la console Google Cloud, accédez à la page "Instances de VM" :
Cliquez sur Créer une instance.
Pour Nom, définissez
www-1
.Définissez Zone sur us-central1-b.
Cliquez sur Gestion, sécurité, disques, réseau et location unique.
Cliquez sur Mise en réseau, puis procédez comme suit :
- Dans la case Tags réseau, saisissez
http-tag
pour le trafic HTTP. - Sous Interfaces réseau, cliquez sur edit.
- Sous Adresse IP externe, sélectionnez Aucune.
- Dans la case Tags réseau, saisissez
Cliquez sur Gestion et insérez le texte suivant pour le Script de démarrage :
sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>server 1</h1></body></html>' | sudo tee /var/www/html/index.html
Cliquez sur Créer.
Créez
www-2
avec les mêmes paramètres, mais définissez Script de démarrage sur le code suivant :sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>server 2<h1></body></html>' | sudo tee /var/www/html/index.html
Créez
www-3
avec les mêmes paramètres, mais définissez Zone sureurope-west1-b
et Script de démarrage sur le code suivant :sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>server 3</h1></body></html>' | sudo tee /var/www/html/index.html
Créez
www-4
avec les mêmes paramètres, mais définissez Zone sureurope-west1-b
et Script de démarrage sur le code suivant :sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>server 4</h1></body></html>' | sudo tee /var/www/html/index.html
gcloud
Ouvrez Cloud Shell.
Créez une instance nommée
www-1
dansus-central1-b
avec un script de démarrage de base :gcloud compute instances create www-1 \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-1</h1></body></html>' | tee /var/www/html/index.html EOF"
Créez une instance nommée
www-2
dansus-central1-b
:gcloud compute instances create www-2 \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-2</h1></body></html>' | tee /var/www/html/index.html EOF"
Créez une instance nommée
www-3
, cette fois danseurope-west1-b
:gcloud compute instances create www-3 \ --image-family debian-9 \ --image-project debian-cloud \ --zone europe-west1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-3</h1></body></html>' | tee /var/www/html/index.html EOF"
Créez une instance nommée
www-4
, également danseurope-west1-b
:gcloud compute instances create www-4 \ --image-family debian-9 \ --image-project debian-cloud \ --zone europe-west1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-4</h1></body></html>' | tee /var/www/html/index.html EOF"
Terraform
Ouvrez Cloud Shell.
Clonez le dépôt depuis GitHub :
git clone https://github.com/GoogleCloudPlatform/gce-public-connectivity-terraform
Remplacez le répertoire de travail par le répertoire du dépôt :
cd iap
Installez Terraform.
Remplacez
[YOUR-ORGANIZATION-NAME]
dans le fichierscripts/set_env_vars.sh
par votre nom d'organisation Google Cloud.Définissez les variables d'environnement :
source scripts/set_env_vars.sh
Appliquez la configuration Terraform :
terraform apply
Configurer des tunnels IAP pour interagir avec les instances
Pour vous connecter aux instances de VM, connectez-vous aux instances à l'aide d'outils tels que SSH ou RDP. Dans la configuration que vous créez dans ce tutoriel, vous ne pouvez pas vous connecter directement à des instances. Toutefois, vous pouvez utiliser le transfert TCP dans IAP, qui permet d'accéder à distance à ces formats interactifs.
Pour ce tutoriel, vous utilisez SSH.
Dans cette section, vous allez exécuter les opérations suivantes :
- Connectez-vous à une instance Compute Engine à l'aide du tunnel IAP.
- Ajout d'un deuxième utilisateur avec une autorisation de tunnel IAP dans IAM
Le schéma suivant illustre l'architecture que vous allez créer dans cette section. Le contenu des zones grises est traité dans d'autres sections de ce tutoriel.
Limites d'IAP
- Bande passante : la fonctionnalité de transfert TCP d'IAP n'est pas conçue pour le transfert de données de manière groupée. IAP se réserve le droit de limiter le débit des utilisateurs en cas d'abus de ce service.
- Longueur de la connexion : IAP ne déconnectera pas les sessions actives, à moins que cette opération ne soit requise à des fins de maintenance.
- Protocole : IAP pour TCP n'est pas compatible avec UDP.
Créer des règles de pare-feu pour autoriser l'acheminement par tunnel
Afin de vous connecter à votre instance via SSH, vous devez ouvrir un port adéquat sur le pare-feu. Les connexions IAP provenant toutes d'un ensemble spécifique d'adresses IP (35.235.240.0/20), vous pouvez limiter l'utilisation de la règle à cette plage CIDR.
Console
Dans la console Google Cloud, accédez à la page Règles d'administration :
Cliquez sur Créer une règle de pare-feu.
Pour Nom, définissez
allow-ssh-from-iap
.Laissez Réseau VPC défini sur
default
.Sous Cibles, sélectionnez Tags cibles spécifiés.
Définissez Tags cibles sur
http-tag
.Laissez Filtre source défini sur Plages d'adresses IP.
Définissez le paramètre Plages d'adresses IP sources sur
35.235.240.0/20
.Définissez Protocoles et ports autorisés sur
tcp:22
.Cliquez sur Créer.
L'affichage de la nouvelle règle de pare-feu dans la console GCP peut prendre un certain temps.
gcloud
Créez une règle de pare-feu nommée
allow-ssh-from-iap
:gcloud compute firewall-rules create allow-ssh-from-iap \ --source-ranges 35.235.240.0/20 \ --target-tags http-tag \ --allow tcp:22
Terraform
Copiez le fichier Terraform des règles de pare-feu dans le répertoire en cours :
cp iap/vpc_firewall_rules.tf .
Appliquez la configuration Terraform :
terraform apply
Tester l'acheminement par tunnel
Dans Cloud Shell, connectez-vous à l'instance
www-1
à l'aide d'IAP :gcloud compute ssh www-1 \ --zone us-central1-b \ --tunnel-through-iap
Si la connexion aboutit, une session SSH est directement acheminée par tunnel via IAP vers votre VM privée.
Accorder l'accès à d'autres utilisateurs
Lorsque vous vous connectez à des instances de VM, IAP utilise les rôles et autorisations de votre projet existant. Par défaut, les propriétaires d'instances sont les seuls utilisateurs ayant le rôle Utilisateur de tunnels sécurisés par IAP. Si vous souhaitez autoriser d'autres utilisateurs à accéder à vos VM via un tunnel IAP, vous devez leur accorder ce rôle.
Dans la console Google Cloud, accédez à Sécurité > Identity-Aware Proxy :
Si un message vous indique que vous devez configurer l'écran d'autorisation OAuth, ignorez-le. Cette étape n'est pas pertinente pour IAP pour TCP.
Sélectionnez l'onglet SSH and TCP Resources (Ressources SSH et TCP).
Sélectionnez les VM que vous avez créées :
À droite, cliquez sur Ajouter un compte principal.
Ajoutez les utilisateurs auxquels vous souhaitez accorder les autorisations, sélectionnez le rôle Utilisateur de tunnels sécurisés par IAP, puis cliquez sur Enregistrer :
Résumé
Vous pouvez désormais vous connecter à vos instances via SSH pour administrer vos instances ou les dépanner.
De nombreuses applications doivent établir des connexions sortantes pour télécharger des correctifs, communiquer avec des partenaires ou télécharger des ressources. Dans la section suivante, vous allez configurer Cloud NAT pour permettre à vos VM d'accéder à ces ressources.
Déployer Cloud NAT pour l'extraction
Le service Cloud NAT permet aux instances de VM Google Cloud qui ne possèdent pas d'adresse IP externe de se connecter à Internet. Cloud NAT met en œuvre la traduction d'adresses réseau (Network Address Translation) sortante avec une route par défaut pour permettre à vos instances d'accéder à Internet. Ce service ne met pas en œuvre la NAT entrante. Les hôtes qui se trouvent hors de votre réseau VPC peuvent uniquement répondre à des connexions établies ayant été initiées par vos instances ; ils ne peuvent pas initier eux-mêmes des connexions à vos instances à l'aide de Cloud NAT. La fonctionnalité NAT n'est pas utilisée pour le trafic au sein de Google Cloud.
Cloud NAT est une ressource régionale. Vous pouvez la configurer de sorte qu'elle autorise le trafic provenant de toutes les plages d'adresses IP primaires et secondaires ou de tous les sous-réseaux d'une région, ou vous pouvez la configurer de sorte qu'elle ne s'applique qu'à certaines de ces plages.
Dans cette section, vous allez configurer une passerelle Cloud NAT dans chaque région que vous avez utilisée plus haut. Le schéma suivant illustre l'architecture que vous allez créer dans cette section. Le contenu des zones grises est traité dans d'autres sections de ce tutoriel.
Créer une configuration NAT à l'aide de Cloud Router
Vous devez créer l'instance Cloud Router dans la même région que les instances devant utiliser Cloud NAT. Cloud NAT n'est pas utilisé dans la passerelle Cloud NAT elle-même ; ce service sert uniquement à placer les informations sur les VM.
Cette configuration permet à toutes les instances de la région d'utiliser Cloud NAT pour toutes les plages d'adresses IP primaires et d'adresses IP d'alias. De plus, elle attribue automatiquement les adresses IP externes de la passerelle NAT. Pour plus d'options, consultez la documentation gcloud compute routers.
Console
Accédez à la page Cloud NAT :
Cliquez sur Commencer ou Créer une passerelle NAT.
Définissez Nom de la passerelle sur
nat-config
.Définissez Réseau VPC sur
default
.Définissez Région sur
us-central1
.Sous Routeur cloud, sélectionnez Créer un routeur et procédez comme suit :
- Pour Nom, définissez
nat-router-us-central1
. - Cliquez sur Créer.
- Pour Nom, définissez
Cliquez sur Créer.
Répétez la procédure, mais utilisez les valeurs suivantes :
- Nom :
nat-router-europe-west1
- Région :
europe-west1
- Nom :
gcloud
Créez des instances Cloud Router dans chaque région :
gcloud compute routers create nat-router-us-central1 \ --network default \ --region us-central1 gcloud compute routers create nat-router-europe-west1 \ --network default \ --region europe-west1
Configurez les routeurs pour Cloud NAT :
gcloud compute routers nats create nat-config \ --router-region us-central1 \ --router nat-router-us-central1 \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips gcloud compute routers nats create nat-config \ --router-region europe-west1 \ --router nat-router-europe-west1 \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Terraform
Copiez le fichier de configuration NAT Terraform dans le répertoire actuel :
cp nat/vpc_nat_gateways.tf .
Appliquez la configuration Terraform :
terraform apply
Tester la configuration Cloud NAT
Vous pouvez désormais tester l'envoi de requêtes sortantes vers Internet depuis vos instances de VM.
- Attendez que la configuration NAT se propage à la VM. Cela peut prendre jusqu'à 3 minutes.
Dans Cloud Shell, connectez-vous à votre instance à l'aide du tunnel que vous avez créé :
gcloud compute ssh www-1 --tunnel-through-iap
Lorsque vous êtes connecté à l'instance, utilisez la commande
curl
pour émettre une requête sortante :curl example.com
Le résultat suivant s'affiche :
<html> <head> <title>Example Domain</title> ... ... ... </head> <body> <div> <h1>Example Domain</h1> <p>This domain is established to be used for illustrative examples in documents. You may use this domain in examples without prior coordination or asking for permission. </p> <p><a href="http://www.iana.org/domains/example">More information...</a></p> </div> </body> </html>
Si la commande réussit, cela confirme que vos VM peuvent se connecter à Internet avec Cloud NAT.
Résumé
Vos instances peuvent désormais établir des connexions sortantes pour télécharger des correctifs, communiquer avec des partenaires ou télécharger des ressources.
Dans la section suivante, vous allez ajouter l'équilibrage de la charge à votre déploiement et le configurer pour autoriser les clients distants à envoyer des requêtes à vos serveurs.
Créer un service HTTP à équilibrage de charge pour la diffusion
Utiliser Cloud Load Balancing pour votre application peut vous apporter de nombreux avantages. Ce service est en effet capable fournir un équilibrage de charge fluide et évolutif pour plus d'un million de requêtes par seconde. Il peut également décharger vos VM de leur surcharge SSL, acheminer les requêtes vers la meilleure région pour vos utilisateurs en fonction de leur emplacement et des disponibilités, et accepter les protocoles modernes tels que HTTP/2 et QUIC.
Dans ce tutoriel, vous profiterez également d'une autre fonctionnalité clé : la transmission par proxy de connexions IP Anycast globales. Cette fonctionnalité propose une adresse IP unique qui aboutit sur la périphérie de Google distribuée dans le monde entier. Les clients peuvent ensuite se connecter à des ressources hébergées sur des adresses IP privées n'importe où dans Google Cloud. Cette configuration permet de protéger les instances contre les attaques DDoS et les attaques directes. Elle permet également d'utiliser d'autres fonctionnalités telles que Google Cloud Armor pour une sécurité accrue.
Dans cette section du tutoriel, vous allez :
- Réinitialisez les instances de VM pour installer le serveur Web Apache.
- créer une règle de pare-feu pour autoriser l'accès à partir d'équilibreurs de charge ;
- attribuer des adresses IPv4 et IPv6 globales statiques à l'équilibreur de charge ;
- créer un groupe d'instances pour vos instances ;
- commencer à envoyer du trafic vers vos instances.
Le schéma suivant illustre l'architecture que vous allez créer dans cette section. Le contenu des zones grises est traité dans d'autres sections de ce tutoriel.
Réinitialiser des instances de VM
Lorsque vous avez créé les instances de VM plus tôt dans ce tutoriel, elles n'avaient pas accès à Internet, car aucune adresse IP externe n'a été attribuée et Cloud NAT n'était pas configuré. Par conséquent, le script de démarrage qui installe Apache n'a pas pu se terminer correctement.
Le moyen le plus simple d'exécuter à nouveau les scripts de démarrage consiste à réinitialiser ces instances afin que le serveur Web Apache puisse être installé et utilisé dans la section suivante.
Console
Dans la console Google Cloud, accédez à la page Instances de VM :
Sélectionnez
www-1
,www-2
,www-3
etwww-4
.Cliquez sur le bouton Réinitialiser en haut de la page.
Si vous ne voyez pas de bouton Réinitialiser, cliquez sur Autres actions
, puis sélectionnez Réinitialiser.Confirmez la réinitialisation des quatre instances en cliquant sur Réinitialiser dans la boîte de dialogue.
gcloud
Réinitialisez les quatre instances :
gcloud compute instances reset www-1 \ --zone us-central1-b gcloud compute instances reset www-2 \ --zone us-central1-b gcloud compute instances reset www-3 \ --zone europe-west1-b gcloud compute instances reset www-4 \ --zone europe-west1-b
Ouvrir le pare-feu
La prochaine étape consiste à créer une règle de pare-feu afin d'autoriser le trafic provenant des équilibreurs de charge à accéder à vos instances de VM. Cette règle autorise le trafic provenant de la plage d'adresses Google Cloud utilisée à la fois par les équilibreurs de charge et les vérifications d'état. La règle de pare-feu utilise quant à elle le tag http-tag
que vous avez créé plus tôt. Elle autorise le trafic dans le port désigné afin d'accéder aux instances portant le tag spécifié.
Console
Dans la console Google Cloud, accédez à la page Règles d'administration :
Cliquez sur Créer une règle de pare-feu.
Pour Nom, définissez
allow-lb-and-healthcheck
.Laissez le champ Réseau VPC sur
default
.Sous Cibles, sélectionnez Tags cibles spécifiés.
Définissez Tags cibles sur
http-tag
.Laissez Filtre source défini sur Plages d'adresses IP.
Définissez Plages d'adresses IP sources sur
130.211.0.0/22
et35.191.0.0/16
.Définissez Protocoles et ports autorisés sur
tcp:80
.Cliquez sur Créer.
L'affichage de la nouvelle règle de pare-feu dans la console GCP peut prendre un certain temps.
gcloud
Créez une règle de pare-feu nommée
allow-lb-and-healthcheck
:gcloud compute firewall-rules create allow-lb-and-healthcheck \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --target-tags http-tag \ --allow tcp:80
Terraform
Copiez les fichiers de configuration d'équilibrage des charges Terraform dans le répertoire actuel :
cp lb/* .
Appliquez la configuration Terraform :
terraform apply
Attribuer une adresse IP externe aux équilibreurs de charge
Si vous diffusez du trafic sur Internet, vous devez attribuer une adresse externe à l'équilibreur de charge. Vous avez le choix d'attribuer une adresse IPv4 ou IPv6, ou les deux. Dans cette section, vous allez réserver des adresses IPv4 et IPv6 statiques pouvant être ajoutées au DNS.
Les adresses IP publiques sont gratuites, car elles sont utilisées avec un équilibreur de charge.
Console
Dans la console Google Cloud, accédez à la page Adresses IP externes :
Cliquez sur Réserver une adresse statique pour réserver une adresse IPv4.
Pour Nom, définissez
lb-ip-cr
.Laissez Type défini sur Global.
Cliquez sur Réserver.
Cliquez à nouveau sur Réserver une adresse statique pour réserver une adresse IPv6.
Pour Nom, définissez
lb-ipv6-cr
.Définissez Version IP sur IPv6.
Laissez Type défini sur Global.
Cliquez sur Réserver.
gcloud
Créez une adresse IP statique nommée
lb-ip-cr
pour l'adresse IPv4 :gcloud compute addresses create lb-ip-cr \ --ip-version=IPV4 \ --global
Créez une adresse IP statique nommée
lb-ipv6-cr
pour l'adresse IPv6 :gcloud compute addresses create lb-ipv6-cr \ --ip-version=IPV6 \ --global
Créer des groupes d'instances et ajouter des instances
Les équilibreurs de charge Google Cloud ont besoin de groupes d'instances agissant comme des backends pour le trafic. Par mesure de simplicité, vous allez utiliser dans ce tutoriel des groupes d'instances non gérés. Vous pourriez toutefois utiliser des groupes d'instances gérés si vous vouliez profiter de fonctionnalités supplémentaires telles que l'autoscaling, l'autoréparation, le déploiement régional (multizone) et la mise à jour automatique.
Dans cette section, vous allez créer un groupe d'instances pour chaque zone que vous utilisez.
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances :
Cliquez sur Créer un groupe d'instances.
À gauche, cliquez sur Nouveau groupe d'instances non géré.
Pour Nom, définissez
us-resources-w
.Définissez le champ Région sur
us-central1
.Définissez le champ Zone sur
us-central1-b
.Sélectionnez Réseau (par défaut) et Sous-réseau (par défaut).
Sous Instances de VM, procédez comme suit :
- Cliquez sur Ajouter une instance, puis sélectionnez www-1.
- Cliquez à nouveau sur Ajouter une instance, puis sélectionnez www-2.
- Cliquez sur Créer.
Renouvelez cette procédure pour créer un deuxième groupe d'instances, mais utilisez les valeurs suivantes :
- Nom :
europe-resources-w
- Zone :
europe-west1-b
- Instances :
www-3
etwww-4
- Nom :
Sur la page Groupes d'instances, confirmez que vous avez deux groupes d'instances, chacun contenant deux instances.
gcloud
Créez le groupe d'instances
us-resources-w
:gcloud compute instance-groups unmanaged create us-resources-w \ --zone us-central1-b
Ajoutez les instances
www-1
etwww-2
:gcloud compute instance-groups unmanaged add-instances us-resources-w \ --instances www-1,www-2 \ --zone us-central1-b
Créez le groupe d'instances
europe-resources-w
.gcloud compute instance-groups unmanaged create europe-resources-w \ --zone europe-west1-b
Ajoutez les instances
www-3
etwww-4
:gcloud compute instance-groups unmanaged add-instances europe-resources-w \ --instances www-3,www-4 \ --zone europe-west1-b
Configurer le service d'équilibrage de charge
La fonctionnalité d'équilibreur de charge fait intervenir plusieurs services connectés que vous allez définir et connecter dans cette section. Les services que vous allez créer sont les suivants :
- Des ports nommés que l'équilibreur de charge utilisera pour acheminer le trafic vers vos groupes d'instances
- Une vérification de l'état qui interroge vos instances pour savoir si elles sont opérationnelles. L'équilibreur de charge n'envoie le trafic que vers les instances opérationnelles.
- Des services de backend qui surveillent l'utilisation et l'état des instances. Les services de backend savent si les instances d'un groupe d'instances sont aptes à recevoir du trafic. Si les instances ne sont pas aptes à recevoir du trafic, l'équilibreur de charge réachemine alors le trafic, à condition que d'autres instances aient une capacité suffisante. Le backend définit lui-même la capacité des groupes d'instances qu'il contient (utilisation maximale du processeur ou nombre maximal de requêtes par seconde).
- Un mappage d'URL qui analyse l'URL de la requête et se base sur son hôte et son chemin d'accès pour transférer les requêtes vers des services de backend spécifiques. Dans ce tutoriel, n'utilisant pas de transfert basé sur le contenu, le mappage d'URL contient uniquement le mappage par défaut.
- Un proxy cible qui reçoit la requête de l'utilisateur et la transfère vers le mappage d'URL
- Deux règles de transfert globales, une pour IPv4 et une pour IPv6, qui détiennent les ressources de l'adresse IP externe globale. Les règles de transfert globales transfèrent les requêtes entrantes vers le proxy cible.
Créer l'équilibreur de charge
Dans cette section, vous allez créer l'équilibreur de charge et configurer un service de backend par défaut qui gérera votre trafic. Vous allez également créer une vérification de l'état.
Console
Démarrer la configuration
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
- Cliquez sur Créer un équilibreur de charge.
- Dans le champ Type d'équilibreur de charge, sélectionnez Équilibreur de charge d'application (HTTP/HTTPS), 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 à l'échelle mondiale, puis cliquez sur Suivant.
- Pour Génération de l'équilibreur de charge, sélectionnez Équilibreur de charge d'application externe global, puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
- Définissez le nom de l'équilibreur de charge sur
web-map
.
Configurer l'équilibreur de charge
- Dans le panneau de gauche de la page Créer un équilibreur de charge d'application externe global, cliquez sur Configuration du backend.
- Dans la liste Créer ou sélectionner des services de backend et des buckets de backend, sélectionnez Services de backend, puis Créer un service de backend. La boîte de dialogue Créer un service de backend s'affiche.
- Pour Nom, définissez
web-map-backend-service
. - Définissez le Protocole. Pour un protocole HTTP, conservez les valeurs par défaut.
- Pour Type de backend, sélectionnez Groupes d'instances.
- Sous Backends, définissez le Groupe d'instances sur
us-resources-w
. - Cliquez sur Ajouter un backend.
- Sélectionnez le groupe d'instances europe-resources-w, puis procédez comme suit :
- Pour le trafic HTTP entre l'équilibreur de charge et les instances, veillez à définir Numéros de ports sur
80
. - Conservez les valeurs par défaut des autres champs.
- Pour le trafic HTTP entre l'équilibreur de charge et les instances, veillez à définir Numéros de ports sur
- Cliquez sur OK.
- Sous Vérification de l'état, sélectionnez Créer une vérification de l'état ou Créer une autre vérification de l'état.
- Définissez les paramètres suivants pour la vérification de l'état :
- Nom :
http-basic-check
- Protocole :
HTTP
- Port :
80
- Nom :
- Cliquez sur Créer.
gcloud
Pour chaque instance, définissez un service HTTP et mappez un nom de port sur le port correspondant :
gcloud compute instance-groups unmanaged set-named-ports us-resources-w \ --named-ports http:80 \ --zone us-central1-b gcloud compute instance-groups unmanaged set-named-ports europe-resources-w \ --named-ports http:80 \ --zone europe-west1-b
Créez une vérification de l'état :
gcloud compute health-checks create http http-basic-check \ --port 80
Créez un service de backend :
gcloud compute backend-services create web-map-backend-service \ --protocol HTTP \ --health-checks http-basic-check \ --global
Vous définissez l'indicateur
--protocol
surHTTP
, car vous utilisez HTTP pour accéder aux instances. Pour la vérification d'état, vous utilisez la vérification d'étathttp-basic-check
que vous avez créée précédemment.Ajoutez vos groupes d'instances en tant que backends aux services de backend :
gcloud compute backend-services add-backend web-map-backend-service \ --balancing-mode UTILIZATION \ --max-utilization 0.8 \ --capacity-scaler 1 \ --instance-group us-resources-w \ --instance-group-zone us-central1-b \ --global gcloud compute backend-services add-backend web-map-backend-service \ --balancing-mode UTILIZATION \ --max-utilization 0.8 \ --capacity-scaler 1 \ --instance-group europe-resources-w \ --instance-group-zone europe-west1-b \ --global
Définir les règles d'hôte et de chemin d'accès
Console
Dans le panneau de gauche de la page Créer un équilibreur de charge d'application externe global, cliquez sur Règles d'hôte et de chemin d'accès.
Pour les besoins de ce tutoriel, il n'est pas nécessaire de configurer des règles d'hôte ou de chemin d'accès, car le trafic utilise la règle par défaut. Vous pouvez donc accepter les valeurs par défaut préremplies.
gcloud
Créez un mappage d'URL par défaut qui redirige toutes les requêtes entrantes vers vos instances :
gcloud compute url-maps create web-map \ --default-service web-map-backend-service
Créez un proxy HTTP cible qui va acheminer les requêtes vers le mappage d'URL :
gcloud compute target-http-proxies create http-lb-proxy \ --url-map web-map
Configurer l'interface et finaliser la configuration
Console
- Dans le panneau de gauche de la page Créer un équilibreur de charge d'application externe global, cliquez sur Configuration du frontend.
- Pour Nom, définissez
http-cr-rule
. - Définissez le paramètre Protocole sur
HTTP
. - Définissez Version IP sur
IPv4
. - Dans la liste Adresse IP, sélectionnez
lb-ip-cr
, l'adresse que vous avez créée précédemment. - Vérifiez que Port est défini sur
80
. - Cliquez sur OK.
- Cliquez sur Ajouter une adresse IP et un port frontend.
- Pour Nom, définissez
http-cr-ipv6-rule
. - Pour Protocole, sélectionnez HTTP.
- Définissez Version IP sur
IPv6
. - Dans la liste Adresse IP, sélectionnez
lb-ipv6-cr
, l'autre adresse que vous avez créée précédemment. - Vérifiez que Port est défini sur
80
. - Cliquez sur Créer.
- Cliquez sur OK.
- Dans le panneau de gauche de la page Créer un équilibreur de charge d'application externe global, cliquez sur Vérification et finalisation.
- Comparez vos paramètres à ce que vous aviez l'intention de créer.
Si les paramètres sont corrects, cliquez sur Créer.
Vous êtes redirigé vers les pages "Équilibrage de charge". Une fois que l'équilibreur de charge est créé, une coche verte s'affiche à côté de celui-ci pour indiquer qu'il est en cours d'exécution.
gcloud
Récupérez les adresses IP que vous avez créées pour votre équilibreur de charge. Prenez-en note, car vous en aurez besoin à la prochaine étape.
gcloud compute addresses list
Créez deux règles de transfert globales pour acheminer les requêtes entrantes vers le proxy : une pour IPv4 et une pour IPv6. Dans la commande, remplacez lb_ip_address par l'adresse IPv4 statique que vous avez créée, et remplacez lb_ipv6_address par l'adresse IPv6 que vous avez créée.
gcloud compute forwarding-rules create http-cr-rule \ --address lb_ip_address \ --global \ --target-http-proxy http-lb-proxy \ --ports 80 gcloud compute forwarding-rules create http-cr-ipv6-rule \ --address lb_ipv6_address \ --global \ --target-http-proxy http-lb-proxy \ --ports 80
Une fois les règles de transfert globales créées, la propagation de votre configuration peut prendre plusieurs minutes.
Tester la configuration
Dans cette section, vous allez envoyer une requête HTTP à votre instance pour vérifier que la configuration de l'équilibrage de charge fonctionne correctement.
Console
Dans la console Google Cloud, accédez à la page Équilibrage de charge :
Sélectionnez l'équilibreur de charge nommé
web-map
pour afficher les détails de l'équilibreur de charge que vous venez de créer.Dans la section Backend de cette page, référez-vous à la colonne Opérationnelle(s) pour vérifier que les instances sont bel et bien opérationnelles.
Il peut s'écouler quelques instants avant que l'écran n'affiche l'état opérationnel des instances.
Lorsque l'écran indique que les instances sont opérationnelles, copiez la valeur du champ IP:Port dans la section Frontend et collez-la dans votre navigateur.
Dans votre navigateur, vous pouvez voir votre page de contenu par défaut.
gcloud
Récupérez les adresses IP de vos règles de transfert globales et prenez-en note pour l'étape suivante :
gcloud compute forwarding-rules list
Utilisez la commande
curl
pour tester la réponse pour différentes URL de vos services. Essayez IPv4 et IPv6. Pour IPv6, vous devez placer des crochets ([]
) autour de l'adresse, par exemplehttp://[2001:DB8::]/
.curl http://ipv4-address curl -g -6 "http://[ipv6-address]/"
Résumé
Vos VM peuvent désormais diffuser du trafic vers Internet et peuvent récupérer des données stockées sur Internet. Vous pouvez également y accéder via SSH afin de réaliser des tâches administratives. Toutes ces fonctionnalités sont utilisées uniquement à l'aide d'adresses IP privées, ce qui permet de les protéger contre les attaques directes en n'exposant pas les adresses IP accessibles depuis Internet.
Nettoyer
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Étapes suivantes
- L'article Créer un équilibrage de charge explique comment créer des équilibreurs de charge HTTPS et HTTP2.
- L'article Créer un cluster privé vous montre comment configurer un cluster Google Kubernetes Engine privé.
- L'article Utiliser IAP pour le transfert TCP décrit d'autres cas d'utilisation d'IAP pour TCP, tels que l'exécution de RDP ou de commandes à distance.
- L'article Utiliser Cloud NAT fournit des exemples pour Google Kubernetes Engine et explique comment modifier les détails des paramètres.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.