Questo documento mostra come creare un bilanciatore del carico delle applicazioni interno tra regioni 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 installarla, consulta il documento Installa gcloud CLI.
Puoi trovare i comandi relativi al bilanciamento del carico nel documento Riferimenti API e gcloud CLI.
Autorizzazioni
Per seguire questa guida, devi creare bucket Cloud Storage e risorse di rete nel tuo progetto. Devi essere un proprietario o editor del progetto oppure devi disporre dei seguenti ruoli IAM di Compute Engine:
| Attività | Ruolo richiesto | 
|---|---|
| Crea reti, subnet e componenti del bilanciatore del carico | Ruolo Amministratore rete Compute ( roles/compute.networkAdmin) | 
| Aggiungere e rimuovere regole firewall | Ruolo Compute Security Admin ( roles/compute.securityAdmin) | 
| Creazione di bucket di Cloud Storage | Ruolo Amministratore oggetti Storage ( roles/storage.objectAdmin) | 
Per ulteriori informazioni, consulta le seguenti guide:
Configura una risorsa del certificato SSL
Per un bilanciatore del carico delle applicazioni interno multiregionale che utilizza HTTPS come protocollo di richiesta e risposta, crea una risorsa certificato SSL utilizzando Certificate Manager come descritto in uno dei seguenti documenti:
- Deployment di un certificato gestito da Google multiregionale emesso dalla tua istanza di CA Service
- Deployment di un certificato gestito da Google multiregionale con autorizzazione DNS
- Esegui il deployment di un certificato autogestito multiregionale
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 interno tra regioni:
- 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 interno tra regioni. 
- Quando utilizzi un bilanciatore del carico delle applicazioni interno multiregionale 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 interno tra regioni non è disponibile.
- Non puoi configurare un bilanciatore del carico delle applicazioni interno tra regioni con bucket Cloud Storage in un ambiente VPC condiviso. 
Panoramica della configurazione
Puoi configurare un bilanciatore del carico delle applicazioni interno tra regioni in più regioni come mostrato nel seguente diagramma:
Come mostrato nel diagramma dell'architettura, questo esempio crea un bilanciatore del carico delle applicazioni interno multiregionale in una rete Virtual Private Cloud (VPC) con due bucket di backend, in cui ogni bucket di backend fa riferimento a un bucket Cloud Storage. I bucket Cloud Storage
si trovano nella regione us-east1 e asia-east1.
Questa architettura di deployment offre alta disponibilità. Se il bilanciatore del carico delle applicazioni interno tra regioni in una regione non funziona, i criteri di routing DNS indirizzano il traffico a un bilanciatore del carico delle applicazioni interno tra regioni in un'altra regione.
Configura la rete e le subnet
All'interno della rete VPC, configura una subnet in ogni regione in cui
deve essere configurata la regola di forwarding dei bilanciatori del carico. Inoltre,
configura un proxy-only-subnet in ogni regione in cui vuoi configurare
il bilanciatore del carico.
Questo esempio utilizza la seguente rete VPC, regione e subnet:
- Rete. La rete è una rete VPC in modalità personalizzata denominata - lb-network.
- Subnet per il bilanciatore del carico. Una subnet denominata - subnet-usnella regione- us-east1utilizza- 10.1.2.0/24per il suo intervallo IP principale. Una subnet denominata- subnet-asianella regione- asia-east1utilizza- 10.1.3.0/24per il suo intervallo IP primario.
- Subnet per i proxy Envoy. Una subnet denominata - proxy-only-subnet-us-east1nella regione- us-east1utilizza- 10.129.0.0/23per il suo intervallo IP primario. Una subnet denominata- proxy-only-subnet-asia-east1nella regione- asia-east1utilizza- 10.130.0.0/23per il suo intervallo IP primario.
È possibile accedere ai bilanciatori del carico delle applicazioni interni tra regioni da qualsiasi regione all'interno del VPC. In questo modo, i client di qualsiasi regione possono accedere a livello globale ai backend del bilanciatore del carico.
Configura le subnet per la regola di forwarding del bilanciatore del carico
Console
- Nella console Cloud de Confiance , vai alla pagina Reti VPC. 
- Fai clic su Crea rete VPC. 
- In Nome, inserisci - lb-network.
- Nella sezione Subnet, imposta Modalità di creazione subnet su Personalizzata. 
- Nella sezione Nuova subnet, inserisci le seguenti informazioni: - Nome: subnet-us
- Seleziona una regione: us-east1
- Intervallo di indirizzi IP: 10.1.2.0/24
 
