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 Amministratore della sicurezza di Compute (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.
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 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 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-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 primario.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 primario. Una subnet denominataproxy-only-subnet-asia-east1
nella regioneasia-east1
utilizza10.130.0.0/23
per 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 Trusted 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 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 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 le subnet solo proxy
Una subnet solo proxy fornisce un insieme di indirizzi IP che Trusted Cloud 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 Trusted 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:
- 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-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, questa regola firewall è denominatafw-allow-ssh
.
Console
Nella console Trusted 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
, Trusted 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, creerai 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 Trusted Cloud . Ciò può migliorare la
disponibilità dei tuoi contenuti e la tolleranza agli errori nella tua
applicazione.
Console
- Nella console Trusted 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 la 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.
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 Trusted 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 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 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 nella regione
us-east1
e l'altro nella regioneasia-east1
con il comandogcloud compute backend-buckets create
. I bucket di backend hanno uno schema di bilanciamento del carico diINTERNAL_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 targetinghttp://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 bilanciamento del carico assegna la priorità al backendbackend-bucket-dogs
perché 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_NAME
con 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-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 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 temporaneo è 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 regioneus-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 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 nelle regioni
us-east1
easia-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 forwarding (
http-fw-rule-1
) nella regioneus-east1
per simulare un'interruzione regionale e verificare 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 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