Questo documento illustra come creare un bilanciatore del carico delle applicazioni interno tra regioni per inoltrare le richieste di contenuti statici ai bucket Cloud Storage.
Prima di iniziare
Assicurati che la configurazione soddisfi i seguenti prerequisiti.
Installa Google Cloud CLI
Per Anteprima, alcune delle istruzioni riportate in questa guida possono essere eseguite solo utilizzando Google Cloud CLI. Per installarlo, consulta la documentazione su come installare gcloud CLI.
Puoi trovare i comandi relativi al bilanciamento del carico nel documento API e riferimenti all'interfaccia a riga di comando gcloud.
Autorizzazioni
Per seguire questa guida, devi creare bucket Cloud Storage e risorse di rete nel tuo progetto. Devi essere un proprietario o un 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 Amministratore della sicurezza di Compute (roles/compute.securityAdmin )
|
Creazione di bucket di Cloud Storage | Ruolo Storage Object Admin (roles/storage.objectAdmin )
|
Per ulteriori informazioni, consulta le seguenti guide:
Configura una risorsa del certificato SSL
Per un bilanciatore del carico delle applicazioni interno tra regioni che utilizza HTTPS come protocollo di richiesta e risposta, crea una risorsa del certificato SSL utilizzando Gestore dei certificati come descritto in uno dei seguenti documenti:
- Creare un certificato gestito da Google emesso dall'istanza di Servizio CA
- Eseguire il deployment di un certificato globale gestito da Google con autorizzazione DNS
- Esegui il deployment di un certificato autogestito globale
Dopo aver creato il certificato, puoi allegarlo al proxy di destinazione HTTPS.
Ti consigliamo di utilizzare un certificato gestito da Google.
Limitazioni
Le seguenti limitazioni si applicano ai bucket Cloud Storage quando vengono utilizzati come backend per un bilanciatore del carico delle applicazioni interno tra regioni:
L'accesso ai bucket privati 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 interno tra regioni.
Quando utilizzi un bilanciatore del carico delle applicazioni interno tra regioni 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.
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 tra regioni 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 nelle regioni 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 inoltro 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-us
nella regioneus-east1
utilizza10.1.2.0/24
per il suo intervallo IP principale. Una subnet denominatasubnet-asia
nella regioneasia-east1
utilizza10.1.3.0/24
per il suo intervallo IP principale.Subnet per i proxy Envoy. Una subnet denominata
proxy-only-subnet-us-east1
nella regioneus-east1
utilizza10.129.0.0/23
per il suo intervallo IP principale. Una subnet denominataproxy-only-subnet-asia-east1
nella regioneasia-east1
utilizza10.130.0.0/23
per il suo intervallo IP principale.
È possibile accedere ai bilanciatori del carico delle applicazioni interni tra regioni da qualsiasi regione all'interno della VPC. In questo modo, i client di qualsiasi regione possono accedere a livello globale ai backend del bilanciatore del carico.
Configura le sottoreti per la regola di inoltro del bilanciatore del carico
Console
Nella console Google Cloud, 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 inoltro del bilanciatore del carico in una regione diversa. 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 comandogcloud compute networks create
.gcloud compute networks create lb-network --subnet-mode=custom
Crea una subnet nella rete VPC
lb-network
nella regioneus-east1
con il comandogcloud 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-network
nella regioneasia-east1
con il comandogcloud compute networks subnets create
.gcloud compute networks subnets create subnet-asia \ --network=lb-network \ --range=10.1.3.0/24 \ --region=asia-east1
Configura la subnet solo proxy
Una subnet solo proxy fornisce un insieme di indirizzi IP che Google Cloud vengono utilizzati 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 attiva una sola subnet solo proxy 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
- Intervallo di indirizzi IP:
10.129.0.0/23
- Nome:
Fai clic su Aggiungi.
Crea un'altra subnet per la regola di inoltro del bilanciatore del carico in una regione diversa. Nella scheda Subnet, fai clic su Aggiungi subnet.
Inserisci le seguenti informazioni:
- Nome:
proxy-only-subnet-asia
- Regione:
asia-east1
- Intervallo di indirizzi IP:
10.130.0.0/23
- Nome:
Fai clic su Aggiungi.
gcloud
Crea una subnet solo proxy nella regione
us-east1
con il comandogcloud 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-east1
con il comandogcloud 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
22
alla VM client. In questo esempio, la regola firewall è denominatafw-allow-ssh
.
Console
Nella console Google Cloud, 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
22
per il numero di porta.
- Nome:
Fai clic su Crea.
gcloud
Crea la regola firewall
fw-allow-ssh
per consentire la connettività SSH alle VM con il tag di reteallow-ssh
. Se ometti--source-ranges
, Google Cloud 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 un altro nella regione asia-east1
. Per i deployment in produzione, ti consigliamo di scegliere un bucket multiregionale, che replica automaticamente gli oggetti in più regioni Google Cloud . In questo modo, puoi migliorare la disponibilità dei tuoi contenuti e la tolleranza agli errori nell'applicazione.
Console
- Nella console Google Cloud, 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 Località su asia-east1.
gcloud
Crea il primo bucket nella regione
us-east1
con il comandogcloud 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-east1
con il comandogcloud 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.
Copiare i file grafici nei bucket Cloud Storage
Per 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/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 principale 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 da 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 Viewer
nella casella di 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 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 inoltro globali 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 provi ad assegnare un indirizzo IP alla regola di inoltro dalla sottorete solo proxy, la creazione della regola di inoltro 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 sopra menzionati utilizzando gcloud CLI:
Crea due bucket di backend, uno nella regione
us-east1
e un altro nella regioneasia-east1
, con il comandogcloud beta compute backend-buckets create
. I bucket di backend hanno uno schema di bilanciamento del caricoINTERNAL_MANAGED
.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED
gcloud beta 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 che ha come targethttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg
utilizza il backendbackend-bucket-dogs
. Ad esempio, se la cartella/love-to-fetch/
esiste anche nel backend predefinito (backend-bucket-cats
), il bilanciatore del carico dà la priorità al backendbackend-bucket-dogs
perché esiste una regola del 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_NAME
con il nome del certificato SSL creato utilizzando Certificate Manager.Crea due regole di inoltro globale, una con un indirizzo IP nella regione
us-east1
e un'altra con un indirizzo IP nella regioneasia-east1
con il comandogcloud compute forwarding-rules create
.Se vuoi prenotare un indirizzo IP interno statico per la regola di inoltro del bilanciatore del carico, consulta Prenotare un nuovo indirizzo IPv4 o IPv6 interno statico. La prenotazione di un indirizzo IP è facoltativa per una regola di inoltro HTTP, ma devi obbligatoriamente prenotare un indirizzo IP per una regola di inoltro HTTPS.
In questo esempio, un indirizzo IP temporaneo è associato alla regola di inoltro HTTP del bilanciatore del carico. Un indirizzo IP temporaneo rimane costante finché esiste la regola di inoltro. Se devi eliminare la regola di forwarding e ricrearla, la regola di forwarding potrebbe ricevere un nuovo indirizzo IP.
Per il traffico HTTP, crea le regole di forwarding globale per instradare le richieste in arrivo al proxy di destinazione HTTP:
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 globale per instradare le richieste in arrivo 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 inoltro del bilanciatore del carico.
Ottieni l'indirizzo IP della regola di inoltro del bilanciatore del carico
Ottieni l'indirizzo IP della regola di inoltro del bilanciatore del carico (
http-fw-rule-1
), che si trova nella regioneus-east1
.gcloud compute forwarding-rules describe http-fw-rule-1 \ --global
Ottieni l'indirizzo IP della regola di inoltro del bilanciatore del carico (
http-fw-rule-2
), che si trova nella regioneasia-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 sia nelle regioni
us-east1
cheasia-east1
della 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 inoltro (
http-fw-rule-1
) nella regioneus-east1
per simulare un'interruzione del servizio a livello di regione e controlla se il client nella regioneus-east
può ancora accedere ai dati dal bucket di backend.gcloud compute forwarding-rules delete http-fw-rule-1 \ --global
Invia una richiesta HTTP all'IP virtuale della regola di inoltro in entrambe le 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 hai inviato una richiesta HTTP al VIP nella regione
us-east1
, i criteri di instradamento DNS rilevano che questo VIP non risponde e restituiscono al client il VIP più ottimale successivo (in questo esempio,asia-east1
), garantendo che l'applicazione rimanga attiva anche durante le interruzione 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
- Pulisci una configurazione di bilanciamento del carico