Ce document explique comment créer un équilibreur de charge d'application externe régional pour 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 Google Cloud CLI. Pour l'installer, consultez Installer gcloud 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 un réseau VPC et des composants d'équilibrage de charge :
Rôle Administrateur de réseaux Compute (
roles/compute.networkAdmin) -
Créez des buckets Cloud Storage :
Rôle Administrateur des objets Storage (
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 pour les règles de transfert, consultez Conditions IAM pour les règles de transfert.
Configurer une ressource de certificat SSL
Pour un équilibreur de charge d'application externe régional qui utilise HTTPS comme protocole de requête et de réponse, vous pouvez créer une ressource de certificat SSL à l'aide d'un certificat SSL Compute Engine ou d'un certificat Certificate Manager.
Pour cet exemple, 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 avec une autorisation DNS
- Déployer un certificat régional géré par Google avec Certificate Authority Service
- Déployer un certificat autogéré au niveau régional
Après avoir créé le certificat, vous pouvez l'associer au proxy cible HTTPS.
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 équilibreur de charge d'application externe régional :
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 un équilibreur de charge d'application externe régional.
Lorsque vous utilisez un équilibreur de charge d'application externe régional pour accéder aux buckets 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 via l'équilibreur de charge d'application externe régional.Pour un équilibreur de charge d'application externe régional, 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
Le schéma suivant montre un équilibreur de charge d'application externe régional avec des buckets de backend situés dans la même région que l'équilibreur de charge.
La règle de transfert de l'équilibreur de charge d'application externe régional possède une adresse IP externe.
Dans les sections suivantes, vous allez configurer les différentes ressources comme indiqué dans le schéma précédent.
Configurer le réseau et le sous-réseau proxy réservé
Cet exemple utilise le réseau VPC, la région et le sous-réseau proxy réservé suivants :
Réseau : le réseau est un réseau VPC en mode personnalisé nommé
lb-network.Sous-réseau pour les proxys Envoy. Un sous-réseau nommé
proxy-only-subnet-usdans la régionus-east1utilise10.129.0.0/23pour sa plage d'adresses IP principale.
Configurer un réseau VPC en mode personnalisé
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.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
Configurer le sous-réseau proxy réservé
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 créent de nouvelles connexions 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.
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 :
- Nom :
proxy-only-subnet-us - Région :
us-east1 - Objectif : Proxy géré régional
- Plage d'adresses IP :
10.129.0.0/23
- Nom :
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 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.
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 des buckets Cloud Storage. Suivez ces instructions pour créer un second bucket dans la région us-east1.
gcloud
Créez le premier bucket 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-accessCréez le deuxième bucket également dans la région
us-east1à l'aide de la commandegcloud storage buckets create.gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access
Remplacez les variables BUCKET1_NAME et BUCKET2_NAME par 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.
Exécutez les commandes suivantes dans Cloud Shell en remplaçant les variables de nom de bucket par vos noms de buckets Cloud Storage uniques :
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, cliquez sur le nom de celui que vous souhaitez rendre public.
Sélectionnez l'onglet Autorisations.
Dans la section Autorisations, cliquez sur le bouton Accorder l'accès. 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.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \ --member=allUsers \ --role=roles/storage.objectViewer
Réserver l'adresse IP de l'équilibreur de charge
Réservez une adresse IP externe statique pour la règle de transfert de l'équilibreur de charge.
Console
Dans la console Google Cloud , accédez à la page Réserver une adresse statique.
Choisissez un Nom pour la nouvelle adresse.
Pour Version IP, sélectionnez IPv4.
Pour le Type, sélectionnez Régional.
Dans le champ Région, sélectionnez us-east1.
Laissez l'option Associé à définie sur Aucun. Une fois l'équilibreur de charge créé, cette adresse IP sera associée à la règle de transfert de l'équilibreur de charge.
Cliquez sur Réserver pour réserver l'adresse IP.
gcloud
Pour réserver une adresse IP externe statique, utilisez la commande
gcloud compute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=us-east1
Remplacez les éléments suivants :
ADDRESS_NAME: nom que vous souhaitez donner à cette adresse.
Utilisez la commande
gcloud compute addresses describepour afficher le résultat :gcloud compute addresses describe ADDRESS_NAME
L'adresse IP renvoyée est appelée RESERVED_IP_ADDRESS dans la section suivante.
Configurer l'équilibreur de charge avec des buckets backend
Cette section vous explique comment créer les ressources suivantes pour un équilibreur de charge d'application externe régional :
- 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. La règle de transfert possède une adresse IP externe.
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 ci-dessus à 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 chargeEXTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1gcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1Remplacez les variables
BUCKET1_NAMEetBUCKET2_NAMEpar les noms de vos buckets Cloud Storage.Cré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 URL_MAP_NAME \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1Remplacez la variable
URL_MAP_NAMEpar le nom du mappage d'URL.Configurez 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 URL_MAP_NAME \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \ --default-backend-bucket=backend-bucket-catsRemplacez la variable
URL_MAP_NAMEpar le nom du mappage d'URL.Cré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=URL_MAP_NAME \ --region=us-east1Remplacez la variable
URL_MAP_NAMEpar le nom du mappage d'URL.Pour 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.
Pour associer un certificat Certificate Manager, exécutez la commande suivante :
gcloud compute target-https-proxies create https-proxy \ --url-map=URL_MAP_NAME \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1Remplacez les éléments suivants :
URL_MAP_NAME: nom du mappage d'URLCERTIFICATE_NAME: 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.Pour le trafic HTTP, créez une règle de transfert régionale pour acheminer les requêtes entrantes vers le proxy HTTP cible :
gcloud compute forwarding-rules create http-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=80 \ --region=us-east1 \ --target-http-proxy=http-proxy \ --target-http-proxy-region=us-east1Pour le trafic HTTPS, créez une règle de transfert régionale pour acheminer les requêtes entrantes vers le proxy HTTPS cible :
gcloud compute forwarding-rules create https-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=https-proxy \ --target-https-proxy-region=us-east1
Envoyer une requête HTTP à l'équilibreur de charge
Maintenant que le service d'équilibrage de charge est en cours d'exécution, vous pouvez envoyer une requête à 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), qui se trouve dans la régionus-east1.gcloud compute forwarding-rules describe http-fw-rule \ --region=us-east1Copiez l'adresse IP renvoyée pour l'utiliser comme
FORWARDING_RULE_IP_ADDRESSà l'étape suivante.Envoyez une requête HTTP à l'adresse IP virtuelle (VIP) de la règle de transfert à 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
Étape suivante
- Présentation de l'équilibreur de charge d'application externe
- 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