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 configurazione soddisfi i seguenti prerequisiti.
Installa Google Cloud CLI
Alcune delle istruzioni riportate in 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 di riferimento per l'API e gcloud CLI.
Ruoli obbligatori
Se sei il creatore del 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 il creatore del progetto, le autorizzazioni richieste devono essere concesse al progetto all'entità appropriata. 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ù sui ruoli e sulle 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-risposta, puoi creare una risorsa del certificato SSL utilizzando un certificato SSL di Compute Engine o un certificato di Certificate Manager.
Per questo esempio, crea una risorsa del certificato SSL utilizzando Certificate Manager come descritto in uno dei seguenti documenti:
- Esegui il deployment di un certificato gestito da Google regionale con autorizzazione DNS
- Esegui il deployment di un certificato gestito da Google regionale con Certificate Authority Service
- Esegui il deployment di un certificato autogestito regionale
Dopo aver creato il certificato, puoi collegarlo al proxy HTTPS di destinazione.
Ti consigliamo di utilizzare un certificato gestito da Google.
Limitazioni
Le seguenti limitazioni si applicano ai bucket Cloud Storage quando fungono da backend per un bilanciatore del carico delle applicazioni esterno regionale:
L'accesso ai bucket privati non è supportato, quindi 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 i contenuti dal bucket, ma il caricamento dei 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 a due regioni 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 che seguono, 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 l'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 ilgcloud compute networks createcomando.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 i 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ò esistere una sola subnet solo proxy attiva per uno scopo specifico, per regione, 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
us-east1regione con ilgcloud compute networks subnets createcomando.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.
Crea bucket Cloud Storage
In questo esempio, creerai due bucket Cloud Storage nella regione us-east1.
Console
- Nella Google Cloud console, vai alla pagina Bucket di Cloud Storage.
Fai clic su Crea.
Nella sezione Inizia, inserisci un nome univoco a livello 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 Regione.
Nell'elenco delle regioni, seleziona us-east1.
Fai clic su Crea.
Fai clic su Bucket per tornare alla pagina Bucket di Cloud Storage. Segui queste istruzioni per creare un secondo bucket nella regione us-east1.
gcloud
Crea il primo bucket nella regione
us-east1con ilgcloud storage buckets createcomando.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-accessCrea il secondo bucket anche nella
us-east1regione con ilgcloud storage buckets createcomando.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 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 Google Cloud console, vai alla pagina Bucket di 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 Concedi l'accesso pulsante. Viene visualizzata la finestra di dialogo Concedi l'accesso.
Nel campo Nuove entità, inserisci
allUsers.Nel campo Seleziona un ruolo, inserisci
Storage Object Viewerin nella 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 in visualizzazione agli oggetti nei bucket, esegui il buckets add-iam-policy-binding comando.
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 Google Cloud console, vai alla pagina Prenota un indirizzo statico.
Scegli un Nome per il nuovo indirizzo.
In Versione IP, seleziona IPv4.
In Tipo, seleziona Regionale.
In Regione, seleziona us-east1.
Lascia l'opzione Collegato 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
gcloud compute addresses createcomando.gcloud compute addresses create ADDRESS_NAME \ --region=us-east1
Sostituisci quanto segue:
ADDRESS_NAME: il nome che vuoi assegnare a questo indirizzo.
Utilizza il
gcloud compute addresses describecomando per visualizzare il risultato:gcloud compute addresses describe ADDRESS_NAME
L'indirizzo IP restituito viene indicato come 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 sopra menzionati utilizzando gcloud CLI:
Crea due bucket di backend nella regione
us-east1con ilgcloud compute backend-buckets createcomando. I bucket di backend hanno uno schema di bilanciamento del caricoEXTERNAL_MANAGED.gcloud compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1gcloud 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 bucket Cloud Storage.Crea una mappa URL per instradare le richieste in entrata al bucket di backend con il
gcloud compute url-maps createcomando.gcloud 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
gcloud compute url-maps add-path-matchercomando.In questo esempio, il bucket di backend predefinito è
backend-bucket-cats, che gestisce tutti i percorsi esistenti al suo interno. Tuttavia, qualsiasi richiesta che ha come targethttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgutilizza il backendbackend-bucket-dogs. Ad esempio, se la/love-to-fetch/cartella 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 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
gcloud compute target-http-proxies createcomando.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 a la 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 collegare il certificato al proxy HTTPS di destinazione.
Per collegare un certificato di Certificate Manager, esegui il seguente 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
us-east1regione utilizzando ilgcloud compute forwarding-rules createcomando.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.
Recupera 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
- Gestisci i certificati
- Esegui la pulizia della configurazione del bilanciamento del carico