Cloud CDN utilizza la tua scelta tra bilanciatore del carico HTTP(S) esterno globale o bilanciatore del carico HTTP(S) esterno globale (classico) per fornire routing, controllo di integrità e supporto IP anycast. Poiché i bilanciatori del carico HTTP(S) esterni globali possono avere più istanza di backend backend (istanze VM di Compute Engine, pod di Google Kubernetes Engine, bucket Cloud Storage o backend esterni al di fuori di Google Cloud), puoi scegliere per quali backend (origini) abilitare Cloud CDN.
Questa guida alla configurazione mostra come creare un bilanciatore del carico HTTP(S) 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 unico bucket di backend del bilanciatore del carico, che funge da wrapper attorno al bucket Cloud Storage.
Un bucket di backend supporta quanto segue:
- Bucket Cloud Storage di qualsiasi classe di archiviazione, inclusi i bucket multiregionali
- Criteri di Cloud CDN per la memorizzazione dei contenuti nella cache 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 utilizzata da Cloud CDN. Se abiliti Cloud CDN nel bucket di backend, puoi utilizzare i controlli di Cloud CDN nei tuoi contenuti.
I controlli di Cloud CDN includono, ad esempio, modalità cache, URL firmati e
invalidamento. Cloud CDN permette inoltre di memorizzare nella cache contenuti di grandi dimensioni (> 10 MB). Se non abiliti Cloud CDN nel bucket di backend, puoi utilizzare solo intestazioni Cache-Control
di origine per controllare la memorizzazione nella cache per contenuti di dimensioni inferiori, come impostato dai metadati di Cloud Storage.
Backend bilanciatore del carico
Un bilanciatore del carico HTTP(S) esterno utilizza una mappa URL per indirizzare il traffico dagli URL specificati ai servizi specificati. La seguente tabella riassume i tipi di backend in cui puoi ospitare contenuti e servizi.
Configurazione del backend del bilanciatore del carico | Tipo di contenuti tipici | Tipi di backend |
---|---|---|
Servizio di backend | Dinamica (ad esempio i dati) |
|
Bucket di backend | Statico (ad es. immagini) |
|
Prima di iniziare
- Se utilizzi HTTPS per il frontend, crea un certificato SSL autogestito o gestito da Google. Ti consigliamo di utilizzare un certificato gestito da Google.
- Se stai utilizzando le utilità
gcloud
ogsutil
, consulta la sezione Guida rapida: utilizzo dello strumentogsutil
per installarle.
Console
- Nella console Google Cloud, vai alla home page.
- A destra di Google Cloud, seleziona un progetto dal menu a discesa.
gcloud o gsutil
gcloud config set project PROJECT_ID
o
gsutil config set project PROJECT_ID
Sostituisci PROJECT_ID
con l'ID del tuo progetto Google Cloud.
Terraform
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Crea un bucket Cloud Storage
Se hai già un bucket Cloud Storage non ancora assegnato a un bilanciatore del carico, puoi andare al passaggio successivo.
Quando crei un bucket Cloud Storage da utilizzare come backend per un bilanciatore del carico HTTP(S) esterno con Cloud CDN, ti consigliamo di scegliere un bucket a più aree geografiche, che replica automaticamente gli oggetti in più aree geografiche Google Cloud. Ciò può migliorare la disponibilità dei tuoi contenuti e la tolleranza di errore nell'applicazione.
Console
- Nella console Google Cloud, apri la pagina Bucket Cloud Storage.
- Fai clic su Crea bucket.
Specifica i valori per i campi nella seguente tabella, lasciando invariati gli altri per impostazione predefinita.
Proprietà Valore (digita il valore o seleziona un'opzione come specificato) Nome Inserisci un nome globalmente univoco per ogni bucket. Se il nome inserito non è univoco, viene visualizzato un messaggio che ti invita a provare con un altro nome. Tipo di posizione Più aree geografiche Località Seleziona una regione, ad esempio us (più regioni negli Stati Uniti). Classe di archiviazione predefinita Standard Controllo dell'accesso Uniforme Fai clic su Crea.
Annota il nome del bucket Cloud Storage appena creato per il passaggio successivo.
gsutil
gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_NAME
Terraform
Per creare un bucket, utilizza la risorsa google_storage_bucket
.
Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base.
Copia un file grafico nel bucket Cloud Storage
Per consentirti di testare la configurazione, copia un file grafico da un bucket Cloud Storage pubblico al tuo bucket Cloud Storage.
gsutil
Esegui questo comando in Cloud Shell. Sostituisci BUCKET_NAME
con il nome univoco del tuo bucket Cloud Storage:
gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/never-fetch/
Terraform
Per copiare l'oggetto, utilizza il comando local-exec
Provisioner
con il comando gsutil cp
.
resource "null_resource" "upload_image" { provisioner "local-exec" { command = "gsutil cp -r gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://${google_storage_bucket.default.name}/never-fetch/" } }
In alternativa, per caricare un oggetto, utilizza la risorsa google_storage_bucket_object
.
Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base.
Nella console Google Cloud, fai clic su Aggiorna per verificare che il file immagine sia copiato.
Rendi pubblico il tuo bucket Cloud Storage
In questo esempio il bucket Cloud Storage è pubblicamente leggibile. Questo è l'approccio consigliato per i contenuti pubblici. Con questa impostazione, chiunque su Internet può visualizzare ed elencare i tuoi oggetti e i relativi metadati, esclusi gli ACL. È consigliabile dedicare bucket Cloud Storage specifici per gli oggetti pubblici. Per ulteriori informazioni, consulta Architettura del bucket consigliata.
Di seguito sono riportate alcune alternative per rendere pubblici i bucket Cloud Storage:
Rendere oggetti pubblicamente leggibili per il singolo bucket Cloud Storage. Questo approccio è sconsigliato.
Utilizza gli URL firmati.
La procedura seguente concede a tutti gli utenti l'accesso per visualizzare gli oggetti 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
. - Come ruolo, seleziona Cloud Storage > Visualizzatore oggetti Storage.
- Fai clic su Salva.
gsutil
gsutil iam ch allUsers:objectViewer gs://BUCKET_NAME
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, vedi Comandi Terraform di base.
Prenotare un indirizzo IP esterno
Ora che il bucket Cloud Storage è attivo e in esecuzione, configura un indirizzo IP esterno statico e globale che i clienti utilizzino per raggiungere il bilanciatore del carico.
Questo passaggio è facoltativo, ma consigliato perché un indirizzo IP esterno statico fornisce un singolo indirizzo a cui indirizzare 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 un nome a
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, vedi Comandi Terraform di base.
Crea il bilanciatore del carico HTTP(S) esterno
In questa procedura, crei il bucket di backend del bilanciatore del carico, che funge da 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 HTTP(S) 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 fai clic su Continua.
- In Gestione avanzata del traffico, seleziona una delle seguenti opzioni:
- Per il bilanciatore del carico HTTP(S) esterno globale (versione classica), seleziona Bilanciatore del carico HTTP(S) classico.
- Per il bilanciatore del carico HTTP(S) esterno globale, 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
Creare il bucket di backend del bilanciatore del carico, che funge da wrapper per il bucket Cloud Storage. Quando crei o modifichi un bucket di backend, puoi abilitare Cloud CDN.
- Fai clic su Configurazione backend.
- In Servizi e bucket di backend, fai clic su Crea o seleziona servizi e bucket di backend, quindi fai clic su Bucket di backend > Crea un bucket di backend.
- Imposta il Nome su
cat-backend-bucket
. Non è necessario che sia un nome univoco a livello globale e può essere diverso dal nome del bucket Cloud Storage effettivo. - In Bucket Cloud Storage, fai clic su Sfoglia.
- Seleziona
BUCKET_NAME
Cloud Storage globalmente univoco che hai creato, quindi fai clic su Seleziona. Fai clic su Attiva Cloud CDN.
(Facoltativo) Modifica le impostazioni di modalità cache e TTL.
Fai clic su Crea.
Configura regole host e matcher percorso
Le regole host e i matcher percorso sono componenti di configurazione della mappa URL di un bilanciatore del carico HTTP(S) 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 saperne di più sulle regole host e sui matcher percorso, consulta la 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 bilanciatore del carico HTTP, devi avere un certificato SSL (
gcloud compute ssl-certificates list
) e compilare i campi come segue.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 le sezioni Bucket di backend, Regole host e percorso e 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à. È denominato
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 una delle seguenti opzioni:
CACHE_ALL_STATIC
oUSE_ORIGIN_HEADERS
: utilizza le intestazioni impostate in base ai metadati di controllo della cache in Cloud Storage. Cloud Storage fornisce sempre un'intestazioneCache-Control
a Cloud CDN. Se non viene scelto esplicitamente alcun valore, viene inviato un valore predefinito.FORCE_CACHE_ALL
: memorizza nella cache tutti i contenuti, ignorando eventuali istruzioniprivate
,no-store
ono-cache
nelle intestazioni delle risposteCache-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 HTTP(S) esterno globale, utilizza il
comando dell'interfaccia a riga di comando gcloud con
load-balancing-scheme=EXTERNAL_MANAGED
. Questa impostazione offre funzionalità avanzate di gestione del traffico. - Per un bilanciatore del carico HTTP(S) esterno globale (versione classica), 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 HTTP(S) esterno globale, da utilizzare con
load_balancing_scheme="EXTERNAL_MANAGED"
. Questa impostazione offre funzionalità avanzate di gestione del traffico. - Per un bilanciatore del carico HTTP(S) esterno globale (versione classica), utilizza
load_balancing_scheme="EXTERNAL"
.
Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base.
Invia traffico al bucket di backend
Dopo aver creato la regola di forwarding globale, potrebbero essere necessari diversi minuti per la propagazione della tua configurazione in tutto il mondo. Dopo qualche minuto, puoi 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 appena creato.Nella sezione Backend, verifica che il bucket di backend sia in stato integro. Deve essere presente un segno di spunta verde accanto al bucket di backend. In caso contrario, prova a ricaricare la pagina. La console Google Cloud può impiegare qualche istante per indicare che i backend sono in stato integro.
Quando la console Google Cloud mostra che il bucket di backend è in stato integro, puoi testare il bilanciatore del carico tramite un browser web dalla pagina
http://IP_ADDRESS/never-fetch/three-cats.jpg
. SostituisciIP_ADDRESS
con l'indirizzo IP del bilanciatore del carico. Il browser dovrebbe visualizzare una pagina con contenuti che mostrano il file grafico.
gcloud
Usa il comando curl
per testare la risposta dall'URL. Sostituisci IP_ADDRESS
con l'indirizzo IPv4 del bilanciatore del carico.
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 la pagina http://IP_ADDRESS/never-fetch/three-cats.jpg
più volte in rapida successione, dovrebbero essere presenti più hit della cache.
La seguente voce di log mostra un successo della cache. Per visualizzare gli hit della cache, apri Esplora log nella console Google Cloud e filtra in base al nome della regola di forwarding.
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 appena creato.Nella sezione Backend, verifica che il bucket di backend sia in stato integro. Deve essere presente un segno di spunta verde accanto al bucket di backend. In caso contrario, prova a ricaricare la pagina. La console Google Cloud può impiegare qualche istante per indicare che i backend sono in stato integro.
Quando la console Google Cloud mostra che il bucket di backend è in stato integro, puoi testare il bilanciatore del carico tramite un browser web dalla pagina
http://IP_ADDRESS/never-fetch/three-cats.jpg
. SostituisciIP_ADDRESS
con l'indirizzo IP del bilanciatore del carico. Il browser dovrebbe visualizzare una pagina con contenuti che mostrano il file grafico.
gcloud
Usa il comando curl
per testare la risposta dall'URL. Sostituisci IP_ADDRESS
con l'indirizzo IPv4 del bilanciatore del carico.
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, quindi convalidati e recuperati nuovamente quando scade o vengono altrimenti rimossi dalla cache.
I contenuti della cache hanno un'intestazione Age
superiore a zero.
I contenuti che devono essere aggiornati prima del TTL possono essere invalidati e recuperati nuovamente da Cloud Storage.
Disabilita 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 di origine, fai clic su Menu e seleziona Modifica.
- Deseleziona le caselle di controllo relative ai bucket di backend di cui vuoi interrompere l'utilizzo di Cloud CDN.
- Fai clic su Aggiorna.
Rimuovi Cloud CDN per tutti i bucket di backend per un'origine
- Nella console Google Cloud, vai alla pagina Cloud CDN.
- Sul lato destro della riga di origine, fai clic su Menu , quindi seleziona Rimuovi.
- Fai clic su Rimuovi per confermare.
gcloud
gcloud compute backend-buckets update BACKEND_BUCKET_NAME \ --no-enable-cdn
La disabilitazione di Cloud CDN non invalida o elimina definitivamente le cache. Se disattivi Cloud CDN e poi lo riattivi, la maggior parte dei contenuti memorizzati nella cache potrebbe comunque essere memorizzata nella cache. Per impedire che i contenuti vengano utilizzati dalle cache, devi invalidare tali contenuti.
Passaggi successivi
- Per sapere quali contenuti sono memorizzati nella cache, consulta la panoramica sulla memorizzazione nella cache.
- Per utilizzare Cloud CDN in GKE, consulta Funzionalità in entrata.
- Per verificare se Cloud CDN sta pubblicando risposte dalla cache, consulta Visualizzazione dei log.
- Per trovare informazioni sui problemi comuni e sulle relative soluzioni, consulta la sezione Risoluzione dei problemi.
- Per configurare i criteri di filtro e controllo dell'accesso ai contenuti, consulta Criteri di sicurezza perimetrali.