Cloud CDN utilizza la tua scelta il bilanciatore del carico delle applicazioni esterno globale o il bilanciatore del carico delle applicazioni classico routing, controllo di integrità e supporto IP anycast. Poiché a livello globale i bilanciatori del carico delle applicazioni esterni possono più istanza di backend backend: Istanze VM di Compute Engine, pod di Google Kubernetes Engine, Cloud Storage bucket o backend esterni all'esterno di Google Cloud, puoi scegliere per quali backend (origini) abilitare Cloud CDN.
Questa guida alla configurazione mostra come creare un bilanciatore del carico delle applicazioni esterno con Cloud CDN abilitato. L'esempio utilizza le seguenti risorse:
- La rete Virtual Private Cloud (VPC) predefinita
- Una mappa URL predefinita
- Un indirizzo IP esterno riservato
- Un bucket Cloud Storage come backend.
- Un singolo bucket di backend del bilanciatore del carico che funge da wrapper attorno al Bucket Cloud Storage
Un bucket di backend supporta quanto segue:
- in qualsiasi bucket Cloud Storage classe di archiviazione, tra cui Bucket multiregionale
- Criteri di Cloud CDN per la memorizzazione nella cache dei contenuti sul perimetro globale di Google
Per scoprire come funziona Cloud CDN, consulta la Panoramica di Cloud CDN.
Per impostazione predefinita, Cloud Storage utilizza la stessa cache
usate da Cloud CDN. Se abiliti Cloud CDN sul backend
puoi utilizzare i controlli di Cloud CDN sui tuoi contenuti.
I controlli di Cloud CDN includono, ad esempio, modalità cache, URL firmati e
o l'annullamento della convalida. Cloud CDN consente anche di memorizzare nella cache contenuti di grandi dimensioni (> 10 MB). Se
non abiliti Cloud CDN sul tuo bucket di backend, puoi usare solo
intestazioni Cache-Control
di origine per controllare la memorizzazione nella cache per contenuti più piccoli, come impostato
dai metadati di Cloud Storage.
Backend bilanciatore del carico
Un bilanciatore del carico delle applicazioni esterno utilizza una mappa URL per indirizzare il traffico dagli URL specificati a ai servizi specificati. La tabella seguente riassume i tipi di backend su cui puoi ospitare contenuti e servizi.
Configurazione del backend del bilanciatore del carico | Tipo di media tipico | Tipi di backend |
---|---|---|
Servizio di backend | Dinamico (ad es. dati) |
|
Bucket di backend | Statico (ad esempio immagini) |
|
Prima di iniziare
- Se utilizzi HTTPS per il frontend, crea un protocollo SSL certificato, autogestito o gestito da Google. Ti consigliamo di utilizzare un certificato gestito da Google.
- Se utilizzi Google Cloud CLI, consulta Scopri l'archiviazione di oggetti con lo strumento gcloud per installarlo.
Console
- Nella console Google Cloud, vai alla home page.
- A destra di Google Cloud, seleziona un progetto dal menu a discesa.
gcloud
gcloud config set project PROJECT_ID
Sostituisci PROJECT_ID
con il tuo Google Cloud
dell'ID progetto.
Terraform
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Crea un bucket Cloud Storage
Se hai già un bucket Cloud Storage non assegnato a un bilanciatore del carico, puoi andare al passaggio successivo.
Quando crei un bucket Cloud Storage da utilizzare come backend per un un bilanciatore del carico delle applicazioni esterno con Cloud CDN, ti consigliamo di scegliere bucket multiregionale, che esegue automaticamente replica gli oggetti in più regioni Google Cloud. Questo può migliorare la disponibilità dei tuoi contenuti e migliorare la tolleranza agli errori in un'applicazione.
Console
- Nella console Google Cloud, apri la pagina Bucket Cloud Storage.
- Fai clic su Crea bucket.
Specifica i valori per i campi della tabella seguente, lasciando tutti le altre impostazioni predefinite.
Proprietà Valore (digita il valore o seleziona un'opzione come specificato) Nome Per ciascun bucket, inserisci un nome globalmente univoco. Se il nome che inserisci non è univoco, vedrai un messaggio che ti invita a provarne un altro nome. Tipo di posizione Più regioni Località Seleziona una regione, ad esempio us (più regioni negli Stati Uniti). Classe di archiviazione predefinita Standard Controllo degli accessi Uniforme Fai clic su Crea.
Prendi nota del nome del bucket Cloud Storage appena creato per il passaggio successivo.
gcloud
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_ID --default-storage-class=standard --location=us-east1 --uniform-bucket-level-access
Terraform
Per creare un bucket, utilizza google_storage_bucket
risorsa.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta: Comandi Terraform di base.
Copia un file grafico nel bucket Cloud Storage
Per testare la configurazione, copia un file grafico da un bucket Cloud Storage pubblico al tuo bucket Cloud Storage.
gcloud
Esegui questo comando in Cloud Shell. Sostituisci
BUCKET_NAME
con il tuo Cloud Storage univoco
nome bucket:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/never-fetch/
Terraform
Per copiare l'oggetto, utilizza local-exec
Provisioner
con il comando gcloud storage cp
.
resource "null_resource" "upload_image" { provisioner "local-exec" { command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://${google_storage_bucket.default.name}/never-fetch/ --recursive" } }
In alternativa, per caricare un oggetto, utilizza la risorsa google_storage_bucket_object
.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta: Comandi Terraform di base.
Nella console Google Cloud, fai clic su Aggiorna per verificare che il file grafico sia stato copiato.
Rendi pubblico il bucket Cloud Storage
Questo esempio rende pubblico il bucket Cloud Storage leggibili. Questo è l'approccio consigliato per i contenuti pubblici. Con questa impostazione, chiunque abbia internet può visualizzare ed elencare gli oggetti e i relativi metadati, esclusi gli ACL. Per ridurre il rischio di esposizione indesiderata dei dati, in genere è consigliabile dedicare bucket Cloud Storage specifici per gli oggetti pubblici.
Di seguito sono riportate delle alternative alla creazione di un'intera Cloud Storage bucket pubblico:
Utilizza le cartelle gestite per rendi una parte del bucket leggibile.
Rendi singolarmente leggibili gli oggetti. Sconsigliamo di usare questo approccio perché utilizza un modello legacy, Sistema di autorizzazioni specifico di Cloud Storage.
Utilizza URL firmati.
La procedura seguente concede a tutti gli utenti l'accesso per visualizzare gli oggetti nel tuo nel bucket Cloud Storage, rendendo il bucket leggibile pubblicamente.
Console
- Nella console Google Cloud, apri la pagina Bucket Cloud Storage.
- Vai al bucket e fai clic sulla scheda Autorizzazioni.
- Fai clic su Aggiungi entità.
- In Nuove entità, inserisci
allUsers
. - Per il ruolo, seleziona Cloud Storage > Visualizzatore oggetti Storage.
- Fai clic su Salva.
gcloud
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
Terraform
Per rendere pubblico il bucket Cloud Storage, utilizza la risorsa google_storage_bucket_iam_member
.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Prenotare un indirizzo IP esterno
Ora che il tuo bucket Cloud Storage è in esecuzione, configura una indirizzo IP esterno statico usate dai clienti per raggiungere il bilanciatore del carico.
Questo passaggio è facoltativo, ma consigliato, perché un indirizzo IP esterno statico fornisce un unico indirizzo a cui puntare il dominio.
Console
- Nella console Google Cloud, vai alla pagina Indirizzi IP esterni.
- Per prenotare un indirizzo IPv4, fai clic su Prenota indirizzo statico.
- Assegna il nome di
example-ip
. - Imposta Network Service Tier su Premium.
- Imposta la versione IP su IPv4.
- Imposta il Tipo su Globale.
- Fai clic su Prenota.
gcloud
gcloud compute addresses create example-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Prendi nota dell'indirizzo IPv4 riservato:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Terraform
Per prenotare un indirizzo IP, utilizza la risorsa google_compute_global_address
.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Crea il bilanciatore del carico delle applicazioni esterno
In questa procedura, creerai il bucket di backend del bilanciatore del carico, che gestisce come wrapper per il bucket Cloud Storage. Quando crei o modifichi un bucket di backend, puoi abilitare Cloud CDN.
Console
Avvia il processo di configurazione del bilanciatore del carico delle applicazioni esterno
- Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- In Bilanciamento del carico HTTP(S), fai clic su Avvia configurazione.
- Seleziona Da internet alle mie VM e poi fai clic su Continua.
- Nella sezione Traffico avanzato
, seleziona
uno dei seguenti:
- Per i bilanciatori del carico delle applicazioni classici, seleziona Bilanciatore del carico HTTP(S) classico.
- Per i bilanciatori del carico delle applicazioni esterni globali, seleziona Bilanciatore del carico HTTP(S) con gestione avanzata del traffico.
- Imposta Nome su
http-lb
, quindi vai al passaggio successivo.
Configura il backend e abilita Cloud CDN
Crea il bucket di backend del bilanciatore del carico, che funge da wrapper per il tuo bucket Cloud Storage. Quando crei o modifichi un bucket di backend, abilitare Cloud CDN.
- Fai clic su Configurazione backend.
- In Servizi e bucket di backend, fai clic su Crea o seleziona servizi di backend e bucket di backend e poi su Bucket di backend > Crea un bucket di backend.
- Imposta il Nome su
cat-backend-bucket
. Questo nome non deve essere necessariamente a livello globale e può essere diverso dal nome effettivo nel bucket Cloud Storage. - In Bucket Cloud Storage, fai clic su Sfoglia.
- Seleziona l'account Cloud Storage univoco a livello globale
BUCKET_NAME
che hai creato e poi fai clic su Seleziona. Fai clic su Abilita Cloud CDN.
(Facoltativo) Modifica la modalità cache e Impostazioni TTL.
Fai clic su Crea.
Configura regole host e matcher percorso
Le regole host e i matcher percorso sono componenti di configurazione la mappa URL del bilanciatore del carico delle applicazioni esterno.
In Regole host e percorso, puoi mantenere le impostazioni predefinite.
Per un esempio di configurazione personalizzata, consulta Aggiunta di bucket di backend ai bilanciatori del carico.
Per scoprire di più sulle regole host e sui matcher percorso, consulta Panoramica delle mappe URL.
Configura il frontend
- Fai clic su Configurazione frontend.
Verifica che le opzioni siano configurate con questi valori.
Proprietà Valore (digita un valore o seleziona un'opzione come specificato) Protocollo HTTP Livello di servizio di rete Premium Versione IP IPv4 Indirizzo IP example-ip
Porta 80 Se vuoi creare un bilanciatore del carico HTTPS anziché un carico HTTP devi disporre di un protocollo SSL certificato (
gcloud compute ssl-certificates list
) e devi compilare i campi come indicato di seguito.Proprietà Valore (digita un valore o seleziona un'opzione come specificato) Protocollo HTTPS Livello di servizio di rete Premium Versione IP IPv4 Indirizzo IP example-ip
Porta 443 Certificato Seleziona un certificato o Crea un nuovo certificato Fai clic su Fine.
Rivedi la configurazione
- Fai clic su Esamina e finalizza.
- Esamina i bucket di backend, le regole host e percorso e Sezioni di frontend.
- Fai clic su Crea.
- Attendi che la creazione del bilanciatore del carico sia completa.
- Fai clic sul nome del bilanciatore del carico (http-lb).
- Prendi nota dell'indirizzo IP del bilanciatore del carico, che utilizzerai nella prossima attività. È
denominata
IP_ADDRESS
.
gcloud
Configura il backend
gcloud compute backend-buckets create cat-backend-bucket \ --gcs-bucket-name=BUCKET_NAME \ --enable-cdn \ --cache-mode=CACHE_MODE
Imposta la modalità cache sostituendo CACHE_MODE con uno dei seguenti:
CACHE_ALL_STATIC
oUSE_ORIGIN_HEADERS
: utilizza le intestazioni impostate secondo il controllo cache metadati in di archiviazione ideale in Cloud Storage. Cloud Storage sempre fornisce un'intestazioneCache-Control
a Cloud CDN. Se non viene scelto esplicitamente un valore, ne viene inviato uno predefinito.FORCE_CACHE_ALL
: memorizza nella cache tutti i contenuti, ignorando eventualiprivate
, Istruzionino-store
ono-cache
nella rispostaCache-Control
inviate da Cloud Storage.
Configura la mappa URL
gcloud compute url-maps create http-lb \ --default-backend-bucket=cat-backend-bucket
Configura il proxy di destinazione
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=http-lb
Configura la regola di forwarding
-
Per un bilanciatore del carico delle applicazioni esterno globale, utilizza il
comando gcloud CLI con
load-balancing-scheme=EXTERNAL_MANAGED
. Questo impostazione offre traffico avanzato funzionalità di gestione dei dati. - Per un bilanciatore del carico delle applicazioni classico, utilizza
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-lb-forwarding-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=example-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
Configura il backend
Per configurare il backend, utilizza la risorsa google_compute_backend_bucket
.
Configura la mappa URL
Per configurare il backend, utilizza la risorsa google_compute_url_map
.
Configura il proxy di destinazione
Per configurare il proxy di destinazione, utilizza la risorsa google_compute_target_http_proxy
o la risorsa google_compute_target_https_proxy
.
Configura la regola di forwarding
Per configurare la regola di forwarding, utilizza la risorsa google_compute_global_forwarding_rule
.
- Per un bilanciatore del carico delle applicazioni esterno globale, utilizza
load_balancing_scheme="EXTERNAL_MANAGED"
. Questa impostazione offre funzionalità di gestione avanzata del traffico. - Per un bilanciatore del carico delle applicazioni classico, utilizza
load_balancing_scheme="EXTERNAL"
.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Invia traffico al bucket di backend
Dopo aver creato la regola di forwarding globale, potrebbero essere necessari diversi minuti prima che per propagarsi a livello mondiale. Dopo alcuni minuti, puoi per iniziare a inviare traffico all'indirizzo IP del bilanciatore del carico,
Console
- Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Fai clic su
http-lb
per espandere il bilanciatore del carico di cui è stato creato.Nella sezione Backend, verifica che il bucket di backend sia integro. Dovresti vedere un segno di spunta verde accanto al tuo backend. di sincronizzare la directory di una VM con un bucket. Se la risposta è diversa, prova innanzitutto a ricaricare la pagina. Potrebbero essere necessari alcuni minuti prima che la console Google Cloud indichi che i backend sono operativi.
Dopo che la console Google Cloud mostra che il bucket di backend è in stato integro, puoi testare il bilanciatore del carico usando un browser web
http://IP_ADDRESS/never-fetch/three-cats.jpg
. SostituisciIP_ADDRESS
con indirizzo IP del bilanciatore del carico. Il browser dovrebbe visualizzare una pagina con contenuti che mostrano il file grafico.
gcloud
Utilizza il comando curl
per testare la risposta dall'URL. Sostituisci
IP_ADDRESS
con il IPv4 del bilanciatore del carico
di sicurezza.
Prendi nota dell'indirizzo IPv4 riservato:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Invia una richiesta curl:
curl http://IP_ADDRESS/never-fetch/three-cats.jpg
Verificare il funzionamento di Cloud CDN
Se ricarichi il
http://IP_ADDRESS/never-fetch/three-cats.jpg
pagina
più volte in rapida successione, dovrebbero verificarsi vari hit della cache.
La seguente voce di log mostra un successo della cache. Puoi visualizzare i successi della cache Console Google Cloud aprendo Esplora log e filtrando in base al forwarding il nome della regola.
Esplora log
{ insertId: "1oek5rg3l3fxj7" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" cacheId: "SFO-fbae48ad" statusDetails: "response_from_cache" } httpRequest: { requestMethod: "GET" requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/never-fetch/three-cats.jpg" requestSize: "577" status: 254 responseSize: "157" userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" remoteIp: "CLIENT_IP_ADDRESS" cacheHit: true cacheLookup: true } resource: { type: "http_load_balancer" labels: { zone: "global" url_map_name: "URL_MAP_NAME" forwarding_rule_name: "FORWARDING_RULE_NAME" target_proxy_name: "TARGET_PROXY_NAME" backend_service_name: "" project_id: "PROJECT_ID" } } timestamp: "2020-06-08T23:41:25.078651Z" severity: "INFO" logName: "projects/PROJECT_ID/logs/requests" trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992" receiveTimestamp: "2020-06-08T23:41:25.588272510Z" spanId: "7b6537d3672e08e1" }
Console
- Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Fai clic su
http-lb
per espandere il bilanciatore del carico di cui è stato creato.Nella sezione Backend, verifica che il bucket di backend sia integro. Dovresti vedere un segno di spunta verde accanto al tuo backend. di sincronizzare la directory di una VM con un bucket. Se la risposta è diversa, prova innanzitutto a ricaricare la pagina. Potrebbero essere necessari alcuni minuti prima che la console Google Cloud indichi che i backend sono operativi.
Dopo che la console Google Cloud mostra che il bucket di backend è in stato integro, puoi testare il bilanciatore del carico usando un browser web
http://IP_ADDRESS/never-fetch/three-cats.jpg
. SostituisciIP_ADDRESS
con indirizzo IP del bilanciatore del carico. Il browser dovrebbe visualizzare una pagina con contenuti che mostrano il file grafico.
gcloud
Utilizza il comando curl
per testare la risposta dall'URL. Sostituisci
IP_ADDRESS
con il IPv4 del bilanciatore del carico
di sicurezza.
Prendi nota dell'indirizzo IPv4 riservato:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Invia una richiesta curl:
curl -D- -o /dev/null /dev/null http://IP_ADDRESS/never-fetch/three-cats.jpg
I contenuti vengono recuperati da Cloud Storage, memorizzati nella cache da Cloud CDN e poi convalidato e ricaricato quando scade o viene altrimenti rimosso nella cache.
I contenuti della cache hanno un'intestazione Age
maggiore di zero.
I contenuti che devono essere aggiornati prima del TTL possono essere invalidized e recuperare da di archiviazione ideale in Cloud Storage.
Disattivare Cloud CDN
Console
Disabilita Cloud CDN per un singolo bucket di backend
- Nella console Google Cloud, vai alla pagina Cloud CDN.
- Sul lato destro della riga dell'origine, fai clic su Menu e poi seleziona Modifica.
- Deseleziona le caselle di controllo di tutti i bucket di backend che non vuoi più utilizzare Cloud CDN.
- Fai clic su Aggiorna.
Rimuovere Cloud CDN per tutti i bucket di backend di un'origine
- Nella console Google Cloud, vai alla pagina Cloud CDN.
- Sul lato destro della riga di origine, fai clic su Menu e seleziona Rimuovi.
- Fai clic su Rimuovi per confermare.
gcloud
gcloud compute backend-buckets update BACKEND_BUCKET_NAME \ --no-enable-cdn
La disattivazione di Cloud CDN non comporta l'annullamento della convalida o l'eliminazione delle cache. Se disattivare e riattivare Cloud CDN, la maggior parte o tutti i dati potrebbero comunque essere memorizzati nella cache. Per impedire che i contenuti vengano utilizzati da di cache, devi annullarne i contenuti.
Passaggi successivi
- Per scoprire quali contenuti vengono memorizzati nella cache, consulta la Panoramica della memorizzazione nella cache.
- Per utilizzare Cloud CDN in GKE, consulta Funzionalità di Ingress.
- Per verificare se Cloud CDN fornisce risposte dalla cache, consulta Visualizzazione dei log.
- Per trovare informazioni sui problemi comuni e le relative soluzioni, vedi Risoluzione dei problemi.
- Per configurare i criteri di filtro e controllo dell'accesso per i tuoi contenuti, consulta: Criteri di sicurezza perimetrale.