Questo documento illustra come creare un
bilanciatore del carico delle applicazioni esterno
per inoltrare le richieste di contenuti statici ai
bucket Cloud Storage. Dopo aver configurato un bilanciatore del carico con i bucket di backend, le richieste per i percorsi URL che iniziano con /love-to-fetch
vengono inviate al bucket Cloud Storage us-east1
e tutte le altre richieste vengono inviate al bucket Cloud Storage europe-north1
, indipendentemente dalla regione dell'utente.
Se i tuoi backend pubblicano contenuti dinamici su HTTP(S), valuta la possibilità di utilizzare servizi di backend anziché bucket di backend.
Se sei già un utente del bilanciatore del carico delle applicazioni classico, assicurati di esaminare la Panoramica della migrazione quando pianifichi un nuovo deployment con il bilanciatore del carico delle applicazioni esterno globale.Bucket Cloud Storage come backend del bilanciatore del carico
Un bilanciatore del carico delle applicazioni esterno utilizza una mappa URL per indirizzare il traffico dai percorsi URL specificati ai tuoi backend.
Nel diagramma seguente, il bilanciatore del carico invia il traffico con un percorso di
/love-to-fetch/
a un bucket Cloud Storage nella regione us-east1
. Tutte le altre richieste vengono inviate a un bucket Cloud Storage nella regione europe-north1
.
Per impostazione predefinita, Cloud Storage utilizza la stessa cache
di Cloud CDN. Se attivi Cloud CDN nel
bucket di backend, puoi utilizzare i controlli di Cloud CDN sui tuoi contenuti.
I controlli di Cloud CDN includono, ad esempio, le modalità cache, gli URL firmati e la convalida. Cloud CDN ti consente anche di memorizzare nella cache contenuti di grandi dimensioni (> 10 MB). Se
non attivi Cloud CDN nel bucket di backend, puoi utilizzare solo
le intestazioni Cache-Control
di origine per controllare la memorizzazione nella cache per i contenuti più piccoli, come impostato
dai metadati di Cloud Storage.
Prima di iniziare
Assicurati che la configurazione soddisfi i seguenti prerequisiti. Se utilizzi
l'utilità gcloud storage
, puoi installarla seguendo le istruzioni riportate in
Scopri l'archiviazione di oggetti con lo strumento gcloud.
Impostare un progetto predefinito
Console
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
gcloud
gcloud config set project PROJECT_ID
Sostituisci PROJECT_ID
con il progetto che utilizzi per questa guida.
Terraform
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Autorizzazioni
Per seguire questa guida, devi creare bucket Cloud Storage e un bilanciatore del carico in un progetto. Devi essere un proprietario o un editor del progetto oppure disporre dei seguenti ruoli IAM di Compute Engine:
Attività | Ruolo richiesto |
---|---|
Crea componenti del bilanciatore del carico | Amministratore di rete |
Creazione di bucket di Cloud Storage | Storage Object Admin |
Per ulteriori informazioni, consulta le seguenti guide:
Configura una risorsa del certificato SSL
Per un bilanciatore del carico HTTPS, crea una risorsa del certificato SSL come descritto nella seguente documentazione:
- Utilizzare i certificati SSL con gestione indipendente
- Utilizzare i certificati SSL gestiti da Google
Ti consigliamo di utilizzare un certificato gestito da Google.
In questo esempio si presuppone che tu abbia già una risorsa del certificato SSL denominata
www-ssl-cert
.
Prepara i bucket e i contenuti di Cloud Storage
La procedura per preparare i bucket Cloud Storage è la seguente:
Crea i bucket.
Copia i contenuti nei bucket.
Fornisci l'accesso pubblico ai bucket.
Creazione di bucket di Cloud Storage
In questo esempio, crei due bucket Cloud Storage a cui deve accedere il bilanciatore del carico. Per i deployment in produzione, ti consigliamo di scegliere un bucket multiregionale, che consente di riprodurre automaticamente gli oggetti in più regioni Google Cloud. In questo modo puoi migliorare la disponibilità dei tuoi contenuti e la tolleranza agli errori nell'intera applicazione.
Prendi nota dei nomi dei bucket Cloud Storage che crei, poiché verranno riutilizzati in seguito. In questa guida, vengono indicati come BUCKET_1_NAME e BUCKET_2_NAME.
Console
Nella console Google Cloud, vai alla pagina Bucket Cloud Storage.
Fai clic su Crea bucket.
Nella casella Assegna un nome al bucket, inserisci un nome univoco globale che rispetti le linee guida per l'assegnazione dei nomi.
Fai clic su Scegli dove archiviare i tuoi dati.
Imposta Tipo di località su Area geografica.
Imposta Località su europe-north1. Questo è BUCKET_1_NAME in questa guida.
Fai clic su Crea.
Fai clic su Bucket per tornare alla pagina Bucket Cloud Storage. Segui queste istruzioni per creare un secondo bucket, ma imposta Località su us-east1. Si tratta di BUCKET_2_NAME in questa guida.
gcloud
gcloud storage buckets create gs://BUCKET_1_NAME --project=PROJECT_ID --default-storage-class=standard --location=europe-north1 --uniform-bucket-level-access
gcloud storage buckets create gs://BUCKET_2_NAME --project=PROJECT_ID --default-storage-class=standard --location=us-east1 --uniform-bucket-level-access
Sostituisci BUCKET_1_NAME
e BUCKET_2_NAME
con i nomi dei bucket che vuoi creare.
Terraform
Per creare i bucket, utilizza la risorsa google_storage_bucket
.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Trasferisci i contenuti nei bucket Cloud Storage
Per testare la configurazione in un secondo momento, copia le seguenti immagini da un bucket Cloud Storage pubblico ai tuoi bucket Cloud Storage.
gcloud
Fai clic su
Attiva Cloud Shell.Esegui i comandi seguenti in Cloud Shell, sostituendo le variabili dei nomi dei bucket con i nomi dei bucket Cloud Storage:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_1_NAME/never-fetch/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/love-to-fetch/
Terraform
Per copiare gli elementi nel bucket, puoi utilizzare la risorsa google_storage_bucket_object
.
In alternativa, utilizza la risorsa null_resource
.
resource "null_resource" "upload_cat_image" { provisioner "local-exec" { command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://${google_storage_bucket.bucket_1.name}/never-fetch/" } } resource "null_resource" "upload_dog_image" { provisioner "local-exec" { command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://${google_storage_bucket.bucket_2.name}/love-to-fetch/" } }
Nella console Google Cloud, fai clic su Aggiorna nella pagina dei dettagli di ciascun bucket per verificare che il file sia stato copiato correttamente.
Rendi pubblicamente leggibili i bucket Cloud Storage
Quando rendi i bucket Cloud Storage pubblicamente leggibili, chiunque su internet può elencare e visualizzare gli oggetti e i relativi metadati (esclusi gli ACL). Non includere informazioni sensibili nei bucket pubblici.
Per ridurre la probabilità di esposizione accidentale di informazioni sensibili, non memorizzare oggetti pubblici e dati sensibili nello stesso bucket.
Console
Per concedere a tutti gli utenti l'accesso in visualizzazione agli oggetti nei bucket, ripeti la seguente procedura per ogni bucket:
Nella console Google Cloud, vai alla pagina Bucket Cloud Storage.
Fai clic sul nome del bucket, quindi sulla scheda Autorizzazioni.
Fai clic su Aggiungi.
Nella casella Nuove entità, inserisci
allUsers
.Nella casella Seleziona un ruolo, seleziona Cloud Storage > Visualizzatore oggetti Storage.
Fai clic su Salva.
Fai clic su Consenti accesso pubblico.
gcloud
Per concedere a tutti gli utenti l'accesso in visualizzazione agli oggetti nei bucket, esegui i seguenti comandi:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET_2_NAME --member=allUsers --role=roles/storage.objectViewer
Terraform
Per concedere a tutti gli utenti l'accesso in visualizzazione agli oggetti nei bucket, utilizza la
risorsa google_storage_bucket_iam_member
e specifica il membro allUsers
.
Prenotare un indirizzo IP esterno
Dopo aver configurato i bucket Cloud Storage, puoi prenotare un indirizzo IP esterno statico globale utilizzato dal pubblico per raggiungere il bilanciatore del carico.
Questo passaggio è facoltativo, ma consigliato, in quanto un indirizzo IP esterno statico fornisce un singolo indirizzo a cui indirizzare il tuo dominio.
Console
Nella console Google Cloud, vai alla pagina Indirizzi IP esterni.
Fai clic su Prenota indirizzo statico.
Nella casella Nome, inserisci
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 esterno, utilizza la
risorsa google_compute_global_address
.
Creare un bilanciatore del carico delle applicazioni esterno con bucket di backend
Queste istruzioni riguardano la creazione di un bilanciatore del carico HTTP o HTTPS. Per creare un bilanciatore del carico HTTPS, devi aggiungere una risorsa del certificato SSL al frontend del bilanciatore del carico. Per ulteriori informazioni, consulta la panoramica dei certificati SSL.
Console
Avvia la configurazione
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic su Crea bilanciatore del carico.
- In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
- In Pubblico o interno, seleziona Pubblico (esterno) e fai clic su Avanti.
- In Deployment globale o in una regione singola, seleziona Ideale per carichi di lavoro globali e fai clic su Avanti.
- In Generazione del bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni esterno globale e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- Nella casella Nome, inserisci
http-lb
.
Configura il backend
Fai clic su Configurazione backend.
Fai clic sulla casella Servizi di backend e bucket di backend, quindi su Crea un bucket di backend.
Nella casella Nome bucket di backend, inserisci
cats
.Nella casella Bucket Cloud Storage, fai clic su Sfoglia.
Seleziona BUCKET_1_NAME, quindi fai clic su Seleziona. Quando si crea il bucket di backend
cats
, viene impostato come predefinito e vi vengono indirizzate tutte le richieste di traffico senza corrispondenza. Non puoi modificare le regole di reindirizzamento di un bucket di backend predefinito nel bilanciatore del carico.Fai clic su Crea.
Utilizza la stessa procedura per creare un bucket di backend denominato
dogs
e seleziona BUCKET_2_NAME.Fai clic su OK.
Configura le regole di routing
Le regole di routing determinano come viene indirizzato il traffico. Per configurare il routing, configurerai le regole host e i matcher percorso, che sono componenti di configurazione della mappa URL di un bilanciatore del carico delle applicazioni esterno. Per impostare le regole per questo esempio:
- Fai clic su Regole di routing.
- Per
dogs
, inserisci*
nel campo Host e/love-to-fetch/*
nel campo Percorsi.
Configura il frontend
Fai clic su Configurazione frontend.
Verifica che le seguenti 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 (Facoltativo) Timeout keepalive HTTP Inserisci un valore di timeout compreso tra 5 e 1200 secondi. Il valore predefinito è 610 secondi. Se vuoi creare un bilanciatore del carico HTTPS anziché un bilanciatore del carico HTTP, devi disporre di un certificato SSL (
gcloud compute ssl-certificates list
) e devi compilare i campi come segue:Proprietà Valore (digita un valore o seleziona un'opzione come specificato) Protocollo HTTP(S) Livello di servizio di rete Premium Versione IP IPv4 Indirizzo IP example-ip Porta 443 (Facoltativo) Timeout keepalive HTTP Inserisci un valore di timeout compreso tra 5 e 1200 secondi. Il valore predefinito è 610 secondi. Certificato Seleziona il certificato www-ssl-cert
che hai creato nella sezione Configurare una risorsa del certificato SSL o creane uno nuovo.(Facoltativo) Attiva il reindirizzamento da HTTP a HTTPS Utilizza questa casella di controllo per attivare i reindirizzamenti. Se attivi questa casella di controllo, viene creato un bilanciatore del carico HTTP parziale aggiuntivo che utilizza lo stesso indirizzo IP del bilanciatore del carico HTTPS e reindirizza le richieste HTTP al frontend HTTPS del bilanciatore del carico.
Questa casella di controllo può essere selezionata solo se è selezionato il protocollo HTTPS e viene utilizzato un indirizzo IP riservato.
Fai clic su Fine.
Rivedi la configurazione
Fai clic su Esamina e finalizza.
Esamina le regole di frontend, host e percorso e i bucket di backend.
Fai clic su Crea e attendi che venga creato il bilanciatore del carico.
Fai clic sul nome del bilanciatore del carico (http-lb).
Prendi nota dell'indirizzo IP del bilanciatore del carico, che utilizzerai nella prossima attività. In questa guida, viene indicato come IP_ADDRESS.
gcloud
Configura il backend
gcloud compute backend-buckets create cats \ --gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create dogs \ --gcs-bucket-name=BUCKET_2_NAME
Configura la mappa URL
gcloud compute url-maps create http-lb \ --default-backend-bucket=cats
gcloud compute url-maps add-path-matcher http-lb \ --path-matcher-name=path-matcher-2 \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=dogs" \ --default-backend-bucket=cats
Configura il proxy di destinazione
gcloud compute target-http-proxies create http-lb-proxy \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --url-map=http-lb
Sostituisci HTTP_KEEP_ALIVE_TIMEOUT_SEC
con il valore del timeout keepalive HTTP del client compreso tra 5 e 1200 secondi. Il valore predefinito è 610 secondi. Questo campo è facoltativo.
Configura la regola di forwarding
gcloud compute forwarding-rules create http-lb-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=example-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
Per creare il bilanciatore del carico, utilizza le seguenti risorse Terraform.
Configura il backend
Per creare il backend, utilizza la risorsa google_compute_backend_bucket
.
Configura la mappa URL
Per creare la mappa URL, utilizza la risorsa google_compute_url_map
.
Configura il proxy di destinazione
Per creare il proxy HTTP di destinazione, utilizza la risorsa google_compute_target_http_proxy
.
Configura la regola di forwarding
Per creare la regola di forwarding, utilizza la risorsa google_compute_global_forwarding_rule
.
NOTA: per impostare la modalità su bilanciatore del carico delle applicazioni classico, imposta l'attributo load_balancing_scheme
su
"EXTERNAL"
anziché su "EXTERNAL_MANAGED"
.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Invia traffico al bilanciatore del carico
Molti minuti dopo aver configurato il bilanciatore del carico, puoi iniziare a inviare traffico al suo indirizzo IP.
Console
La console Google Cloud non è supportata.
gcloud
Utilizza il comando curl
per testare la risposta dei seguenti URL. Sostituisci IP_ADDRESS
con l'indirizzo IPv4 del bilanciatore del carico:
curl http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
curl http://IP_ADDRESS/never-fetch/three-cats.jpg
Configurazione aggiuntiva
Questa sezione espande l'esempio di configurazione per fornire opzioni di configurazione alternative e aggiuntive. Tutte le attività sono facoltative. Puoi eseguire queste operazioni in qualsiasi ordine.
Aggiorna il timeout keepalive HTTP del client
Il bilanciatore del carico creato nei passaggi precedenti è stato configurato con un valore predefinito per il timeout del keepalive HTTP del client.Per aggiornare il timeout keepalive HTTP del client, segui le istruzioni riportate di seguito.
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic sul nome del bilanciatore del carico da modificare.
- Fai clic su Modifica.
- Fai clic su Configurazione frontend.
- Espandi Funzionalità avanzate. In Timeout keepalive HTTP, inserisci un valore di timeout.
- Fai clic su Aggiorna.
- Per rivedere le modifiche, fai clic su Rivedi e finalizza e poi su Aggiorna.
gcloud
Per un bilanciatore del carico HTTP, aggiorna il proxy HTTP di destinazione utilizzando il comando 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
Per un bilanciatore del carico HTTPS, aggiorna il proxy HTTPS di destinazione utilizzando il comando 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
Sostituisci quanto segue:
TARGET_HTTP_PROXY_NAME
: il nome del proxy HTTP di destinazione.TARGET_HTTPS_PROXY_NAME
: il nome del proxy HTTPS di destinazione.HTTP_KEEP_ALIVE_TIMEOUT_SEC
: il valore del timeout keepalive HTTP da 5 a 600 secondi.
Limitazioni
- I bucket di backend sono supportati solo con bilanciatori del carico delle applicazioni esterni globali e bilanciatori del carico delle applicazioni classici. Non sono supportati dal bilanciatore del carico delle applicazioni esterno regionale o da qualsiasi altro tipo di bilanciatore del carico.
- I bucket di backend non sono supportati con Identity-Aware Proxy.
- Il bilanciatore del carico delle applicazioni esterno globale non supporta i caricamenti nei bucket Cloud Storage.
Passaggi successivi
- Configurazione del bilanciamento del carico su più regioni
- Configurazione di Cloud CDN con un bucket di backend