Créer une connexion Internet pour les VM privées

Last reviewed 2023-05-15 UTC

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 :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Selon nos calculs, le coût de ce tutoriel revient à moins de 5 US$ par jour.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

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.

Architecture de solution montrant le flux allant du client aux instances de VM via l'équilibreur de charge, Cloud NAT pour accéder à Internet depuis les instances, et IAP pour permettre un accès SSH direct depuis un client jusqu'aux instances.

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.

Architecture de la solution mettant en évidence les quatre instances de VM 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

  1. Dans la console Google Cloud, accédez à la page "Instances de VM" :

    ACCÉDER À LA PAGE INSTANCES DE VM

  2. Cliquez sur Créer une instance.

  3. Pour Nom, définissez www-1.

  4. Définissez Zone sur us-central1-b.

  5. Cliquez sur Gestion, sécurité, disques, réseau et location unique.

  6. 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 .
    • Sous Adresse IP externe, sélectionnez Aucune.
  7. 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
    
  8. Cliquez sur Créer.

  9. 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
    
  10. Créez www-3 avec les mêmes paramètres, mais définissez Zone sur europe-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
    
  11. Créez www-4 avec les mêmes paramètres, mais définissez Zone sur europe-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

  1. Ouvrez Cloud Shell.

    Ouvrir Cloud Shell

  2. Créez une instance nommée www-1 dans us-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"
    
  3. Créez une instance nommée www-2 dans us-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"
    
  4. Créez une instance nommée www-3, cette fois dans europe-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"
    
  5. Créez une instance nommée www-4, également dans europe-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

  1. Ouvrez Cloud Shell.

    Ouvrir Cloud Shell

  2. Clonez le dépôt depuis GitHub :

    git clone https://github.com/GoogleCloudPlatform/gce-public-connectivity-terraform

  3. Remplacez le répertoire de travail par le répertoire du dépôt :

    cd iap

  4. Installez Terraform.

  5. Remplacez [YOUR-ORGANIZATION-NAME] dans le fichier scripts/set_env_vars.sh par votre nom d'organisation Google Cloud.

  6. Définissez les variables d'environnement :

    source scripts/set_env_vars.sh

  7. 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 :

  1. Connectez-vous à une instance Compute Engine à l'aide du tunnel IAP.
  2. 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.

Architecture de solution montrant IAP offrant un accès SSH entre un client et les instances

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

  1. Dans la console Google Cloud, accédez à la page Règles d'administration :

    ACCÉDER À LA PAGE "RÈGLES DE PARE-FEU"

  2. Cliquez sur Créer une règle de pare-feu.

  3. Pour Nom, définissez allow-ssh-from-iap.

  4. Laissez Réseau VPC défini sur default.

  5. Sous Cibles, sélectionnez Tags cibles spécifiés.

  6. Définissez Tags cibles sur http-tag.

  7. Laissez Filtre source défini sur Plages d'adresses IP.

  8. Définissez le paramètre Plages d'adresses IP sources sur 35.235.240.0/20.

  9. Définissez Protocoles et ports autorisés sur tcp:22.

  10. 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

  1. Copiez le fichier Terraform des règles de pare-feu dans le répertoire en cours :

    cp iap/vpc_firewall_rules.tf .

  2. 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.

  1. Dans la console Google Cloud, accédez à Sécurité > Identity-Aware Proxy :

    Option IAP sur la page "Sécurité" de la console Google Cloud.

    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.

  2. Sélectionnez l'onglet SSH and TCP Resources (Ressources SSH et TCP).

  3. Sélectionnez les VM que vous avez créées :

    Console montrant les quatre instances sélectionnées

  4. À droite, cliquez sur Ajouter un compte principal.

  5. 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.