- Nome: 
- Fai clic su Fine. 
- Fai clic su Aggiungi subnet. 
- Crea un'altra subnet per la regola di forwarding del bilanciatore del carico in un'altra regione. Nella sezione Nuova subnet, inserisci le seguenti informazioni: - Nome: subnet-asia
- Regione: asia-east1
- Intervallo di indirizzi IP: 10.1.3.0/24
 
- Nome: 
- Fai clic su Fine. 
- Fai clic su Crea. 
gcloud
- Crea una rete VPC personalizzata, denominata - lb-network, con il comando- gcloud compute networks create.- gcloud compute networks create lb-network --subnet-mode=custom 
- Crea una subnet nella rete VPC - lb-networknella regione- us-east1con il comando- gcloud compute networks subnets create.- gcloud compute networks subnets create subnet-us \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-east1
- Crea una subnet nella rete VPC - lb-networknella regione- asia-east1con il comando- gcloud compute networks subnets create.- gcloud compute networks subnets create subnet-asia \ --network=lb-network \ --range=10.1.3.0/24 \ --region=asia-east1
Configura le subnet solo proxy
Una subnet solo proxy fornisce un insieme di indirizzi IP che Cloud de Confiance by S3NS 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ò essere presente una sola subnet solo proxy attiva per uno scopo specifico, per regione e per rete. In questo esempio,
creiamo due subnet solo proxy: una nella regione us-east1
e l'altra nella regione asia-east1.
Console
- Nella console Cloud de Confiance , 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: - In Nome, inserisci proxy-only-subnet-us.
- In Regione, inserisci us-east1.
- Per Scopo, seleziona Proxy gestito tra regioni.
- In Intervallo di indirizzi IP, inserisci 10.129.0.0/23.
 
- In Nome, inserisci 
- Fai clic su Aggiungi. 
- Crea un'altra subnet solo proxy nella regione - asia-east1. Nella scheda Subnet, fai clic su Aggiungi subnet.
- Inserisci le seguenti informazioni: - In Nome, inserisci proxy-only-subnet-asia.
- In Regione, inserisci asia-east1.
- Per Scopo, seleziona Proxy gestito tra regioni.
- In Intervallo di indirizzi IP, inserisci 10.130.0.0/23.
 
