Questo documento mostra come creare un bilanciatore del carico HTTP(S) esterno per il routing delle richieste di contenuti statici ai bucket Cloud Storage. Dopo aver configurato un bilanciatore del carico con i bucket di backend, le richieste ai percorsi URL che iniziano con /love-to-fetch
vengono inviate al bucket Cloud Storage, mentre tutte le altre vengono inviate al bucket Cloud Storage, indipendentemente dall'area geografica dell'utente.
Se i tuoi backend pubblicano contenuti dinamici su HTTP(S), valuta la possibilità di utilizzare servizi di backend anziché i bucket di backend.
Per indicazioni dettagliate su questa attività direttamente in Google Cloud Console, fai clic su Guida:
Nelle sezioni seguenti puoi seguire la stessa procedura utilizzata per fare clic su Procedura guidata.
Bucket Cloud Storage come backend del bilanciatore del carico
Un bilanciatore del carico HTTP(S) esterno utilizza una mappa URL per indirizzare il traffico da 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 nell'area geografica us-east1
. Tutte le altre richieste vengono inviate a un bucket Cloud Storage nell'area geografica
europe-north1
.
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 Cloud CDN nei tuoi contenuti.
I controlli di Cloud CDN includono, ad esempio, modalità cache, URL firmati e
invalidazione. Cloud CDN consente inoltre di memorizzare nella cache contenuti di grandi dimensioni (> 10 MB). Se non abiliti Cloud CDN nel tuo bucket di backend, puoi utilizzare solo le intestazioni Cache-Control
di origine per controllare la memorizzazione nella cache per contenuti più piccoli, come stabilito dai metadati di Cloud Storage.
Prima di iniziare
Assicurati che la configurazione soddisfi i seguenti prerequisiti. Se utilizzi le utilità gcloud
o gsutil
, puoi installarle entrambe seguendo le istruzioni fornite nel documento Quickstart: utilizzando lo strumento gsutil.
Imposta un progetto predefinito
console
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
-
Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
gcloud/gsutil
gcloud config set project PROJECT_ID
o
gsutil config set project PROJECT_ID
Sostituisci PROJECT_ID con il progetto che utilizzi per questa guida.
Autorizzazioni
Per seguire questa guida, devi creare un 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 obbligatorio |
---|---|
Crea componenti del bilanciatore del carico | Amministratore di rete |
Creare bucket Cloud Storage | Amministratore oggetti Storage |
Per ulteriori informazioni, consulta le seguenti guide:
Configurare una risorsa di certificato SSL
Per un bilanciatore del carico HTTPS, crea una risorsa certificato SSL come descritto nella seguente documentazione:
Ti consigliamo di utilizzare un certificato gestito da Google.
Questo esempio presuppone che tu abbia già una risorsa certificato SSL denominata www-ssl-cert
.
Preparare i bucket e i contenuti di Cloud Storage
Il processo per la preparazione dei bucket Cloud Storage è il seguente:
Crea i bucket.
Copia i contenuti nei bucket.
Fornisci accesso pubblico ai bucket.
Creare bucket Cloud Storage
In questo esempio, crei due bucket Cloud Storage a cui il bilanciatore del carico può accedere. Per i deployment di produzione, consigliamo di scegliere un bucket a più aree geografiche, che replica automaticamente gli oggetti in più aree geografiche Google Cloud. In questo modo puoi migliorare la disponibilità dei contenuti e la tolleranza di errore nell'applicazione.
Prendi nota dei nomi dei bucket Cloud Storage che crei, poiché vengono utilizzati in un secondo momento. In questa guida, vengono definiti BUCKET_1_NAME e BUCKET_2_NAME.
console
In Google Cloud Console, vai al browser Cloud Storage.
Fai clic su Crea bucket.
Nella casella Assegna un nome al bucket, inserisci un nome globalmente univoco che segua le linee guida per la denominazione.
Fai clic su Scegli dove archiviare i tuoi dati.
Imposta Tipo di località su Area geografica.
Imposta Località su europe-north1. BUCKET_1_NAME in questa guida.
Fai clic su Crea.
Fai clic su Browser per tornare al browser Cloud Storage. Segui queste istruzioni per creare un secondo bucket, ma imposta Località su us-east1. BUCKET_2_NAME in questa guida.
gcloud/gsutil
gsutil mb -p PROJECT_ID -c standard -l europe-north1 -b on gs://BUCKET_1_NAME
gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_2_NAME
Sostituisci BUCKET_1_NAME e BUCKET_2_NAME con i nomi dei bucket che vuoi creare.
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 nei tuoi bucket Cloud Storage.
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:
gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_1_NAME/never-fetch/
gsutil cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/love-to-fetch/
In Google Cloud Console, fai clic su Aggiorna nella pagina dei dettagli di ogni bucket per verificare che il file sia stato copiato.
Rendi pubblicamente leggibili i bucket Cloud Storage
Quando rendi i bucket Cloud Storage leggibili pubblicamente, chiunque su Internet può elencare e visualizzare i propri oggetti e visualizzare i relativi metadati (esclusi gli ACL). Non includere informazioni sensibili nei bucket pubblici.
Per ridurre il rischio di esposizione accidentale di informazioni sensibili, non archiviare oggetti pubblici e dati sensibili nello stesso bucket. Per ulteriori informazioni, consulta la pagina Architettura del bucket consigliata.
console
Per concedere a tutti gli utenti l'accesso per visualizzare gli oggetti nei tuoi bucket, ripeti la procedura seguente per ogni bucket:
In Google Cloud Console, vai al browser 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/gsutil
Per concedere a tutti gli utenti l'accesso per visualizzare gli oggetti nei tuoi bucket, esegui questi comandi:
gsutil iam ch allUsers:objectViewer gs://BUCKET_1_NAME
gsutil iam ch allUsers:objectViewer gs://BUCKET_2_NAME
Prenota un indirizzo IP esterno
Dopo aver configurato i bucket Cloud Storage, puoi riservare un indirizzo IP esterno statico e globale utilizzato dal pubblico per raggiungere il bilanciatore del carico.
Questo passaggio è facoltativo ma consigliato, poiché un indirizzo IP esterno statico fornisce un singolo indirizzo a cui indirizzare il dominio.
console
Vai alla pagina Indirizzi IP esterni in Google Cloud Console.
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/gsutil
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
Crea un bilanciatore del carico HTTP(S) 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 certificato SSL al frontend del bilanciatore del carico. Per ulteriori informazioni, consulta la panoramica dei certificati SSL.
console
Avvia la configurazione
Vai alla pagina Bilanciamento del carico in Google Cloud Console.
- Fai clic su Crea bilanciatore del carico.
- Nella scheda Bilanciamento del carico HTTP(S), fai clic su Avvia configurazione.
- Nella sezione Solo per Internet o interno, seleziona Da Internet alle mie VM o ai miei servizi serverless.
- In Globale o regionale, seleziona Bilanciatore del carico HTTP(S) globale (classico).
- Fai clic su Continua.
Configura il backend
Nella casella Nome, inserisci
http-lb
.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
, quindi seleziona BUCKET_2_NAME.Fai clic su OK.
Configura le regole host e percorso
Le regole dell'host e le corrispondenze di percorso sono componenti di configurazione di una mappa URL di un bilanciatore del carico HTTP(S) esterno. Per impostare le regole per questo esempio:
Fai clic su Regole host e percorso.
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 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 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 Seleziona un certificato o creane uno nuovo (Facoltativo) Attivare il reindirizzamento da HTTP a HTTPS Utilizza questa casella di controllo per attivare i reindirizzamenti dalla porta 80 alla porta 443. L'attivazione di questa casella di controllo crea 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 soltanto quando è selezionato il protocollo HTTPS e quando 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 la creazione del 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, è detta IP_ADDRESS.
gcloud/gsutil
Configura il backend
gcloud compute backend-buckets create dogs \
--gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create cats \
--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 \
--url-map=http-lb
Configura la regola di forwarding
gcloud compute forwarding-rules create http-lb-forwarding-rule \
--load-balancing-scheme=EXTERNAL \
--network-tier=PREMIUM \
--address=example-ip \
--global \
--target-http-proxy=http-lb-proxy \
--ports=80
Invia traffico al bilanciatore del carico
Alcuni minuti dopo la configurazione del bilanciatore del carico, puoi iniziare a inviare traffico all'indirizzo IP del bilanciatore del carico.
console
In un browser web, vai agli indirizzi seguenti per testare il bilanciatore del carico, sostituendo IP_ADDRESS con l'indirizzo IP del bilanciatore del carico:
http://IP_ADDRESS/amore-da-recuperare/due-cani.jpg
http://IP_ADDRESS/never-fetch/three-cats.jpg
Se hai configurato un bilanciatore del carico HTTP, assicurati che il tuo browser non reindirizzi automaticamente a HTTPS.
gcloud/gsutil
Usa il comando curl
per testare la risposta dai 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
Limitazioni
- I bucket di backend sono supportati solo con bilanciatori del carico HTTP(S) esterni globali e bilanciatore del carico HTTP(S) esterno globale (classico). Non sono supportati dal bilanciatore del carico HTTP(S) esterno a livello di area geografica o da qualsiasi altro tipo di bilanciatore del carico.
I bucket di backend non sono supportati con Identity-Aware Proxy.
Passaggi successivi
Configurazione del bilanciamento del carico su più aree geografiche
Utilizzo degli esempi di moduli Terraform per bilanciatori del carico HTTP(S) esterni