Ce document explique comment créer unregional internal Application Load Balancer afin d'acheminer les requêtes de contenu statique vers des buckets Cloud Storage.
Avant de commencer
Assurez-vous que votre configuration remplit les conditions préalables suivantes.
Installer Google Cloud CLI
Certaines instructions de ce guide ne peuvent être exécutées qu'à l'aide de gcloud CLI. Pour l'installer, consultez Installer la Google Cloud CLI.
Vous trouverez des commandes liées à l'équilibrage de charge dans la documentation de référence de l'API et de gcloud CLI.
Rôles requis
Si vous êtes le créateur du projet, vous disposez du rôle Propriétaire (roles/owner). Par défaut, le rôle Propriétaire (roles/owner) ou le rôle Éditeur (roles/editor) incluent les autorisations nécessaires pour suivre ce document.
Si vous n'êtes pas le créateur du projet, les autorisations requises doivent être accordées au compte principal approprié sur le projet. Par exemple, un compte principal peut être un compte Google (pour les utilisateurs finaux) ou un compte de service.
Pour obtenir les autorisations nécessaires pour créer des buckets Cloud Storage et des ressources réseau, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :
-
Créez des réseaux, des sous-réseaux et des composants d'équilibreur de charge :
Administrateur de réseaux Compute (
roles/compute.networkAdmin) -
Ajouter et supprimer des règles de pare-feu :
Administrateur de sécurité Compute (
roles/compute.securityAdmin) -
Créez des buckets Cloud Storage :
Administrateur des objets de l'espace de stockage (
roles/storage.objectAdmin)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour en savoir plus sur les rôles et les autorisations pour Cloud Load Balancing, consultez Rôles et autorisations. Pour en savoir plus sur la définition de stratégies IAM avec des autorisations conditionnelles, consultez Conditions IAM pour les règles de transfert.
Configurer une ressource de certificat SSL
Pour un regional internal Application Load Balancer qui utilise HTTPS comme protocole de requête et de réponse, créez une ressource de certificat SSL à l'aide du gestionnaire de certificats, comme décrit dans l'un des documents suivants :
- Déployer un certificat régional géré par Google et émis par votre instance CA Service
- Déployer un certificat régional géré par Google avec une autorisation DNS
- Déployer un certificat autogéré régional
Nous vous recommandons d'utiliser un certificat géré par Google.
Limites
Les limites suivantes s'appliquent aux buckets Cloud Storage lorsqu'ils servent de backends à un regional internal Application Load Balancer :
L'accès aux buckets privés n'est pas pris en charge. Par conséquent, le bucket de backend doit être accessible publiquement sur Internet.
Les URL signées ne sont pas acceptées.
L'intégration de Cloud CDN n'est pas disponible lorsque vous créez des buckets de backend pour unregional internal Application Load Balancer.
Lorsque vous utilisez un regional internal Application Load Balancer pour accéder aux buckets de backend, seule la méthode HTTP
GETest acceptée. Vous pouvez télécharger du contenu depuis le bucket, mais vous ne pouvez pas en importer dans le bucket viaregional internal Application Load Balancer .Pour un regional internal Application Load Balancer, les buckets Cloud Storage ne sont acceptés que dans la région où l'équilibreur de charge est configuré. Les buckets birégionaux ou multirégionaux ne sont pas acceptés.
Vue d'ensemble de la configuration
Vous pouvez configurer un regional internal Application Load Balancer dans une région, comme indiqué dans le schéma d'architecture suivant :
Comme le montre le schéma d'architecture, cet exemple crée unregional internal Application Load Balancer dans un réseau de cloud privé virtuel (VPC) avec deux buckets de backend, où chaque bucket de backend fait référence à un bucket Cloud Storage. Les buckets Cloud Storage se trouvent dans la région us-east1. Vous pouvez équilibrer la charge du trafic entre chaque bucket.
Configurer le réseau et les sous-réseaux
Au sein du réseau VPC, configurez un sous-réseau dans la région us-east1 où la règle de transfert de vos équilibreurs de charge doit être configurée.
En outre, configurez un sous-réseau proxy réservé (us-east1) dans la région où vous souhaitez configurer l'équilibreur de charge.
Cet exemple utilise le réseau VPC, la région et les sous-réseaux suivants :
Réseau : le réseau est un réseau VPC en mode personnalisé nommé
lb-network.Sous-réseau pour l'équilibreur de charge. Un sous-réseau nommé
subnet-usdans la régionus-east1utilise10.1.2.0/24pour sa plage d'adresses IP principale.Sous-réseau pour le proxy Envoy. Un sous-réseau nommé
proxy-only-subnet-usdans la régionus-east1qui utilise10.129.0.0/23pour sa plage d'adresses IP principale.
Configurer les sous-réseaux pour la règle de transfert de l'équilibreur de charge
Créez un sous-réseau dans la même région que celle où la règle de transfert de vos équilibreurs de charge doit être configurée.
Console
Dans la console Google Cloud , accédez à la page Réseaux VPC.
Cliquez sur Créer un réseau VPC.
Dans le champ Nom, saisissez
lb-network.Dans la section Sous-réseaux, définissez le Mode de création du sous-réseau sur Personnalisé.
Dans la section Nouveau sous-réseau, saisissez les informations suivantes :
- Nom :
subnet-us - Sélectionnez une région :
us-east1. - Plage d'adresses IP :
10.1.2.0/24 - Cliquez sur OK.
- Nom :
Cliquez sur Créer.
gcloud
Créez un réseau VPC personnalisé nommé
lb-networkà l'aide de la commandegcloud compute networks create.gcloud compute networks create lb-network --subnet-mode=custom
Créez un sous-réseau dans le réseau VPC
lb-networkde la régionus-east1à l'aide de la commandegcloud compute networks subnets create.gcloud compute networks subnets create subnet-us \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-east1
Configurer les sous-réseaux proxy réservés
Un sous-réseau proxy réservé fournit un ensemble d'adresses IP utilisées par Google Cloud pour exécuter des proxys Envoy en votre nom. Les proxys interrompent les connexions du client et en créent vers les backends.
Ce sous-réseau proxy réservé est utilisé par tous les équilibreurs de charge régionaux basés sur Envoy dans la même région que le réseau VPC. Il ne peut y avoir qu'un seul sous-réseau proxy réservé actif pour une utilisation donnée, par région et par réseau.
Dans cet exemple, nous créons un sous-réseau proxy réservé dans la région us-east1.
Console
Dans la console Google Cloud , accédez à la page Réseaux VPC.
Cliquez sur le nom du réseau VPC que vous avez créé.
Dans l'onglet Sous-réseau, cliquez sur Ajouter un sous-réseau.
Saisissez les informations suivantes :
- Dans le champ Nom, saisissez
proxy-only-subnet-us. - Pour Région, saisissez
us-east1. - Dans le champ Objectif, sélectionnez Regional Managed Proxy.
- Dans Plage d'adresses IP, saisissez
10.129.0.0/23.
- Dans le champ Nom, saisissez
Cliquez sur Ajouter.
gcloud
Créez un sous-réseau proxy réservé dans la région
us-east1à l'aide de la commandegcloud compute networks subnets create.gcloud compute networks subnets create proxy-only-subnet-us \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-east1 \ --network=lb-network \ --range=10.129.0.0/23
Configurer une règle de pare-feu
Cet exemple utilise une règle de pare-feu d'entrée, fw-allow-ssh, qui autorise l'accès SSH sur le port 22 à la VM cliente.
Console
Dans la console Google Cloud , accédez à la page Règles de pare-feu.
Cliquez sur Créer une règle de pare-feu pour créer la règle autorisant les connexions SSH entrantes sur la VM cliente :
Dans la page Créer une règle de pare-feu, saisissez les informations suivantes :
- Nom :
fw-allow-ssh - Réseau :
lb-network - Sens du trafic : entrée
- Action en cas de correspondance : autoriser
- Cibles : Tags cibles spécifiés
- Tags cibles :
allow-ssh - Filtre source : Plages IPv4
- Plages IPv4 sources :
0.0.0.0/0 - Protocoles et ports :
- Choisissez Protocoles et ports spécifiés.
- Cochez la case TCP, puis saisissez
22pour le numéro de port.
- Nom :
Cliquez sur Créer.
gcloud
Créez la règle de pare-feu
fw-allow-sshpour autoriser la connectivité SSH aux VM avec le tag réseauallow-ssh. Lorsque vous omettez--source-ranges,Google Cloud interprète la règle comme désignant n'importe quelle source.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Configurer vos buckets Cloud Storage
Le processus de configuration des buckets Cloud Storage est le suivant :
- Créez les buckets.
- Copiez le contenu dans les buckets.
- Rendez les buckets lisibles publiquement.
Créer des buckets Cloud Storage
Dans cet exemple, vous allez créer deux buckets Cloud Storage dans la région us-east1.
Console
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
Cliquez sur Créer.
Dans la section Premiers pas, saisissez un nom unique qui respecte les consignes de dénomination.
Cliquez sur Choisissez où stocker vos données.
Définissez le Type d'emplacement sur Région.
Dans la liste des régions, sélectionnez us-east1.
Cliquez sur Créer.
Cliquez sur Buckets pour revenir à la page Buckets Cloud Storage. Suivez les instructions précédentes pour créer un deuxième bucket dans la même région, us-east1.
gcloud
Créez les buckets dans la région
us-east1à l'aide de la commandegcloud storage buckets create.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-accessgcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-accessRemplacez
BUCKET1_NAMEetBUCKET2_NAMEpar les noms de vos buckets Cloud Storage.
Copier des fichiers graphiques dans vos buckets Cloud Storage
Pour pouvoir tester la configuration, vous allez copier un fichier graphique depuis un bucket Cloud Storage public vers vos propres buckets Cloud Storage.
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
Rendre vos buckets Cloud Storage lisibles publiquement
Pour rendre tous les objets d'un bucket lisibles par tous sur l'Internet public, attribuez au compte principal allUsers le rôle Lecteur des objets de l'espace de stockage (roles/storage.objectViewer).
Console
Pour autoriser tous les utilisateurs à afficher des objets dans vos buckets, répétez la procédure suivante pour chaque bucket :
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
Dans la liste des buckets, cochez la case correspondant à chaque bucket que vous souhaitez rendre public.
Cliquez sur le bouton Autorisations. La boîte de dialogue Autorisations s'affiche.
Dans la boîte de dialogue Autorisations, cliquez sur le bouton Ajouter un compte principal. La boîte de dialogue Accorder l'accès s'affiche.
Dans le champ Nouveaux comptes principaux, saisissez
allUsers.Dans le champ Sélectionner un rôle, saisissez
Storage Object Viewerdans le champ de filtre, puis sélectionnez Lecteur des objets de l'espace de stockage dans les résultats filtrés.Cliquez sur Enregistrer.
Cliquez sur Autoriser l'accès public.
gcloud
Pour autoriser tous les utilisateurs à afficher les objets de vos buckets, exécutez la commande buckets add-iam-policy-binding.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME \
--member=allUsers \
--role=roles/storage.objectViewergcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
--member=allUsers \
--role=roles/storage.objectViewerRéserver une adresse IP statique interne
Réservez une adresse IPv4 interne statique pour la règle de transfert de l'équilibreur de charge. Pour en savoir plus, consultez Réserver une adresse IP interne statique.
Console
Dans la console Google Cloud , accédez à la page Réserver une adresse IP statique interne.
Accéder à la page "Réserver une adresse IP statique interne"
Dans le champ Nom, saisissez un nom pour la nouvelle adresse.
Dans la liste Version IP, sélectionnez IPv4.
Dans la liste Réseau, sélectionnez lb-network.
Dans la liste Sous-réseau, sélectionnez subnet-us.
Dans le champ Région, sélectionnez us-east1.
Dans la liste Adresse IP statique, sélectionnez Attribuer automatiquement. Une fois l'équilibreur de charge créé, cette adresse IP sera associée à la règle de transfert de l'équilibreur de charge.
Cliquez sur Réserver pour réserver l'adresse IP.
gcloud
Pour réserver une adresse IP externe statique, utilisez la commande
gcloud compute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=us-east1 \ --subnet=subnet-usRemplacez
ADDRESS_NAMEpar le nom de la nouvelle adresse.Pour afficher les informations sur l'adresse, utilisez la commande
gcloud compute addresses describe.gcloud compute addresses describe ADDRESS_NAME
Copiez l'adresse IP renvoyée pour l'utiliser comme
RESERVED_IP_ADDRESSdans la section suivante.
Configurer l'équilibreur de charge avec des buckets backend
Cette section vous explique comment créer les ressources suivantes pour unregional internal Application Load Balancer :
- Deux buckets backend. Les buckets backend servent de wrapper pour les buckets Cloud Storage que vous avez créés précédemment.
- Mappage d'URL
- Proxy cible
- Une règle de transfert avec des adresses IP régionales. Une adresse IP est attribuée à la règle de transfert à partir du sous-réseau créé pour les règles de transfert de l'équilibreur de charge. Si vous essayez d'attribuer une adresse IP à la règle de transfert à partir du sous-réseau proxy réservé, la création de la règle de transfert échoue.
Dans cet exemple, vous pouvez utiliser HTTP ou HTTPS comme protocole de requête et de réponse entre le client et l'équilibreur de charge. Pour créer un équilibreur de charge HTTPS, vous devez ajouter une ressource de certificat SSL au frontal de l'équilibreur de charge.
Pour créer les composants d'équilibrage de charge mentionnés précédemment à l'aide de la gcloud CLI, procédez comme suit :
Créez deux buckets de backend dans la région
us-east1à l'aide de la commandegcloud beta compute backend-buckets create. Les buckets backend ont un schéma d'équilibrage de chargeINTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1gcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1Créez un mappage d'URL pour acheminer les requêtes entrantes vers le bucket de backend à l'aide de la commande
gcloud beta compute url-maps create.gcloud beta compute url-maps create lb-map \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1Configurez les règles d'hôte et de chemin d'accès du mappage d'URL à l'aide de la commande
gcloud beta compute url-maps add-path-matcher.Dans cet exemple, le bucket backend par défaut est
backend-bucket-cats, qui gère tous les chemins d'accès qu'il contient. Toutefois, toute requête ciblanthttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgutilise le backendbackend-bucket-dogs. Par exemple, si le dossier/love-to-fetch/existe également dans votre backend par défaut (backend-bucket-cats), l'équilibreur de charge donne la priorité au backendbackend-bucket-dogs, car il existe une règle de chemin d'accès spécifique pour/love-to-fetch/*.gcloud beta compute url-maps add-path-matcher lb-map \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1Créez un proxy cible à l'aide de la commande
gcloud compute target-http-proxies create.Pour le trafic HTTP, créez un proxy HTTP cible qui va acheminer les requêtes vers le mappage d'URL :
gcloud compute target-http-proxies create http-proxy \ --url-map=lb-map \ --region=us-east1Pour le trafic HTTPS, créez un proxy HTTPS cible pour acheminer les requêtes vers le mappage d'URL. Le proxy est la partie de l'équilibreur de charge qui contient le certificat SSL pour un équilibreur de charge HTTPS. Après avoir créé le certificat, vous pouvez l'associer au proxy cible HTTPS.
gcloud compute target-https-proxies create https-proxy \ --url-map=lb-map \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1Remplacez
CERTIFICATE_NAMEpar le nom du certificat SSL que vous avez créé à l'aide du gestionnaire de certificats.Créez une règle de transfert avec une adresse IP dans la région
us-east1à l'aide de la commandegcloud compute forwarding-rules create.La réservation d'une adresse IP est facultative pour une règle de transfert HTTP. Toutefois, vous devez réserver une adresse IP pour une règle de transfert HTTPS.
Dans cet exemple, une adresse IP éphémère est associée à la règle de transfert HTTP de votre équilibreur de charge. Une adresse IP éphémère reste constante tant que la règle de transfert existe. Si vous devez supprimer la règle de transfert et la recréer, celle-ci peut alors recevoir une nouvelle adresse IP.
Pour le trafic HTTP, créez les règles de transfert pour acheminer les requêtes entrantes vers le proxy HTTP cible :
gcloud compute forwarding-rules create http-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --ports=80 \ --target-http-proxy=http-proxy \ --target-http-proxy-region=us-east1 \ --region=us-east1Pour le trafic HTTPS, créez les règles de transfert globales pour acheminer les requêtes entrantes vers le proxy cible HTTPS :
gcloud compute forwarding-rules create https-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --target-https-proxy=https-proxy \ --target-http-proxy-region=us-east1 \ --region=us-east1Remplacez
RESERVED_IP_ADDRESSpar le nom de l'adresse que vous avez copiée dans la section Réserver une adresse IP interne statique.
Envoyer une requête HTTP à l'équilibreur de charge
Envoyez une requête depuis une VM cliente interne à la règle de transfert de l'équilibreur de charge.
Obtenir l'adresse IP de la règle de transfert de l'équilibreur de charge
Obtenez l'adresse IP de la règle de transfert de l'équilibreur de charge (http-fw-rule-1) dans la région us-east1 pour envoyer une requête HTTP à l'adresse IP virtuelle (VIP) de la région à l'aide de curl.
gcloud compute forwarding-rules describe http-fw-rule-1 \
--region=us-east1
Copiez l'adresse IP renvoyée pour l'utiliser comme FORWARDING_RULE_IP_ADDRESS à l'étape suivante.
Créer une VM cliente pour tester la connectivité
Créez une VM cliente et envoyez une requête HTTP aux adresses IP virtuelles du réseau VPC. La VM cliente peut se trouver dans n'importe quelle zone de la même région que l'équilibreur de charge, et utiliser n'importe quel sous-réseau du même réseau VPC. Dans cet exemple, vous créez la VM cliente dans le même sous-réseau que la règle de transfert de l'équilibreur de charge.
Créez une VM cliente dans la région
us-east1.gcloud compute instances create client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=lb-network \ --subnet=subnet-us \ --zone=us-east1-c \ --tags=allow-sshÉtablissez une connexion SSH avec la VM cliente.
gcloud compute ssh client-a --zone=us-east1-c
Dans cet exemple, regional internal Application Load Balancer dispose d'une adresse IP virtuelle de frontend dans la région
us-east1du réseau VPC. Envoyez une requête HTTP au VIP de cette région à l'aide de curl.curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
Remplacez
FORWARDING_RULE_IP_ADDRESSpar l'adresse IP que vous avez copiée dans la section Obtenir l'adresse IP de la règle de transfert de l'équilibreur de charge.
Étape suivante
- Présentation de l'équilibreur de charge d'application interne
- Sous-réseaux proxy réservés aux équilibreurs de charge basés sur Envoy
- Gérer les certificats
- Nettoyer une configuration d'équilibrage de charge