- In Nome, inserisci 
- Fai clic su Aggiungi. 
gcloud
- Crea una subnet solo proxy nella regione - us-east1con il comando- gcloud compute networks subnets create.- gcloud compute networks subnets create proxy-only-subnet-us \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-east1 \ --network=lb-network \ --range=10.129.0.0/23
- Crea una subnet solo proxy nella regione - asia-east1con il comando- gcloud compute networks subnets create.- gcloud compute networks subnets create proxy-only-subnet-asia \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=asia-east1 \ --network=lb-network \ --range=10.130.0.0/23
Configurare una regola firewall
Questo esempio utilizza la seguente regola firewall:
- Una regola in entrata che consente l'accesso SSH sulla porta - 22alla VM client. In questo esempio, questa regola firewall è denominata- fw-allow-ssh.
Console
- Nella console Cloud de Confiance , vai alla pagina Policy firewall. 
- Fai clic su Crea regola firewall per creare la regola che consente le connessioni SSH in entrata sulla VM client: - Nome: fw-allow-ssh
- Rete: lb-network
- Direzione del traffico: in entrata
- Azione in caso di corrispondenza: Consenti
- Target: Tag di destinazione specificati
- Tag di destinazione: allow-ssh
- Filtro di origine: intervalli IPv4
- Intervalli IPv4 di origine: 0.0.0.0/0
- Protocolli e porte:
- Scegli Protocolli e porte specificati.
- Seleziona la casella di controllo TCP, quindi inserisci 22per il numero di porta.
 
 
- Nome: 
- Fai clic su Crea. 
gcloud
- Crea la regola firewall - fw-allow-sshper consentire la connettività SSH alle VM con il tag di rete- allow-ssh. Se ometti- --source-ranges, Cloud de Confiance interpreta la regola come qualsiasi origine.- gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
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, uno nella regione us-east1 e l'altro nella regione asia-east1. Per i deployment di produzione, ti consigliamo di scegliere un bucket multiregionale, che replica automaticamente gli oggetti in più regioni Cloud de Confiance . In questo modo, puoi migliorare la disponibilità dei tuoi contenuti e la tolleranza agli errori nella tua applicazione.
Console
- Nella console Cloud de Confiance , vai alla pagina Bucket in Cloud Storage.
 