Architecture de solution montrant des instances Cloud NAT entre les instances et Internet

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

  1. Accédez à la page Cloud NAT :

    ACCÉDER À LA PAGE "CLOUD NAT"

  2. Cliquez sur Commencer ou Créer une passerelle NAT.

  3. Définissez Nom de la passerelle sur nat-config.

  4. Définissez Réseau VPC sur default.

  5. Définissez Région sur us-central1.

  6. 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.
  7. Cliquez sur Créer.

  8. Répétez la procédure, mais utilisez les valeurs suivantes :

    • Nom : nat-router-europe-west1
    • Région : europe-west1

gcloud

  1. 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
    
  2. 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

  1. Copiez le fichier de configuration NAT Terraform dans le répertoire actuel :

    cp nat/vpc_nat_gateways.tf .

  2. 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.

  1. Attendez que la configuration NAT se propage à la VM. Cela peut prendre jusqu'à 3 minutes.
  2. Dans Cloud Shell, connectez-vous à votre instance à l'aide du tunnel que vous avez créé :

    gcloud compute ssh www-1 --tunnel-through-iap
    
  3. 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 :

  1. Réinitialisez les instances de VM pour installer le serveur Web Apache.
  2. créer une règle de pare-feu pour autoriser l'accès à partir d'équilibreurs de charge ;
  3. attribuer des adresses IPv4 et IPv6 globales statiques à l'équilibreur de charge ;
  4. créer un groupe d'instances pour vos instances ;
  5. 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.

Architecture présentant quatre instances dans deux groupes d'instances

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

  1. Dans la console Google Cloud, accédez à la page Instances de VM :

    Accéder à la page "Instances de VM"

  2. Sélectionnez www-1, www-2, www-3 et www-4.

  3. 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.

  4. Confirmez la réinitialisation des quatre instances en cliquant sur Réinitialiser dans la boîte de dialogue.

