Questo documento mostra come creare un bilanciatore del carico delle applicazioni esterno regionale per instradare le richieste di contenuti statici ai bucket Cloud Storage.
Prima di iniziare
Assicurati che la tua configurazione soddisfi i seguenti prerequisiti.
Installa Google Cloud CLI
Alcune istruzioni di questa guida possono essere eseguite solo utilizzando Google Cloud CLI. Per installarlo, vedi Installa gcloud CLI.
Puoi trovare i comandi relativi al bilanciamento del carico nel documento Riferimenti per API e gcloud CLI.
Ruoli obbligatori
Se hai creato il progetto, ti viene concesso il
ruolo Proprietario
(roles/owner). Per impostazione predefinita, il ruolo Proprietario (roles/owner) o
il ruolo Editor (roles/editor) include le autorizzazioni necessarie
per seguire questo documento.
Se non sei l'autore del progetto, le autorizzazioni richieste devono essere concesse al principal appropriato. Ad esempio, un'entità può essere un Account Google (per gli utenti finali) o un service account.
Per ottenere le autorizzazioni necessarie per creare bucket Cloud Storage e risorse di rete, chiedi all'amministratore di concederti i seguenti ruoli IAM per il progetto:
-
Crea una rete VPC e componenti di bilanciamento del carico:
Ruolo Compute Network Admin (
roles/compute.networkAdmin) -
Crea bucket Cloud Storage:
Ruolo Amministratore oggetti Storage (
roles/storage.objectAdmin)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Per saperne di più su ruoli e autorizzazioni per Cloud Load Balancing, consulta Ruoli e autorizzazioni. Per saperne di più sulla definizione delle policy IAM con concessioni condizionali per le regole di forwarding, consulta Condizioni IAM per le regole di forwarding.
Configura una risorsa del certificato SSL
Per un bilanciatore del carico delle applicazioni esterno regionale che utilizza HTTPS come protocollo di richiesta e risposta, puoi creare una risorsa certificato SSL utilizzando un certificato SSL di Compute Engine o un certificato Certificate Manager.
Per questo esempio, crea una risorsa del certificato SSL utilizzando Certificate Manager come descritto in uno dei seguenti documenti:
- Deployment di un certificato gestito da Google regionale con autorizzazione DNS
- Deployment di un certificato regionale gestito da Google con Certificate Authority Service
- Esegui il deployment di un certificato autogestito regionale
Dopo aver creato il certificato, puoi collegarlo al proxy di destinazione HTTPS.
Ti consigliamo di utilizzare un certificato gestito da Google.
Limitazioni
Si applicano le seguenti limitazioni ai bucket Cloud Storage quando fungono da backend per un bilanciatore del carico delle applicazioni esterno regionale:
L'accesso privato al bucket non è supportato, pertanto il bucket di backend deve essere accessibile pubblicamente su internet.
Gli URL firmati non sono supportati.
L'integrazione di Cloud CDN non è disponibile quando crei bucket di backend per un bilanciatore del carico delle applicazioni esterno regionale.
Quando utilizzi un bilanciatore del carico delle applicazioni esterno regionale per accedere ai bucket di backend, è supportato solo il metodo HTTP
GET. Puoi scaricare contenuti dal bucket, ma il caricamento di contenuti nel bucket tramite il bilanciatore del carico delle applicazioni esterno regionale non è disponibile.Per un bilanciatore del carico delle applicazioni esterno regionale, i bucket Cloud Storage sono supportati solo nella regione in cui è configurato il bilanciatore del carico. I bucket dual-region o multiregionali non sono supportati.
Panoramica della configurazione
Il seguente diagramma mostra un bilanciatore del carico delle applicazioni esterno regionale con bucket di backend situati nella stessa regione del bilanciatore del carico.
La regola di forwarding del bilanciatore del carico delle applicazioni esterno regionale ha un indirizzo IP esterno.
Nelle sezioni seguenti configurerai le diverse risorse come mostrato nel diagramma precedente.
Configura la rete e la subnet solo proxy
Questo esempio utilizza la seguente rete VPC, regione e subnet solo proxy:
Rete. La rete è una rete VPC in modalità personalizzata denominata
lb-network.Subnet per i proxy Envoy. Una subnet denominata
proxy-only-subnet-usnella regioneus-east1utilizza10.129.0.0/23per il suo intervallo IP primario.
Configura una rete VPC in modalità personalizzata
Console
Nella console Google Cloud , vai alla pagina Reti VPC.
Fai clic su Crea rete VPC.
In Nome, inserisci
lb-network.Fai clic su Crea.
gcloud
Crea una rete VPC personalizzata, denominata
lb-network, con il comandogcloud compute networks create.gcloud compute networks create lb-network --subnet-mode=custom
Configura la subnet solo proxy
Una subnet solo proxy fornisce un insieme di indirizzi IP che Google Cloud utilizza per eseguire proxy Envoy per tuo conto. I proxy terminano le connessioni dal client e creano nuove connessioni ai backend.
Questa subnet solo proxy viene utilizzata da tutti i bilanciatori del carico regionali basati su Envoy nella stessa regione della rete VPC. Può essere presente una sola subnet solo proxy attiva per uno scopo specifico, per regione e per rete.
Console
Nella console Google Cloud , vai alla pagina Reti VPC.
Fai clic sul nome della rete VPC che hai creato.
Nella scheda Subnet, fai clic su Aggiungi subnet.
Inserisci le seguenti informazioni:
- Nome:
proxy-only-subnet-us - Regione:
us-east1 - Scopo: proxy gestito a livello di regione
- Intervallo di indirizzi IP:
10.129.0.0/23
- Nome:
Fai clic su Aggiungi.
gcloud
Crea una subnet solo proxy nella regione
us-east1con il comandogcloud compute networks subnets create.gcloud compute networks subnets create proxy-only-subnet-us \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-east1 \ --network=lb-network \ --range=10.129.0.0/23
Configura i bucket Cloud Storage
La procedura per configurare i bucket Cloud Storage è la seguente:
- Crea i bucket.
- Copia i contenuti nei bucket.
Creazione di bucket di Cloud Storage
In questo esempio, crei due bucket Cloud Storage nella regione us-east1.
Console
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
Fai clic su Crea.
Nella sezione Inizia, 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.
Dall'elenco delle regioni, seleziona us-east1.
Fai clic su Crea.
Fai clic su Bucket per tornare alla pagina Bucket Cloud Storage. Segui queste istruzioni per creare un secondo bucket nella regione us-east1.
gcloud
Crea il primo bucket nella regione
us-east1con il comandogcloud storage buckets create.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-accessCrea il secondo bucket anche nella regione
us-east1con il comandogcloud storage buckets create.gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access
Sostituisci le variabili BUCKET1_NAME
e BUCKET2_NAME
con i nomi dei tuoi bucket Cloud Storage.
Copia i file grafici nei bucket Cloud Storage
Per consentirti di testare la configurazione, copia un file grafico da un bucket Cloud Storage pubblico ai tuoi bucket Cloud Storage.
Esegui i comandi seguenti in Cloud Shell, sostituendo le variabili dei nomi dei bucket con i nomi univoci dei bucket Cloud Storage:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
Rendi pubblicamente leggibili i bucket Cloud Storage
Per rendere leggibili tutti gli oggetti in un bucket da parte di chiunque su internet, concedi all'entità allUsers il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer).
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 in Cloud Storage.
Nell'elenco dei bucket, fai clic sul nome del bucket che vuoi rendere pubblico.
Seleziona la scheda Autorizzazioni.
Nella sezione Autorizzazioni, fai clic sul pulsante Concedi l'accesso. Viene visualizzata la finestra di dialogo Concedi l'accesso.
Nel campo Nuove entità, inserisci
allUsers.Nel campo Seleziona un ruolo, inserisci
Storage Object Viewernella casella del filtro e seleziona Visualizzatore oggetti Storage dai risultati filtrati.Fai clic su Salva.
Fai clic su Consenti accesso pubblico.
gcloud
Per concedere a tutti gli utenti l'accesso per visualizzare gli oggetti nei bucket, esegui il comando buckets add-iam-policy-binding.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME \
--member=allUsers \
--role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \ --member=allUsers \ --role=roles/storage.objectViewer
Prenota l'indirizzo IP del bilanciatore del carico
Prenota un indirizzo IP esterno statico per la regola di forwarding del bilanciatore del carico.
Console
Nella console Google Cloud , vai alla pagina Prenota un indirizzo statico.
Scegli un Nome per il nuovo indirizzo.
In Versione IP, seleziona IPv4.
Per Tipo, seleziona A livello di regione.
In Regione, seleziona us-east1.
Lascia l'opzione Allegato a impostata su Nessuno. Dopo aver creato il bilanciatore del carico, questo indirizzo IP viene collegato alla regola di forwarding del bilanciatore del carico.
Fai clic su Prenota per prenotare l'indirizzo IP.
gcloud
Per prenotare un indirizzo IP esterno statico, utilizza il comando
gcloud compute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=us-east1
Sostituisci quanto segue:
ADDRESS_NAME: il nome che vuoi assegnare a questo indirizzo.
Utilizza il comando
gcloud compute addresses describeper visualizzare il risultato:gcloud compute addresses describe ADDRESS_NAME
L'indirizzo IP restituito viene chiamato
RESERVED_IP_ADDRESS nella sezione seguente.
Configura il bilanciatore del carico con i bucket di backend
Questa sezione mostra come creare le seguenti risorse per un bilanciatore del carico delle applicazioni esterno regionale:
- Due bucket di backend. I bucket di backend fungono da wrapper per i bucket Cloud Storage che hai creato in precedenza.
- Mappa URL
- Proxy di destinazione
- Una regola di forwarding con indirizzi IP regionali. La regola di forwarding ha un indirizzo IP esterno.
In questo esempio, puoi utilizzare HTTP o HTTPS come protocollo di richiesta-risposta tra il client e il bilanciatore del carico. Per creare un bilanciatore del carico HTTPS, devi aggiungere una risorsa del certificato SSL al frontend del bilanciatore del carico.
Per creare i componenti di bilanciamento del carico menzionati in precedenza utilizzando gcloud CLI, segui questi passaggi:
Crea due bucket di backend nella regione
us-east1con il comandogcloud beta compute backend-buckets create. I bucket di backend hanno uno schema di bilanciamento del carico diEXTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1gcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1Sostituisci le variabili
BUCKET1_NAMEeBUCKET2_NAMEcon i nomi dei tuoi bucket Cloud Storage.Crea una mappa URL per instradare le richieste in entrata al bucket di backend con il comando
gcloud beta compute url-maps create.gcloud beta compute url-maps create URL_MAP_NAME \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1Sostituisci la variabile
URL_MAP_NAMEcon il nome della mappa URL.Configura le regole host e percorso della mappa URL con il comando
gcloud beta compute url-maps add-path-matcher.In questo esempio, il bucket di backend predefinito è
backend-bucket-cats, che gestisce tutti i percorsi al suo interno. Tuttavia, qualsiasi richiesta di targetinghttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgutilizza il backendbackend-bucket-dogs. Ad esempio, se la cartella/love-to-fetch/esiste anche nel backend predefinito (backend-bucket-cats), il bilanciatore del carico assegna la priorità al backendbackend-bucket-dogsperché esiste una regola di percorso specifica per/love-to-fetch/*.gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \ --default-backend-bucket=backend-bucket-catsSostituisci la variabile
URL_MAP_NAMEcon il nome della mappa URL.Crea un proxy di destinazione con il comando
gcloud compute target-http-proxies create.Per il traffico HTTP, crea un proxy HTTP di destinazione per instradare le richieste alla mappa URL:
gcloud compute target-http-proxies create http-proxy \ --url-map=URL_MAP_NAME \ --region=us-east1Sostituisci la variabile
URL_MAP_NAMEcon il nome della mappa URL.Per il traffico HTTPS, crea un proxy HTTPS di destinazione per instradare le richieste alla mappa URL. Il proxy è la parte del bilanciatore del carico che contiene il certificato SSL per un bilanciatore del carico HTTPS. Dopo aver creato il certificato, puoi collegarlo al proxy di destinazione HTTPS.
Per collegare un certificato Certificate Manager, esegui questo comando:
gcloud compute target-https-proxies create https-proxy \ --url-map=URL_MAP_NAME \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1Sostituisci quanto segue:
URL_MAP_NAME: il nome della mappa URLCERTIFICATE_NAME: il nome del certificato SSL che hai creato utilizzando Certificate Manager.
Crea una regola di forwarding con un indirizzo IP nella regione
us-east1utilizzando il comandogcloud compute forwarding-rules create.Per il traffico HTTP, crea una regola di forwarding regionale per instradare le richieste in entrata al proxy HTTP di destinazione:
gcloud compute forwarding-rules create http-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=80 \ --region=us-east1 \ --target-http-proxy=http-proxy \ --target-http-proxy-region=us-east1Per il traffico HTTPS, crea una regola di forwarding regionale per instradare le richieste in entrata al proxy HTTPS di destinazione:
gcloud compute forwarding-rules create https-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=https-proxy \ --target-https-proxy-region=us-east1
Invia una richiesta HTTP al bilanciatore del carico
Ora che il servizio di bilanciamento del carico è in esecuzione, puoi inviare una richiesta alla regola di forwarding del bilanciatore del carico.
Ottieni l'indirizzo IP della regola di forwarding del bilanciatore del carico (
http-fw-rule), che si trova nella regioneus-east1.gcloud compute forwarding-rules describe http-fw-rule \ --region=us-east1Copia l'indirizzo IP restituito da utilizzare come
FORWARDING_RULE_IP_ADDRESSnel passaggio successivo.Fai una richiesta HTTP all'indirizzo IP virtuale (VIP) della regola di forwarding utilizzando curl.
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
Passaggi successivi
- Panoramica del bilanciatore del carico delle applicazioni esterno
- Subnet solo proxy per i bilanciatori del carico basati su Envoy
- Gestire i certificati
- Pulizia di una configurazione di bilanciamento del carico