- Fai clic su Crea. 
- 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. 
- 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, ma imposta la località su asia-east1. 
gcloud
- Crea il primo bucket nella regione - us-east1con il comando- gcloud storage buckets create.- gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access
- Crea il secondo bucket nella regione - asia-east1con il comando- gcloud storage buckets create.- gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=asia-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 dei bucket Cloud Storage univoci:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/never-fetch/
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 al principal 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 Cloud de Confiance , 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 parte superiore della pagina. 
- Nella sezione Autorizzazioni, fai clic sul pulsante Concedi 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
Sostituisci le variabili dei nomi dei bucket con i nomi univoci dei bucket Cloud Storage.
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 interno tra regioni:
- 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
- Due regole di forwarding globale con indirizzi IP regionali. Alle regole di forwarding vengono assegnati indirizzi IP dalle subnet create per le regole di forwarding del bilanciatore del carico. Se tenti di assegnare un indirizzo IP alla regola di forwarding dalla subnet solo proxy, la creazione della regola di forwarding non va a buon fine.
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, uno per ogni bucket Cloud Storage, con il comando - gcloud compute backend-buckets create. I bucket di backend hanno uno schema di bilanciamento del carico di- INTERNAL_MANAGED.- gcloud compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED- gcloud compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED
- Crea una mappa URL per instradare le richieste in entrata al bucket di backend con il comando - gcloud compute url-maps create.- gcloud compute url-maps create lb-map \ --default-backend-bucket=backend-bucket-cats \ --global
- Configura le regole host e percorso della mappa URL con il comando - gcloud 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 targeting- http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgutilizza il backend- backend-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 backend- backend-bucket-dogsperché esiste una regola di percorso specifica per- /love-to-fetch/*.- gcloud compute url-maps add-path-matcher lb-map \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \ --default-backend-bucket=backend-bucket-cats
- 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=lb-map \ --global- 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. - gcloud compute target-https-proxies create https-proxy \ --url-map=lb-map \ --certificate-manager-certificates=CERTIFICATE_NAME \ --global- Sostituisci - CERTIFICATE_NAMEcon il nome del certificato SSL che hai creato utilizzando Certificate Manager.
- Crea due regole di forwarding globale, una con un indirizzo IP nella regione - us-east1e un'altra con un indirizzo IP nella regione- asia-east1con il comando- gcloud compute forwarding-rules create.- Se vuoi prenotare un indirizzo IP interno statico per la regola di forwarding del bilanciatore del carico, consulta Prenota un indirizzo IP interno statico. La prenotazione di un indirizzo IP è facoltativa per una regola di forwarding HTTP; tuttavia, devi prenotare un indirizzo IP per una regola di forwarding HTTPS. - In questo esempio, un indirizzo IP effimero è associato alla regola di forwarding HTTP del bilanciatore del carico. Un indirizzo IP temporaneo rimane costante finché esiste la regola di forwarding. Se devi eliminare la regola di forwarding e ricrearla, potrebbe ricevere un nuovo indirizzo IP. - Per il traffico HTTP, crea le regole di forwarding globali per instradare le richieste in entrata al proxy HTTP di destinazione: - gcloud compute forwarding-rules create http-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --ports=80 \ --target-http-proxy=http-proxy \ --global-target-http-proxy \ --global- gcloud compute forwarding-rules create http-fw-rule-2 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-asia \ --subnet-region=asia-east1 \ --ports=80 \ --target-http-proxy=http-proxy \ --global-target-http-proxy \ --global- Per il traffico HTTPS, crea le regole di forwarding globali per instradare le richieste in entrata al proxy di destinazione HTTPS: - gcloud compute forwarding-rules create https-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --target-https-proxy=https-proxy \ --global-target-https-proxy \ --global- gcloud compute forwarding-rules create https-fw-rule-2 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-asia \ --subnet-region=asia-east1 \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --target-https-proxy=https-proxy \ --global-target-https-proxy \ --global
Invia una richiesta HTTP al bilanciatore del carico
Invia una richiesta da una VM client interna alla regola di forwarding del bilanciatore del carico.
Ottieni l'indirizzo IP della regola di forwarding del bilanciatore del carico
- Ottieni l'indirizzo IP della regola di forwarding del bilanciatore del carico ( - http-fw-rule-1), che si trova nella regione- us-east1.- gcloud compute forwarding-rules describe http-fw-rule-1 \ --global
- Ottieni l'indirizzo IP della regola di forwarding del bilanciatore del carico ( - http-fw-rule-2), che si trova nella regione- asia-east1.- gcloud compute forwarding-rules describe http-fw-rule-2 \ --global
Crea una VM client per testare la connettività
- Crea una VM client nella regione - us-east1.- gcloud compute instances create client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=lb-network \ --subnet=subnet-us \ --zone=us-east1-c \ --tags=allow-ssh
- Stabilisci una connessione SSH alla VM client. - gcloud compute ssh client-a --zone=us-east1-c 
- In questo esempio, il bilanciatore del carico delle applicazioni interno tra regioni ha indirizzi IP virtuali (VIP) frontend nelle regioni - us-east1e- asia-east1della rete VPC. Invia una richiesta HTTP al VIP in una delle due regioni utilizzando curl.- curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg - curl http://FORWARDING_RULE_IP_ADDRESS/never-fetch/three-cats.jpg --output three-cats.jpg 
Testare l'alta disponibilità
- Elimina la regola di forwarding ( - http-fw-rule-1) nella regione- us-east1per simulare un'interruzione regionale e verificare se il client nella regione- us-eastpuò ancora accedere ai dati dal bucket di backend.- gcloud compute forwarding-rules delete http-fw-rule-1 \ --global
- Invia una richiesta HTTP al VIP della regola di forwarding in una delle due regioni utilizzando curl. - curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg - curl http://FORWARDING_RULE_IP_ADDRESS/never-fetch/three-cats.jpg --output three-cats.jpg - Se effettui una richiesta HTTP al VIP nella regione - us-east1, i criteri di routing DNS rilevano che questo VIP non risponde e restituiscono al client il VIP successivo più ottimale (in questo esempio,- asia-east1). Questo comportamento contribuisce a garantire che la tua applicazione rimanga attiva anche durante le interruzioni regionali.
Passaggi successivi
- Panoramica del bilanciatore del carico delle applicazioni interno
- Subnet solo proxy per i bilanciatori del carico basati su Envoy
- Gestire i certificati
- Pulizia di una configurazione di bilanciamento del carico