Ce guide s'appuie sur un exemple pour expliquer les principes fondamentaux de l'utilisation d'un backend externe (parfois appelé origine personnalisée) avec un équilibreur de charge d'application externe mondial. Un backend externe est un point de terminaison externe à Google Cloud. Lorsque vous utilisez un backend externe avec un équilibreur de charge d'application externe mondial, vous pouvez améliorer les performances en utilisant la mise en cache Cloud CDN.
Ce guide vous explique comment configurer un équilibreur de charge d'application externe mondial avec un service de backend équipé de Cloud CDN et agissant comme proxy pour les requêtes adressées à un serveur backend externe.
Avant de suivre ce guide, consultez la documentation de présentation des NEG Internet, y compris les limites.Le schéma d'architecture suivant présente une interface d'équilibreur de charge d'application externe mondial avec un backend externe.
Autorisations
Pour suivre ce guide, vous devez créer un NEG Internet, puis créer ou modifier un équilibreur de charge d'application externe dans un projet. Vous devez être propriétaire ou éditeur du projet (roles/owner
ou roles/editor
) ou disposer des deux rôles IAM Compute Engine suivants.
Tâche | Rôle requis |
---|---|
Créer et modifier des composants d'équilibreur de charge | Administrateur de réseaux Compute ( roles/compute.networkAdmin ) |
Créer et modifier des NEG | Administrateur d'instances Compute ( roles/compute.instanceAdmin ) |
Configurer votre environnement backend externe en dehors de Google Cloud
Pour configurer votre environnement, consultez les sections suivantes.
Configurer des points de terminaison du réseau
Configurez un point de terminaison du réseau pour exposer votre backend externe à Google Cloud. Assurez-vous que le point de terminaison (combinaison IP:Port, nom de domaine complet et port) est accessible sur Internet. Ce point de terminaison est référencé ultérieurement depuis le NEG Internet.
Pour connaître les exigences de configuration détaillées des points de terminaison NEG Internet, consultez la présentation des NEG Internet.
Autoriser le backend externe à recevoir du trafic provenant de Google Cloud
Pour permettre aux requêtes de Google Cloud d'atteindre votre backend externe, vous devez ajouter les plages d'adresses IP utilisées par Google pour envoyer des requêtes à des backends externes. Pour rechercher les adresses IP qui doivent être autorisées à envoyer du trafic vers vos backends externes, interrogez l'enregistrement TXT DNS _cloud-eoips.googleusercontent.com
à l'aide d'un outil comme dig
ou nslookup
.
Exemples :
Exécutez la commande
nslookup
suivante :nslookup -q=TXT _cloud-eoips.googleusercontent.com 8.8.8.8
La sortie ressemble à ceci :
Non-authoritative answer: _cloud-eoips.googleusercontent.com text = "v=spf1 ip4:34.96.0.0/20 ip4:34.127.192.0/18 ~all"
Notez les plages CIDR qui suivent
ip4:
et assurez-vous qu'elles sont autorisées par les règles de pare-feu ou les listes de contrôle d'accès (LCA) au cloud configurées sur votre backend externe.Exécutez la commande
dig
suivante :dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2
Le résultat contient deux plages d'adresses IP, comme suit :
34.96.0.0/20 34.127.192.0/18
Configurer votre environnement Google Cloud
Créez l'équilibreur de charge d'application externe mondial avec un backend de NEG Internet.
Réserver une adresse IP externe
Réservez une adresse IP externe statique globale que les clients utiliseront pour accéder à votre application.
Console
Dans Google Cloud Console, accédez à la page Adresses IP externes.
Cliquez sur Réserver une adresse statique externe pour réserver une adresse IPv4.
Saisissez un nom.
Pour Niveau de service réseau, sélectionnez Premium.
Pour Version IP, sélectionnez IPv4.
Pour le champ Type, sélectionnez Global.
Cliquez sur Réserver.
gcloud
gcloud compute addresses create LB_IP_ADDRESS_NAME \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Notez l'adresse IPv4 réservée :
gcloud compute addresses describe LB_IP_ADDRESS_NAME \ --format="get(address)" \ --global
Configurer le NEG Internet
Console
Dans la console Google Cloud, accédez à la page Groupes de points de terminaison du réseau.
Accéder à la page Groupes de points de terminaison du réseau
Cliquez sur Créer un groupe de points de terminaison du réseau.
Saisissez un nom.
Pour le type de groupe de points de terminaison du réseau, sélectionnez Groupe de points de terminaison du réseau Internet.
Pour le port par défaut, saisissez
443
.Pour le nouveau point de terminaison du réseau, sélectionnez Nom de domaine complet et port.
Saisissez le nom de domaine complet.
Pour le type de port, sélectionnez Par défaut et vérifiez que le numéro de port est
443
.Cliquez sur Créer.
gcloud
Créez un NEG Internet et définissez
--network-endpoint-type
surinternet-fqdn-port
(le nom d'hôte et le port où votre backend externe peut être atteint) :gcloud compute network-endpoint-groups create INTERNET_NEG_NAME \ --network-endpoint-type="internet-fqdn-port" \ --global
Ajoutez votre point de terminaison au NEG. Si aucun port n'est spécifié, le port est défini par défaut sur
80
(HTTP) ou443
(HTTPS, HTTP/2) en fonction du protocole configuré dans le service de backend. Veillez à inclure l'option--global
:gcloud compute network-endpoint-groups update INTERNET_NEG_NAME \ --add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME,port=443" \ --global
Créer l'équilibreur de charge
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 du frontend
- Cliquez sur Configuration de l'interface.
- Saisissez un nom.
Pour créer un équilibreur de charge HTTPS, vous devez disposer d'un certificat SSL. Nous vous recommandons d'utiliser un certificat géré par Google.
Vérifiez que les options suivantes sont configurées avec ces valeurs.
Propriété Valeur (saisissez une valeur ou sélectionnez une option spécifiée) Protocole HTTPS Niveau de service réseau Premium Version IP IPv4 Adresse IP Sélectionnez l'adresse IP créée à l'étape Réserver une adresse IP externe. Port 443 Facultatif: délai d'expiration du message keepalive HTTP Saisissez une valeur de délai avant expiration comprise entre 5 et 1 200 secondes. La valeur par défaut est de 610 secondes. Certificat Sélectionnez un certificat SSL existant ou créez-en un.
Pour créer un équilibreur de charge HTTPS, vous devez disposer d'une ressource de certificat SSL à utiliser dans le proxy HTTPS. Vous pouvez créer une ressource de certificat SSL à l'aide d'un certificat SSL géré par Google ou d'un certificat SSL autogéré.
Pour créer un certificat géré par Google, vous devez disposer d'un domaine. L'enregistrement A du domaine doit correspondre à l'adresse IP de l'équilibreur de charge (dans cet exemple,
example-ip
). Nous vous recommandons d'utiliser des certificats gérés par Google, car Google Cloud obtient et gère et renouvelle automatiquement ces certificats. Si ce n'est pas le cas, vous pouvez utiliser un certificat SSL autosigné pour les tests.Facultatif : Activer la redirection HTTP vers HTTPS Cochez cette case pour activer les redirections HTTP vers HTTPS.
Cochez cette case pour créer un équilibreur de charge HTTP partiel supplémentaire qui utilise la même adresse IP que votre équilibreur de charge HTTPS et redirige les requêtes HTTP vers l'interface HTTPS de votre équilibreur de charge.
Cette case ne peut être cochée que lorsque le protocole HTTPS est sélectionné et qu'une adresse IP réservée est utilisée.
Si vous souhaitez tester ce processus sans configurer une ressource de certificat SSL (ou un domaine comme requis par les certificats gérés par Google), vous pouvez configurer un équilibreur de charge HTTP.
Pour créer un équilibreur de charge HTTP, vérifiez que les options suivantes sont configurées avec ces valeurs :
Propriété Valeur (saisissez une valeur ou sélectionnez une option spécifiée) Protocole HTTP Niveau de service réseau Premium Version IP IPv4 Adresse IP Sélectionnez l'adresse IP créée à l'étape Réserver une adresse IP externe. Port 80 Facultatif: délai d'expiration du message keepalive HTTP Saisissez une valeur de délai avant expiration comprise entre 5 et 1 200 secondes. La valeur par défaut est de 610 secondes. Cliquez sur OK.
Configuration du backend
- Cliquez sur Configuration du backend.
- Cliquez sur Services de backend et buckets backend.
- Cliquez sur Créer un service backend.
- Saisissez un nom.
- Pour le type de backend, sélectionnez Groupe de points de terminaison du réseau Internet.
- Pour le champ Protocole, sélectionnez le protocole que vous souhaitez utiliser depuis l'équilibreur de charge vers le NEG Internet. Pour cet exemple, sélectionnez HTTP/2.
- Pour les Backends, dans la fenêtre Nouveau backend, sélectionnez le NEG Internet créé à l'étape précédente.
- Cliquez sur Créer.
Vérifier et finaliser
- Cliquez sur Vérifier et finaliser.
- Si tout semble correct, cliquez sur Créer.
gcloud
- Créez un service de backend :
gcloud compute backend-services create BACKEND_SERVICE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
- Ajoutez le NEG Internet au service de backend :
gcloud compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=INTERNET_NEG_NAME \ --global-network-endpoint-group \ --global
- Créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend :
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE \ --global
N'effectuez cette étape que si vous souhaitez créer un équilibreur de charge HTTPS. Cette opération n'est pas requise pour les équilibreurs de charge HTTP.
Pour créer un équilibreur de charge HTTPS, vous devez disposer d'une ressource de certificat SSL à utiliser dans le proxy cible HTTPS. Vous pouvez créer une ressource de certificat SSL à l'aide d'un certificat SSL géré par Google ou d'un certificat SSL autogéré. Nous vous recommandons d'utiliser des certificats gérés par Google, car Google Cloud obtient, gère et renouvelle automatiquement ces certificats.
Pour créer un certificat géré par Google, vous devez disposer d'un domaine. Si ce n'est pas le cas, vous pouvez utiliser un certificat SSL autogéré pour effectuer les tests.
Pour créer une ressource de certificat SSL géré par Google, procédez comme suit :gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAIN
Pour créer une ressource de certificat SSL autogéré, procédez comme suit :gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
Créez un proxy HTTP(S) cible, qui va rediriger les requêtes vers votre mappage d'URL.
Pour un équilibreur de charge HTTP, créez un proxy HTTP cible :
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --global
Pour un équilibreur de charge HTTPS, créez un proxy cible HTTPS. Le serveur proxy est la partie de l'équilibreur de charge qui contient le certificat SSL pour l'équilibrage de charge HTTPS. Vous chargez donc également votre certificat à cette étape :
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --global
Remplacez les éléments suivants :
TARGET_HTTP_PROXY_NAME
: nom du proxy HTTP cible.TARGET_HTTPS_PROXY_NAME
: nom du proxy HTTPS cible.SSL_CERTIFICATE_NAME
: nom du certificat SSL.URL_MAP_NAME
: nom du mappage d'URL.
--http-keep-alive-timeout-sec
. La valeur de ce délai doit être comprise entre 5 et 1 200 secondes. La valeur par défaut est de 610 secondes.Créez une règle de transfert pour acheminer les requêtes entrantes vers le proxy.
Pour un équilibreur de charge HTTP, utilisez ce qui suit :
gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=LB_IP_ADDRESS_NAME \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --global \ --ports=80
Pour un équilibreur de charge HTTPS, utilisez ce qui suit :
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=LB_IP_ADDRESS_NAME \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --global \ --ports=443
Connecter un domaine à votre équilibreur de charge
Une fois l'équilibreur de charge créé, notez l'adresse IP associée à celui-ci (par exemple, 30.90.80.100
). Pour faire pointer votre domaine vers votre équilibreur de charge, créez un enregistrement A
à l'aide de votre service d'enregistrement de domaine. Si vous avez ajouté plusieurs domaines à votre certificat SSL, vous devez ajouter un enregistrement A
à chacun d'eux, tous pointant vers l'adresse IP de l'équilibreur de charge. Par exemple, pour créer des enregistrements A
pour www.example.com
et example.com
, utilisez le code suivant :
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Si vous utilisez Cloud DNS comme fournisseur DNS, consultez la section Ajouter, modifier et supprimer des enregistrements.
Tester l'équilibreur de charge
Maintenant que vous avez configuré votre équilibreur de charge, vous pouvez commencer à envoyer du trafic vers son adresse IP. Si vous avez configuré un domaine, vous pouvez également envoyer du trafic vers le nom de domaine. Toutefois, la propagation DNS peut prendre un certain temps. Vous pouvez donc commencer à utiliser l'adresse IP à des fins de test.
Console
Dans la console Google Cloud, accédez à la page Équilibrage de charge.
Cliquez sur l'équilibreur de charge que vous venez de créer.
Notez l'adresse IP de l'équilibreur de charge.
Envoyez du trafic vers l'équilibreur de charge.
Si vous avez créé un équilibreur de charge HTTP, vous pouvez le tester en accédant à
http://IP_ADDRESS
. RemplacezIP_ADDRESS
par l'adresse IP de l'équilibreur de charge. Vous devriez être redirigé vers l'application que vous exécutez sur le backend externe.Si vous avez créé un équilibreur de charge HTTPS, vous pouvez le tester en accédant à
https://IP_ADDRESS
. RemplacezIP_ADDRESS
par l'adresse IP de l'équilibreur de charge. Vous devriez être redirigé vers l'application que vous exécutez sur le backend externe.
Si cela ne fonctionne pas et que vous utilisez un certificat géré par Google, vérifiez que l'état de votre ressource de certificat est ACTIF. Pour plus d'informations, consultez la section État des ressources de certificat SSL géré par Google.
Vous pouvez également utiliser
curl
depuis l'interface de ligne de commande de votre machine locale. RemplacezIP_ADDRESS
par l'adresse IPv4 de l'équilibreur de charge. Si vous utilisez un certificat géré par Google, testez le domaine qui pointe vers l'adresse IP de l'équilibreur de charge. Par exemple :curl -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
Facultatif : Si vous utilisez un domaine personnalisé, vous devrez peut-être attendre la propagation des paramètres DNS mis à jour. Testez ensuite votre domaine dans le navigateur Web.
Pour obtenir de l'aide concernant le dépannage, consultez la section Résoudre les problèmes liés aux backends externes et aux NEG Internet.
Configuration supplémentaire
Cette section développe l'exemple de configuration et propose d'autres options de configuration. Toutes les tâches décrites ici sont facultatives. Vous pouvez les exécuter dans n'importe quel ordre.
Enable Cloud CDN
Lorsque Cloud CDN est activé, l'équilibreur de charge d'application externe n'envoie des requêtes au backend NEG Internet qu'en cas de défaut de cache (miss) Cloud CDN.
Console
Dans la console Google Cloud, accédez à la page Équilibrage de charge.
Cliquez sur le nom de l'équilibreur de charge que vous souhaitez modifier.
Cliquez sur Modifier (
).Cliquez sur Configuration du backend.
Pour le service de backend avec le backend NEG Internet, cliquez sur
Modifier.Sélectionnez Activer Cloud CDN.
(Facultatif) Modifiez les paramètres du mode cache et TTL.
Cliquez sur Mettre à jour.
Pour vérifier vos modifications, cliquez sur Vérification et finalisation, puis sur Mettre à jour.
gcloud
- Pour activer Cloud CDN sur le service de backend, exécutez la commande suivante :
gcloud compute backend-services update BACKEND_SERVICE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE
Définissez le mode cache en remplaçant
CACHE_MODE
par l'un des éléments suivants :CACHE_All_STATIC
: met automatiquement en cache le contenu statique.USE_ORIGIN_HEADERS
(par défaut) : exige que l'origine définisse des en-têtes de mise en cache valides pour mettre en cache le contenu.FORCE_CACHE_ALL
: met en cache tout le contenu, en ignorant les directivesprivate
,no-store
ouno-cache
dans les en-têtes de réponseCache-Control
.
Utiliser un en-tête personnalisé pour authentifier les requêtes
Pour authentifier les requêtes envoyées à votre backend externe, vous pouvez définir un en-tête personnalisé pour indiquer qu'elles proviennent d'un équilibreur de charge Google Cloud. Par exemple, vous pouvez configurer le backend externe pour qu'il attende une valeur particulière pour l'en-tête Host
de la requête HTTP. Vous pouvez également configurer le service de backend pour définir l'en-tête Host
sur cette valeur attendue.
Procédez comme suit pour configurer le service de backend afin d'ajouter un en-tête Host
personnalisé à chaque requête.
Console
Dans la console Google Cloud, accédez à la page Équilibrage de charge.
Cliquez sur le nom de l'équilibreur de charge que vous souhaitez modifier.
Cliquez sur Modifier (
).Cliquez sur Configuration du backend.
Pour le service de backend avec le backend NEG Internet, cliquez sur
Modifier.Cliquez sur Configurations avancées.
Pour En-têtes de requêtes personnalisés, cliquez sur Ajouter un en-tête.
- Dans le champ Nom de l'en-tête, saisissez
Host
. - Dans le champ Valeur d'en-tête, saisissez
FQDN_NEG_ENDPOINT
.
- Dans le champ Nom de l'en-tête, saisissez
Cliquez sur Mettre à jour.
Pour vérifier vos modifications, cliquez sur Vérification et finalisation, puis sur Mettre à jour.
gcloud
- Exécutez la commande suivante pour configurer le service de backend afin d'ajouter un en-tête `Host` personnalisé à chaque requête.
gcloud compute backend-services update BACKEND_SERVICE \ --custom-request-header "Host: HEADER_VALUE" \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Assurez-vous également que vous avez configuré le backend externe pour qu'il attende un en-tête Host
afin qu'il puisse authentifier les requêtes entrantes.
Pour obtenir des informations générales sur les en-têtes de requête personnalisés, consultez la page Configurer des en-têtes de requête personnalisés. Pour connaître les autres méthodes d'authentification, consultez la page Authentifier les requêtes sur le backend externe.
Activer IAP sur l'équilibreur de charge d'application externe
Remarque : IAP n'est pas compatible avec Cloud CDN.Vous pouvez configurer IAP pour l'activer ou le désactiver (par défaut). Si cette option est activée, vous devez fournir des valeurs pour oauth2-client-id
et oauth2-client-secret
.
Pour activer IAP, mettez à jour le service de backend afin d'inclure l'indicateur --iap=enabled
avec oauth2-client-id
et oauth2-client-secret
.
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --iap=enabled,oauth2-client-id=ID,oauth2-client-secret=SECRET \ --global
Mettre à jour le délai d'expiration du message keepalive HTTP client
L'équilibreur de charge créé lors des étapes précédentes a été configuré avec une valeur par défaut pour le délai d'expiration du message keepalive HTTP du client. Pour mettre à jour le délai d'expiration du message HTTP du client, suivez les instructions ci-dessous.
Console
Dans la console Google Cloud, accédez à la page Équilibrage de charge.
- Cliquez sur le nom de l'équilibreur de charge que vous souhaitez modifier.
- Cliquez sur Modifier ( ).
- Cliquez sur Configuration de l'interface.
- Développez la section Fonctionnalités avancées. Dans le champ Délai avant expiration du message keepalive HTTP, saisissez une valeur de délai avant expiration comprise entre 5 et 1 200 secondes.
- Cliquez sur Mettre à jour.
- Pour vérifier vos modifications, cliquez sur Vérification et finalisation, puis sur Mettre à jour.
gcloud
Pour un équilibreur de charge HTTP, mettez à jour le proxy HTTP cible à l'aide de la commande gcloud compute target-http-proxies update
:
gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --global
Pour un équilibreur de charge HTTPS, mettez à jour le proxy HTTPS cible à l'aide de la commande gcloud compute target-https-proxies update
:
gcloud compute target-https-proxies update TARGET_HTTPS_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --global
Remplacez les éléments suivants :
TARGET_HTTP_PROXY_NAME
: nom du proxy HTTP cible.TARGET_HTTPS_PROXY_NAME
: nom du proxy HTTPS cible.HTTP_KEEP_ALIVE_TIMEOUT_SEC
: valeur du délai avant expiration du message keepalive HTTP comprise entre 5 et 1 200 secondes.
Étapes suivantes
- Consultez la page Afficher les journaux pour vérifier si Cloud CDN diffuse des réponses à partir d'un cache.
- Pour savoir quels contenus peuvent être mis en cache ou non, consultez la page Présentation de la mise en cache.
- Pour trouver des points de présence Cloud CDN, consultez la section Emplacements de cache.
- Nettoyez la configuration de l'équilibreur de charge.
- Pour savoir comment désactiver Cloud CDN, consultez la page Désactiver Cloud CDN.