Questo documento mostra due configurazioni di esempio per la configurazione di unregional internal Application Load Balancer in un ambiente VPC condiviso con bucket Cloud Storage:
- Il primo esempio crea tutti i componenti del bilanciatore del carico e i backend in un unico progetto di servizio.
- Il secondo esempio crea i componenti frontend e la mappa URL del bilanciatore del carico in un progetto di servizio, mentre il bucket di backend e i bucket Cloud Storage del bilanciatore del carico vengono creati in un progetto di servizio diverso.
Entrambi gli esempi richiedono la stessa configurazione iniziale per concedere i ruoli richiesti e configurare un VPC condiviso prima di poter iniziare a creare i bilanciatori del carico.
Per ulteriori informazioni su altre architetture VPC condiviso valide, consulta Architetture VPC condiviso.
Se non vuoi utilizzare una rete VPC condiviso, consulta Configurare un regional internal Application Load Balancer con bucket Cloud Storage.
Prima di iniziare
Assicurati che la tua configurazione soddisfi i seguenti prerequisiti.
Crea Google Cloud progetti
Crea Google Cloud progetti per un host e due progetti di servizio.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare un regional internal Application Load Balancer in un ambiente VPC condiviso con bucket Cloud Storage, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Configura il VPC condiviso, attiva il progetto host e concedi l'accesso agli amministratori del progetto di servizio:
Amministratore VPC condiviso di Compute (
roles/compute.xpnAdmin) sul progetto host -
Aggiungere e rimuovere regole firewall:
Compute Security Admin (
roles/compute.securityAdmin) sul progetto host -
Accesso a un amministratore del progetto di servizio per utilizzare la rete VPC condiviso:
Utente di rete Compute (
roles/compute.networkUser) nel progetto host -
Crea le risorse di bilanciamento del carico:
Compute Network Admin (
roles/compute.networkAdmin) sul progetto di servizio -
Crea istanze Compute Engine:
Compute Instance Admin (
roles/compute.instanceAdmin.v1) sul progetto di servizio -
Crea e modifica i certificati SSL di Compute Engine:
Compute Security Admin (
roles/compute.securityAdmin) sul progetto di servizio -
Crea e modifica i certificati SSL di Certificate Manager:
Proprietario di Certificate Manager (
roles/certificatemanager.owner) nel progetto di servizio -
Abilita i bucket di backend di riferimento del bilanciatore del carico da altri progetti di servizio:
Utente dei servizi bilanciatore del carico Compute (
roles/compute.loadBalancerServiceUser) nel progetto di servizio
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.
Configura un ambiente VPC condiviso
Per configurare un ambiente VPC condiviso, completa i seguenti passaggi nel progetto host:
- Configura la rete VPC nel progetto host.
- Configura la subnet solo proxy nel progetto host.
- Configura una regola firewall nel progetto host.
- Configura il VPC condiviso nel progetto host.
Non è necessario eseguire i passaggi descritti in questa sezione ogni volta che vuoi creare un nuovo bilanciatore del carico. Tuttavia, prima di procedere alla creazione del bilanciatore del carico, devi assicurarti di avere accesso alle risorse descritte qui.
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 il bilanciatore del carico. Una subnet denominata
subnet-usnella regioneus-east1utilizza10.1.2.0/24per il suo intervallo IP principale.Subnet per i proxy Envoy. Una subnet denominata
proxy-only-subnet-usnella regioneus-east1utilizza10.129.0.0/23per il suo intervallo IP primario.
Configura un VPC per il progetto host
Configura un VPC in modalità personalizzata per il progetto host e crea una subnet nella stessa regione in cui devi configurare la regola di forwarding dei bilanciatori del carico.
Non devi eseguire questo passaggio ogni volta che vuoi creare un nuovo bilanciatore del carico. Devi solo assicurarti che il progetto di servizio abbia accesso a una subnet nella rete VPC condiviso (oltre alla subnet solo proxy).
Console
Nella console Google Cloud , vai alla pagina Reti VPC.
Fai clic su Crea rete VPC.
Nel campo Nome, inserisci
lb-network.In Modalità di creazione subnet, seleziona Personalizzata.
Nella sezione Nuova subnet, fornisci le seguenti informazioni:
- Nel campo Nome, inserisci
subnet-us. - Nell'elenco Regione, seleziona
us-east1. - Nel campo Intervallo IPv4, inserisci
10.1.2.0/24. - Fai clic su Fine.
- Nel campo Nome, inserisci
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 \ --project=HOST_PROJECT_IDSostituisci
HOST_PROJECT_IDcon l'ID progettoGoogle Cloud assegnato al progetto abilitato come progetto host in un ambiente VPC condiviso.Crea una subnet nella rete VPC
lb-networknella regioneus-east1con 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 \ --project=HOST_PROJECT_ID
Configura la subnet solo proxy nel progetto host
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.
In questo esempio, creiamo una subnet solo proxy nella regione us-east1.
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 e fornisci le seguenti informazioni:
- Nel campo Nome, inserisci
proxy-only-subnet-us. - Nell'elenco Regione, seleziona
us-east1. - Per Scopo, seleziona Regional Managed Proxy.
- Nel campo Intervallo IPv4, inserisci
10.129.0.0/23.
- Nel campo Nome, inserisci
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 \ --project=HOST_PROJECT_ID
Configura una regola firewall nel progetto host
Questo esempio utilizza la regola firewall in entrata fw-allow-ssh che consente la connettività SSH in entrata sulla porta TCP 22 da qualsiasi indirizzo. Puoi scegliere un intervallo IP di origine più restrittivo per questa regola. Ad esempio, puoi specificare solo gli
intervalli IP del sistema da cui avvii le sessioni SSH. Questo esempio utilizza
il tag di destinazione allow-ssh per identificare le macchine virtuali (VM) a cui si applica la
regola firewall. Senza queste regole firewall, la regola default-deny per il traffico in entrata blocca il traffico in entrata verso le istanze di backend.
Console
Nella console Google Cloud , vai alla pagina Policy del firewall.
Fai clic su Crea regola firewall per creare la regola che consente i controlli di integritàGoogle Cloud .
Fornisci le seguenti informazioni:
- Nel campo Nome, inserisci
fw-allow-ssh. - Nell'elenco Rete, seleziona lb-network.
- Per Direzione del traffico, seleziona In entrata.
- In Azione in caso di corrispondenza, seleziona Consenti.
- Nell'elenco Destinazioni, seleziona Tag di destinazione specificati.
- Nel campo Tag di destinazione, inserisci
allow-ssh. - Nell'elenco Filtro di origine, seleziona Intervalli IPv4.
- Nel campo Intervalli IPv4 di origine, inserisci
0.0.0.0/0. - In Protocolli e porte, seleziona Protocolli e porte specificati.
- Seleziona la casella di controllo TCP e inserisci
22per il numero di porta.
- Nel campo Nome, inserisci
Fai clic su Crea.
gcloud
Crea la regola firewall
fw-allow-sshper consentire la connettività SSH alle VM con il tag di reteallow-ssh. Se omettisource-ranges, Google Cloud interpreta la regola in modo che si riferisca a qualsiasi origine.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22 \ --project=HOST_PROJECT_ID
Configura VPC condiviso nel progetto host
Abilita un progetto host VPC condiviso e collega i progetti di servizio al progetto host in modo che i progetti di servizio possano utilizzare la rete VPC condivisa. Per configurare il VPC condiviso nel progetto host, consulta le seguenti pagine:
Dopo aver completato i passaggi precedenti, completa una delle seguenti configurazioni:
- Configura un bilanciatore del carico nel progetto di servizio
- Configura un bilanciatore del carico con una configurazione tra progetti
Configura un bilanciatore del carico nel service project
Questo esempio crea un regional internal Application Load Balancer in cui tutti i componenti di bilanciamento del carico (regola di forwarding, proxy di destinazione, mappa URL e bucket di backend) e i bucket Cloud Storage vengono creati nel progetto di servizio.
Le risorse di rete di regional internal Application Load Balancer, come la subnet solo proxy, vengono create nel progetto host.
Questa sezione mostra come configurare il bilanciatore del carico e i backend.
Gli esempi in questa pagina impostano esplicitamente un indirizzo IP riservato per la regola di forwarding di regional internal Application Load Balancer, anziché consentire l'allocazione di un indirizzo IP temporaneo. Come best practice, ti consigliamo di riservare indirizzi IP per le regole di inoltro.
Configura i bucket Cloud Storage
La procedura per configurare i bucket Cloud Storage è la seguente:
- Crea i bucket Cloud Storage.
- Copia i contenuti nei bucket.
- Rendi pubblicamente leggibili i 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 le istruzioni precedenti per creare un secondo bucket nella regione us-east1.
gcloud
Crea i 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-access \ --project=SERVICE_PROJECT_ID
gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_IDSostituisci quanto segue:
BUCKET1_NAME: il nome del tuo primo bucket Cloud StorageBUCKET2_NAME: il nome del secondo bucket Cloud StorageSERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio
Copia i contenuti nei bucket Cloud Storage
Per popolare i bucket Cloud Storage, copia un file grafico da un bucket Cloud Storage pubblico ai tuoi 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, seleziona la casella di controllo per ogni bucket che vuoi rendere pubblico.
Fai clic sul pulsante Autorizzazioni. Viene visualizzata la finestra di dialogo Autorizzazioni.
Nella finestra di dialogo Autorizzazioni, fai clic sul pulsante Aggiungi entità. 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 un indirizzo IP interno statico
Prenota un indirizzo IP interno statico per la regola di forwarding del bilanciatore del carico. Per saperne di più, consulta Prenota un indirizzo IP interno statico.
Console
Nella console Google Cloud , vai alla pagina Prenota indirizzo IP interno statico.
Nel campo Nome, inserisci un nome per il nuovo indirizzo.
Nell'elenco Versione IP, seleziona IPv4.
Nell'elenco Rete, seleziona lb-network.
Nell'elenco Subnet, seleziona subnet-us.
In Regione, seleziona us-east1.
Nell'elenco Indirizzo IP statico, seleziona Assegna automaticamente. 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 interno statico utilizzando
gcloud compute, utilizza il comandocompute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=REGION \ --subnet=subnet-us \ --project=SERVICE_PROJECT_IDSostituisci quanto segue:
ADDRESS_NAME: il nome che vuoi assegnare a questo indirizzo.REGION: la regione in cui vuoi prenotare questo indirizzo. Questa regione deve essere la stessa del bilanciatore del carico. Ad esempio,us-east1.SERVICE_PROJECT_ID: l' Google Cloud ID progetto assegnato al progetto di servizio.
Utilizza il comando
compute addresses describeper visualizzare il risultato:gcloud compute addresses describe ADDRESS_NAME
Copia l'indirizzo IP restituito da utilizzare come
RESERVED_IP_ADDRESSnelle sezioni successive.
Configura una risorsa del certificato SSL
Per un regional internal Application Load Balancer 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 regionale gestito da Google con il servizio CA
- Deployment di un certificato gestito da Google regionale con autorizzazione DNS
- 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 per ridurre l'overhead operativo, come i rischi per la sicurezza associati alla gestione manuale dei certificati.
Configura il bilanciatore del carico con i bucket di backend
Questa sezione mostra come creare le seguenti risorse per un regional internal Application Load Balancer:
- 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. Alla regola di forwarding viene assegnato un indirizzo IP dalla subnet creata per le regole di forwarding del bilanciatore del carico. Se provi ad 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 nella regione
us-east1con il comandogcloud beta compute backend-buckets create. I bucket di backend hanno uno schema di bilanciamento del carico diINTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_IDgcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 --project=SERVICE_PROJECT_IDCrea 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-east1 \ --project=SERVICE_PROJECT_IDSostituisci
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-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_IDCrea un proxy di destinazione con il comando
gcloud compute target-http-proxies create.HTTP
Per il traffico HTTP, crea un proxy HTTP di destinazione per instradare le richieste alla mappa URL:
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDSostituisci
TARGET_HTTP_PROXY_NAMEcon il nome del proxy HTTP di destinazione.HTTPS
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 TARGET_HTTPS_PROXY_NAME \ --url-map=URL_MAP_NAME \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDSostituisci quanto segue:
TARGET_HTTPS_PROXY_NAME: il nome del proxy HTTPS di destinazioneCERTIFICATE_NAME: il nome del certificato SSL che hai creato utilizzando Certificate Manager
Crea una regola di forwarding con un indirizzo IP nella regione
us-east1con il comandogcloud compute forwarding-rules create.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, la regola potrebbe ricevere un nuovo indirizzo IP.
HTTP
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 FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS --ports=80 \ --region=us-east1 \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=us-east1 \ --project=SERVICE_PROJECT_IDSostituisci quanto segue:
FORWARDING_RULE_NAME: il nome della regola di forwardingRESERVED_IP_ADDRESS: l'indirizzo IP riservato che hai copiato nella sezione Prenota un indirizzo IP interno statico
HTTPS
Per 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 FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=us-east1 \ --project=SERVICE_PROJECT_IDSostituisci quanto segue:
FORWARDING_RULE_NAME: il nome della regola di forwardingRESERVED_IP_ADDRESS: l'indirizzo IP riservato che hai copiato nella sezione Prenota un indirizzo IP interno statico
Invia una richiesta HTTP al bilanciatore del carico
Ora che il servizio di bilanciamento del carico è in esecuzione, 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, che si trova nella regione
us-east1.gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDCopia l'indirizzo IP restituito da utilizzare come
FORWARDING_RULE_IP_ADDRESS.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-sshStabilisci una connessione SSH alla VM client.
gcloud compute ssh client-a --zone=us-east1-c
In questo esempio, regional internal Application Load Balancer ha un indirizzo IP virtuale (VIP) frontend nella regione
us-east1della rete VPC. Invia una richiesta HTTP al VIP in quella regione 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
Sostituisci
FORWARDING_RULE_IP_ADDRESScon l'indirizzo IP che hai copiato nel primo passaggio.
Configura un bilanciatore del carico con una configurazione tra progetti
L'esempio precedente in questa pagina mostra come configurare un deployment VPC condiviso in cui tutti i componenti del bilanciatore del carico e i relativi backend vengono creati nel progetto di servizio.
I bilanciatori del carico delle applicazioni interni regionali consentono anche di configurare deployment VPC condiviso in cui una mappa URL in un progetto host o di servizio può fare riferimento a bucket di backend situati in più progetti di servizio negli ambienti VPC condiviso.
Puoi utilizzare i passaggi descritti in questa sezione come riferimento per configurare una qualsiasi delle combinazioni supportate elencate qui:
- Regola di forwarding, proxy di destinazione e mappa URL nel progetto host e i bucket di backend in un progetto di servizio
- Regola di forwarding, proxy di destinazione e mappa URL in un progetto di servizio e i bucket di backend in un altro progetto di servizio
In questa sezione, la seconda configurazione è descritta come esempio.
Panoramica della configurazione
Questo esempio configura un bilanciatore del carico con il frontend e il backend in due progetti di servizio diversi.
Se non l'hai ancora fatto, devi completare tutti i passaggi preliminari per configurare il VPC condiviso e configurare la rete, le subnet e le regole firewall richieste per questo esempio. Per le istruzioni, consulta le sezioni seguenti di questa pagina:
Configura i bucket Cloud Storage e i bucket di backend nel service project B
Tutti i passaggi di questa sezione devono essere eseguiti nel progetto di servizio B.
Per creare un bucket di backend, devi:
- Crea i bucket Cloud Storage.
- Copia i contenuti nel bucket.
- Rendi pubblicamente leggibili i bucket.
- Crea un bucket di backend e puntalo al bucket Cloud Storage.
Creazione di bucket di Cloud Storage
In questo esempio, crea il 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 le istruzioni precedenti per creare un secondo bucket nella regione us-east1.
gcloud
Crea i bucket nella regione us-east1 con il
comando gcloud storage buckets create.
gcloud storage buckets create gs://BUCKET1_NAME \
--default-storage-class=standard \
--location=us-east1 \
--uniform-bucket-level-access \
--project=SERVICE_PROJECT_B_ID
gcloud storage buckets create gs://BUCKET2_NAME \
--default-storage-class=standard \
--location=us-east1 \
--uniform-bucket-level-access \
--project=SERVICE_PROJECT_B_ID
Sostituisci quanto segue:
BUCKET1_NAME: il nome del tuo primo bucket Cloud StorageBUCKET2_NAME: il nome del secondo bucket Cloud StorageSERVICE_PROJECT_B_ID: l'ID progetto Google Cloud assegnato al progetto di servizio B
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.
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, seleziona la casella di controllo per ogni bucket che vuoi rendere pubblico.
Fai clic sul pulsante Autorizzazioni. Viene visualizzata la finestra di dialogo Autorizzazioni.
Nella finestra di dialogo Autorizzazioni, fai clic sul pulsante Aggiungi entità. 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
Configura il bilanciatore del carico con i bucket di backend
Per creare i bucket di backend:
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 diINTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_B_IDgcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 --project=SERVICE_PROJECT_B_ID
Configura i componenti frontend del bilanciatore del carico nel progetto di servizio A
Tutti i passaggi di questa sezione devono essere eseguiti nel progetto di servizio A.
Nel progetto di servizio A, crea i seguenti componenti di bilanciamento del carico frontend:
- Configura una risorsa del certificato SSL collegata al proxy di destinazione. Per saperne di più, consulta la sezione Configurare una risorsa del certificato SSL di questo documento.
- Crea e prenota un indirizzo IP interno statico per la regola di forwarding del bilanciatore del carico. Per saperne di più, consulta Prenota un indirizzo IP interno statico in questo documento.
Crea una mappa URL per instradare le richieste in entrata al bucket di backend nel progetto di servizio B 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-east1 \ --project=SERVICE_PROJECT_A_IDSostituisci quanto segue:
URL_MAP_NAME: il nome della mappa URLSERVICE_PROJECT_A_ID: l'ID progetto Google Cloud assegnato al progetto di servizio A
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/*=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-dogs" \ --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-cats \ --region=us-east1 --project=SERVICE_PROJECT_A_IDCrea un proxy di destinazione con il comando
gcloud compute target-http-proxies create.HTTP
Per il traffico HTTP, crea un proxy HTTP di destinazione per instradare le richieste alla mappa URL:
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDSostituisci
TARGET_HTTP_PROXY_NAMEcon il nome del proxy HTTP di destinazione.HTTPS
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 TARGET_HTTPS_PROXY_NAME \ --url-map=lb-map \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDSostituisci quanto segue:
TARGET_HTTPS_PROXY_NAME: il nome del proxy HTTPS di destinazioneCERTIFICATE_NAME: il nome del certificato SSL che hai creato utilizzando Certificate Manager.
Crea una regola di forwarding con un indirizzo IP nella regione
us-east1con il comandogcloud compute forwarding-rules create.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, la regola potrebbe ricevere un nuovo indirizzo IP.
HTTP
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 FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --address=RESERVED_IP_ADDRESS --ports=80 \ --region=us-east1 \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=us-east1 \ --project=SERVICE_PROJECT_A_IDSostituisci quanto segue:
FORWARDING_RULE_NAME: il nome della regola di forwardingRESERVED_IP_ADDRESS: l'indirizzo IP riservato
HTTPS
Per 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 FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=us-east1 \ --project=SERVICE_PROJECT_A_IDSostituisci quanto segue:
FORWARDING_RULE_NAME: il nome della regola di forwardingRESERVED_IP_ADDRESS: l'indirizzo IP riservato
Concedere l'autorizzazione all'amministratore del bilanciatore del carico Compute di utilizzare il bucket di backend
Se vuoi che i bilanciatori del carico facciano riferimento ai bucket di backend in altri progetti di servizio, l'amministratore del bilanciatore del carico deve disporre dell'autorizzazione compute.backendBuckets.use. Per concedere questa autorizzazione, puoi utilizzare il ruolo IAM predefinito denominato Utente dei servizi bilanciatore del carico Compute (roles/compute.loadBalancerServiceUser). Questo ruolo deve essere concesso dall'amministratore del progetto di servizio e può essere applicato a livello di progetto di servizio o a livello di singolo bucket di backend.
In questo esempio, un amministratore del progetto di servizio del progetto di servizio B deve eseguire uno dei seguenti comandi per concedere l'autorizzazione compute.backendBuckets.use a un amministratore del bilanciatore del carico del progetto di servizio A. Questa operazione può essere eseguita a livello di progetto (per tutti i bucket di backend nel progetto) o per bucket di backend.
Console
Autorizzazioni a livello di progetto
Segui questi passaggi per concedere le autorizzazioni a tutti i bucket di backend nel tuo progetto.
Per completare questo passaggio, devi disporre delle autorizzazioni compute.regionBackendBuckets.setIamPolicy e resourcemanager.projects.setIamPolicy.
Nella console Google Cloud , vai alla pagina IAM.
Seleziona il progetto.
Fai clic su Concedi l'accesso.
Nel campo Nuove entità, inserisci l'indirizzo email o un altro identificatore dell'entità.
Nella sezione Assegna ruoli, fai clic su Aggiungi ruoli.
Nella finestra di dialogo Seleziona ruoli, inserisci
Compute Load Balancer Services Usernel campo Cerca ruoli.Seleziona la casella di controllo Compute Load Balancer Services User.
Fai clic su Applica.
(Facoltativo) Aggiungi una condizione al ruolo.
Fai clic su Salva.
Autorizzazioni a livello di risorsa per singoli bucket di backend
Per concedere le autorizzazioni ai singoli bucket di backend nel tuo progetto:
Per completare questo passaggio, devi disporre dell'autorizzazione compute.regionBackendBuckets.setIamPolicy.
Nella console Google Cloud , vai alla pagina Backend.
Nell'elenco dei backend, seleziona il bucket di backend a cui vuoi concedere l'accesso e fai clic su Autorizzazioni.
Fai clic su Aggiungi entità.
Nel campo Nuove entità, inserisci l'indirizzo email o un altro identificatore dell'entità.
Nell'elenco Seleziona un ruolo, seleziona Compute Load Balancer Services User.
Fai clic su Salva.
gcloud
Autorizzazioni a livello di progetto
Segui questi passaggi per concedere le autorizzazioni a tutti i bucket di backend nel tuo progetto.
Per completare questo passaggio, devi disporre delle autorizzazioni compute.regionBackendBuckets.setIamPolicy e resourcemanager.projects.setIamPolicy.
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser"
Sostituisci quanto segue:
SERVICE_PROJECT_B_ID: l'ID progetto Google Cloud assegnato al progetto di servizio BLOAD_BALANCER_ADMIN: l'entità per la quale aggiungere l'associazione
Autorizzazioni a livello di risorsa per singoli bucket di backend
A livello di bucket di backend, gli amministratori del progetto di servizio possono utilizzare uno dei
seguenti comandi per concedere il ruolo Utente dei servizi bilanciatore del carico Compute
(roles/compute.loadBalancerServiceUser):
- Comando
gcloud projects add-iam-policy-binding - Comando
gcloud compute backend-buckets add-iam-policy-binding
Utilizza il comando gcloud projects add-iam-policy-binding per concedere il ruolo
Utente dei servizi bilanciatore del carico Compute.
Per completare questo passaggio, devi disporre dell'autorizzazione compute.regionBackendBuckets.setIamPolicy.
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser" \
--condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/REGION/backendBuckets/BACKEND_BUCKET_NAME",title=Shared VPC condition'
SERVICE_PROJECT_B_ID: l'ID progetto Google Cloud assegnato al progetto di servizio BLOAD_BALANCER_ADMIN: l'entità per la quale aggiungere l'associazioneREGION: la regione Google Cloud in cui si trova il bucket di backendBACKEND_BUCKET_NAME: il nome del bucket di backend
gcloud compute backend-buckets add-iam-policy-binding
per concedere il ruolo Utente dei servizi bilanciatore del carico Compute.
gcloud compute backend-buckets add-iam-policy-binding BACKEND_BUCKET_NAME \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser" \
--project=SERVICE_PROJECT_B_ID \
--region=REGION
Invia una richiesta HTTP al bilanciatore del carico
Ora che il servizio di bilanciamento del carico è in esecuzione, 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, che si trova nella regione
us-east1.gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDCopia l'indirizzo IP restituito da utilizzare come
FORWARDING_RULE_IP_ADDRESS.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-sshStabilisci una connessione SSH alla VM client.
gcloud compute ssh client-a --zone=us-east1-c
In questo esempio, regional internal Application Load Balancer ha un VIP frontend nella regione
us-east1della rete VPC. Invia una richiesta HTTP al VIP in quella regione 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
Sostituisci
FORWARDING_RULE_IP_ADDRESScon l'indirizzo IP che hai copiato nel primo passaggio.
Passaggi successivi
- Panoramica del VPC condiviso
- 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