gcloud

  1. 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

  1. Dans la console Google Cloud, accédez à la page Règles d'administration :

    ACCÉDER À LA PAGE "RÈGLES DE PARE-FEU"

  2. Cliquez sur Créer une règle de pare-feu.

  3. Pour Nom, définissez allow-lb-and-healthcheck.

  4. Laissez le champ Réseau VPC sur default.

  5. Sous Cibles, sélectionnez Tags cibles spécifiés.

  6. Définissez Tags cibles sur http-tag.

  7. Laissez Filtre source défini sur Plages d'adresses IP.

  8. Définissez Plages d'adresses IP sources sur 130.211.0.0/22 et 35.191.0.0/16.

  9. Définissez Protocoles et ports autorisés sur tcp:80.

  10. 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

  1. Copiez les fichiers de configuration d'équilibrage des charges Terraform dans le répertoire actuel :

    cp lb/* .

  2. 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

  1. Dans la console Google Cloud, accédez à la page Adresses IP externes :

    ACCÉDER À LA PAGE "ADRESSES IP EXTERNES"

  2. Cliquez sur Réserver une adresse statique pour réserver une adresse IPv4.

  3. Pour Nom, définissez lb-ip-cr.

  4. Laissez Type défini sur Global.

  5. Cliquez sur Réserver.

  6. Cliquez à nouveau sur Réserver une adresse statique pour réserver une adresse IPv6.

  7. Pour Nom, définissez lb-ipv6-cr.

  8. Définissez Version IP sur IPv6.

  9. Laissez Type défini sur Global.

  10. Cliquez sur Réserver.

gcloud

  1. 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
    
  2. 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

  1. Dans la console Google Cloud, accédez à la page Groupes d'instances :

    Accéder à la page "Groupes d'instances"

  2. Cliquez sur Créer un groupe d'instances.

  3. À gauche, cliquez sur Nouveau groupe d'instances non géré.

  4. Pour Nom, définissez us-resources-w.

  5. Définissez le champ Région sur us-central1.

  6. Définissez le champ Zone sur us-central1-b.

  7. Sélectionnez Réseau (par défaut) et Sous-réseau (par défaut).

  8. 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.
  9. 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 et www-4
  10. Sur la page Groupes d'instances, confirmez que vous avez deux groupes d'instances, chacun contenant deux instances.

gcloud

  1. Créez le groupe d'instances us-resources-w :

    gcloud compute instance-groups unmanaged create us-resources-w \
        --zone us-central1-b
    
  2. Ajoutez les instances www-1 et www-2 :

    gcloud compute instance-groups unmanaged add-instances us-resources-w \
        --instances www-1,www-2 \
        --zone us-central1-b
    
  3. Créez le groupe d'instances europe-resources-w.

    gcloud compute instance-groups unmanaged create europe-resources-w \
        --zone europe-west1-b
    
  4. Ajoutez les instances www-3 et www-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

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur Créer un équilibreur de charge.
  3. Dans le champ Type d'équilibreur de charge, sélectionnez Équilibreur de charge d'application (HTTP/HTTPS), puis cliquez sur Suivant.
  4. Pour Public ou interne, sélectionnez Public (externe), puis cliquez sur Suivant.
  5. 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.
  6. Pour Génération de l'équilibreur de charge, sélectionnez Équilibreur de charge d'application externe global, puis cliquez sur Suivant.
  7. Cliquez sur Configurer.

Configuration de base

  1. Définissez le nom de l'équilibreur de charge sur web-map.

Configurer l'équilibreur de charge

  1. Dans le panneau de gauche de la page Créer un équilibreur de charge d'application externe global, cliquez sur Configuration du backend.
  2. 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.
  3. Pour Nom, définissez web-map-backend-service.
  4. Définissez le Protocole. Pour un protocole HTTP, conservez les valeurs par défaut.
  5. Pour Type de backend, sélectionnez Groupes d'instances.
  6. Sous Backends, définissez le Groupe d'instances sur us-resources-w.
  7. Cliquez sur Ajouter un backend.
  8. 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.
  9. Cliquez sur OK.
  10. 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.
  11. Définissez les paramètres suivants pour la vérification de l'état :
    • Nom : http-basic-check
    • Protocole : HTTP
    • Port : 80
  12. Cliquez sur Créer.

gcloud

  1. 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
    
  2. Créez une vérification de l'état :

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  3. 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 sur HTTP, car vous utilisez HTTP pour accéder aux instances. Pour la vérification d'état, vous utilisez la vérification d'état http-basic-check que vous avez créée précédemment.

  4. 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

  1. 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
    
  2. 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

  1. Dans le panneau de gauche de la page Créer un équilibreur de charge d'application externe global, cliquez sur Configuration du frontend.
  2. Pour Nom, définissez http-cr-rule.
  3. Définissez le paramètre Protocole sur HTTP.
  4. Définissez Version IP sur IPv4.
  5. Dans la liste Adresse IP, sélectionnez lb-ip-cr, l'adresse que vous avez créée précédemment.
  6. Vérifiez que Port est défini sur 80.
  7. Cliquez sur OK.
  8. Cliquez sur Ajouter une adresse IP et un port frontend.
  9. Pour Nom, définissez http-cr-ipv6-rule.
  10. Pour Protocole, sélectionnez HTTP.
  11. Définissez Version IP sur IPv6.
  12. Dans la liste Adresse IP, sélectionnez lb-ipv6-cr, l'autre adresse que vous avez créée précédemment.
  13. Vérifiez que Port est défini sur 80.
  14. Cliquez sur Créer.
  15. Cliquez sur OK.
  16. Dans le panneau de gauche de la page Créer un équilibreur de charge d'application externe global, cliquez sur Vérification et finalisation.
  17. Comparez vos paramètres à ce que vous aviez l'intention de créer.
  18. 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

  1. 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
    
  2. 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

  1. Dans la console Google Cloud, accédez à la page Équilibrage de charge :

    ACCÉDER À LA PAGE "ÉQUILIBRAGE DE CHARGE"

  2. 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.

  3. 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.

  4. 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

  1. 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
    
  2. 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 exemple http://[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

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étape suivante