Se questo esempio non corrisponde al tuo caso d'uso, consulta una delle seguenti pagine:
- Per Cloud Run, consulta Configurazione di un bilanciatore del carico con Cloud Run.
- Per un esempio relativo a più regioni che include la configurazione di certificati IPv6 e SSL, consulta Configurare un bilanciatore del carico HTTPS esterno multiregionale.
- Per un bilanciatore del carico delle applicazioni esterno regionale, consulta Configurare un bilanciatore del carico delle applicazioni esterno regionale
- Se utilizzi GKE, il bilanciatore del carico in genere è configurato dal controller Ingress Kubernetes. Per maggiori informazioni, consulta Configurazione di Ingress per il bilanciamento del carico esterno.
Per i concetti generali, consulta la panoramica sul bilanciatore del carico delle applicazioni esterno.
Se sei un utente esistente del bilanciatore del carico delle applicazioni classico, assicurati di rivedere l'articolo Pianificare la migrazione al bilanciatore del carico delle applicazioni esterno globale quando pianifichi un nuovo deployment con il bilanciatore del carico delle applicazioni esterno globale.
Topologie del bilanciatore del carico
Per un bilanciatore del carico HTTPS, devi creare la configurazione illustrata nel diagramma seguente.
Per un bilanciatore del carico HTTP, devi creare la configurazione illustrata nel diagramma seguente.
La sequenza degli eventi nei diagrammi è la seguente:
- Un client invia una richiesta di contenuto all'indirizzo IPv4 esterno definito nella regola di forwarding.
Per un bilanciatore del carico HTTPS, la regola di forwarding indirizza la richiesta al proxy HTTPS di destinazione.
Per un bilanciatore del carico HTTP, la regola di forwarding indirizza la richiesta al proxy HTTP di destinazione.
Il proxy di destinazione utilizza la regola nella mappa di URL per determinare che il singolo servizio di backend riceve tutte le richieste.
Il bilanciatore del carico determina che il servizio di backend ha un solo gruppo di istanze e indirizza la richiesta a un'istanza di macchina virtuale (VM) in quel gruppo.
La VM gestisce i contenuti richiesti dall'utente.
Prima di iniziare
Completa i seguenti passaggi prima di creare il bilanciatore del carico.
Configura una risorsa del certificato SSL
Per un bilanciatore del carico HTTPS, crea una risorsa del certificato SSL come descritto di seguito:
Ti consigliamo di utilizzare un certificato gestito da Google.
Questo esempio presuppone che tu abbia già una risorsa del certificato SSL denominata
www-ssl-cert
.
Configurare le autorizzazioni
Per completare la procedura descritta in questa guida, devi disporre dell'autorizzazione per creare istanze di Compute Engine, regole firewall e indirizzi IP prenotati in un progetto. Devi disporre del ruolo di proprietario o editor del progetto oppure dei seguenti ruoli IAM di Compute Engine.
Attività | Ruolo richiesto |
---|---|
Creare istanze | Amministratore istanze |
Aggiungi e rimuovi regole firewall | Amministratore sicurezza |
crea i componenti del bilanciatore del carico | Amministratore rete |
Crea un progetto (facoltativo) | Autore progetto |
Per ulteriori informazioni, consulta le seguenti guide:
Configura la rete e le subnet
Per creare la rete e la subnet di esempio, segui questi passaggi.
Console
Nella console Google Cloud, vai alla pagina Reti VPC.
Fai clic su Crea rete VPC.
Inserisci un nome per la rete.
In Modalità di creazione subnet, scegli Personalizzata.
Nella sezione Nuova subnet, configura i seguenti campi:
- Specifica un nome per la subnet.
- Seleziona una Regione.
- Per Tipo di stack IP, seleziona IPv4 (stack singolo).
- Inserisci un intervallo di indirizzi IP. Questo è l'intervallo IPv4 principale per la subnet.
Fai clic su Fine.
Per aggiungere una subnet in una regione diversa, fai clic su Aggiungi subnet e ripeti i passaggi precedenti.
Fai clic su Crea.
gcloud
gcloud compute networks subnets update SUBNET \ --network=NETWORK \ --stack-type=IPV4_ONLY \ --range=10.1.2.0/24 \ --region=REGION
Sostituisci quanto segue:
NETWORK
: un nome per la rete VPC.SUBNET
: un nome per la subnet.REGION
: il nome della regione.
Creare un gruppo di istanze gestite
Per configurare un bilanciatore del carico con un backend di Compute Engine, le VM devono trovarsi in un gruppo di istanze. Questa guida descrive come creare un gruppo di istanze gestite con VM Linux su cui è in esecuzione Apache e come configurare il bilanciamento del carico. Un gruppo di istanze gestite crea ognuna delle sue istanze gestite in base ai modelli di istanza da te specificati.
Il gruppo di istanze gestite fornisce VM che eseguono i server di backend di un bilanciatore del carico HTTP(S) esterno. A scopo dimostrativo, i backend gestiscono i propri nomi host.
Prima di creare un gruppo di istanze gestite, crea un modello di istanza.
Console
Per supportare il traffico IPv4, segui questi passaggi:
Nella console Google Cloud, vai alla pagina Modelli di istanza.
Fai clic su Crea modello istanza.
In Nome, inserisci
lb-backend-template
.Assicurati che il disco di avvio sia impostato su un'immagine Debian, ad esempio Debian GNU/Linux 10 (buster). Queste istruzioni utilizzano comandi disponibili solo su Debian, come
apt-get
.Espandi Opzioni avanzate.
Espandi Networking e configura i seguenti campi:
- In Tag di rete, inserisci
allow-health-check
. - Nella sezione Interfacce di rete, fai clic su
- Rete:
NETWORK
- Subnet:
SUBNET
- Traffico IPv4: IPv4 (stack singolo)
Modifica e apporta le seguenti modifiche:
- Rete:
- Fai clic su Fine.
- In Tag di rete, inserisci
Espandi Gestione. Nel campo Script di avvio, inserisci il seguente script:
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Fai clic su Crea.
gcloud
Per supportare il traffico IPv4, esegui questo comando:
gcloud compute instance-templates create TEMPLATE_NAME \ --region=REGION \ --network=NETWORK \ --subnet=SUBNET \ --stack-type=IPV4_ONLY \ --tags=allow-health-check \ --image-family=debian-10 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Terraform
Per creare il modello di istanza, utilizza la risorsa google_compute_instance_template
.
Crea il gruppo di istanze gestite e seleziona il modello di istanza.
Console
Nella console Google Cloud, vai alla pagina Gruppi di istanze.
Fai clic su Crea gruppo di istanze.
A sinistra, scegli Nuovo gruppo di istanze gestite (stateless).
In Nome, inserisci
lb-backend-example
.In Località, seleziona Zona singola.
In Regione, seleziona l'area che preferisci.
In Zona, seleziona una zona.
In Modello di istanza, seleziona il modello di istanza
lb-backend-template
.In Modalità di scalabilità automatica, seleziona On: aggiungi e rimuovi istanze al gruppo.
Imposta Numero minimo di istanze su
2
e Numero massimo di istanze su2
o più.Per creare il nuovo gruppo di istanze, fai clic su Crea.
gcloud
Crea il gruppo di istanze gestite basato sul modello.
gcloud compute instance-groups managed create lb-backend-example \ --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
Terraform
Per creare il gruppo di istanze gestite, utilizza la risorsa
google_compute_instance_group_manager
.
Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base.
Aggiungi una porta denominata al gruppo di istanze
Per il gruppo di istanze, definisci un servizio HTTP e mappa un nome di porta alla porta pertinente. Il servizio di bilanciamento del carico inoltra il traffico alla porta denominata. Per ulteriori informazioni, vedi Porte denominate.
Console
Nella console Google Cloud, vai alla pagina Gruppi di istanze.
Fai clic su lb-backend-example.
Nella pagina Panoramica del gruppo di istanze, fai clic su
Modifica.Nella sezione Mappatura delle porte, fai clic su Aggiungi porta.
- Come nome della porta, inserisci
http
. Per il numero di porta, inserisci80
.
- Come nome della porta, inserisci
Fai clic su Salva.
gcloud
Usa il comando gcloud compute instance-groups
set-named-ports
.
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone ZONE_A
Terraform
L'attributo named_port
è incluso
nell'esempio di gruppo di istanze gestite.
Configurare una regola firewall
In questo esempio, viene creata la regola firewall fw-allow-health-check
.
Questa è una regola in entrata che consente il traffico dai sistemi di controllo di integrità di Google Cloud (130.211.0.0/22
e 35.191.0.0/16
). Questo esempio utilizza il tag di destinazione allow-health-check
per identificare le VM.
Console
Nella console Google Cloud, vai alla pagina Criteri firewall.
Fai clic su Crea regola firewall per creare la regola firewall.
In Nome, inserisci
fw-allow-health-check
.Seleziona una Rete.
In Target, seleziona Tag di destinazione specificati.
Compila il campo Tag di destinazione con
allow-health-check
.Imposta Filtro di origine su Intervalli IPv4.
Imposta Intervalli IPv4 di origine su
130.211.0.0/22
e35.191.0.0/16
.In Protocolli e porte, seleziona Protocolli e porte specificati.
Seleziona la casella di controllo TCP, quindi digita
80
per i numeri di porta.Fai clic su Crea.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
Terraform
Per creare la regola firewall, utilizza la risorsa
google_compute_firewall
.
Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base.
Prenotare un indirizzo IP esterno
Ora che le tue istanze sono in esecuzione, configura un indirizzo IP esterno statico globale, che verrà utilizzato dai clienti per raggiungere il bilanciatore del carico.
Console
Nella console Google Cloud, vai alla pagina Indirizzi IP esterni.
Per prenotare un indirizzo IPv4, fai clic su Prenota indirizzo IP statico esterno.
In Nome, inserisci
lb-ipv4-1
.Imposta Network Service Tier su Premium.
Imposta Versione IP su IPv4.
Imposta Tipo su Globale.
Fai clic su Prenota.
gcloud
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Prendi nota dell'indirizzo IPv4 riservato:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Terraform
Per prenotare l'indirizzo IP, utilizza la google_compute_global_address
risorsa.
Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base.
configura il bilanciatore del carico
In questo esempio utilizzi HTTPS (frontend) tra il client e il bilanciatore del carico. Per HTTPS, sono necessarie una o più risorse del certificato SSL per configurare il proxy. Ti consigliamo di utilizzare un certificato gestito da Google.
Anche se utilizzi HTTPS sul frontend, puoi utilizzare HTTP sul backend. Google cripta automaticamente il traffico tra i Google Front End (GFE) e i backend che risiedono all'interno delle reti VPC di Google Cloud.
Console
Avvia la configurazione
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic su Crea bilanciatore del carico.
- Per Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
- Per Pubblico o interno, seleziona Pubblico (esterno) e fai clic su Avanti.
- Per Deployment globale o in una regione singola, seleziona Ideale per carichi di lavoro globali e fai clic su Avanti.
- Per Generazione del bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni classico e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
Per il Nome del bilanciatore del carico, inserisci ad esempio
web-map-https
o web-map-http
.
Configurazione frontend
- Fai clic su Configurazione frontend.
- Imposta Protocollo su HTTPS.
- Seleziona
IPv4
per il traffico IPv4. Imposta l'opzione Indirizzo IP sulb-ipv4-1
, che hai creato in precedenza. - Imposta Porta su 443.
- Fai clic su Certificato e seleziona il certificato SSL principale.
- (Facoltativo) Crea un criterio SSL:
- Nell'elenco Criterio SSL, seleziona Crea un criterio.
- Imposta il nome del criterio SSL su
my-ssl-policy
. - Per Versione TLS minima, seleziona TLS 1.0.
- In Profilo, seleziona Moderno. Vengono visualizzate le opzioni Funzionalità abilitate e Funzionalità disattivate.
- Fai clic su Salva.
-
(Facoltativo) Seleziona la casella di controllo Abilita reindirizzamento da HTTP a HTTPS per attivare i reindirizzamenti.
L'attivazione di questa casella di controllo crea un bilanciatore del carico HTTP parziale aggiuntivo che utilizza lo stesso indirizzo IP del bilanciatore del carico HTTPS e reindirizza le richieste HTTP in entrata al frontend HTTPS del bilanciatore del carico.
Questa casella di controllo può essere selezionata solo quando è selezionato il protocollo HTTPS e viene utilizzato un indirizzo IP riservato.
- Fai clic su Fine.
Configurazione backend
- Fai clic su Configurazione backend.
- In Crea o seleziona servizi e bucket di backend, seleziona Servizi di backend > Crea un servizio di backend.
- Aggiungi un nome per il servizio di backend, ad esempio
web-backend-service
. - In Protocollo, seleziona HTTP.
- In Porta denominata, inserisci
http
. - In Backend > Nuovo backend >
Gruppo di istanze, seleziona il tuo gruppo di istanze,
lb-backend-example
. - Per Numeri di porta, inserisci
80
. - Conserva le altre impostazioni predefinite.
- In Controllo di integrità, seleziona Crea un controllo di integrità, quindi aggiungi un nome per il controllo di integrità, ad esempio
http-basic-check
. - Imposta il protocollo su HTTP, quindi fai clic su Salva.
-
(Facoltativo) Configura un criterio di sicurezza del backend predefinito. Il criterio di sicurezza predefinito limita il traffico al di sopra di una soglia configurata dall'utente. Per ulteriori informazioni sui criteri di sicurezza predefiniti, consulta la panoramica sulla limitazione di frequenza.
- Per disattivare il criterio di sicurezza predefinito di Google Cloud Armor, seleziona
None
nel menu dell'elenco dei criteri di sicurezza del backend. - Nella sezione Sicurezza, seleziona Criterio di sicurezza predefinito.
- Nel campo Nome criterio, accetta il nome generato automaticamente o inserisci un nome per il criterio di sicurezza.
- Nel campo Conteggio richieste, accetta il conteggio predefinito o inserisci un numero intero compreso tra
1
e10,000
. - Nel campo Intervallo, seleziona un intervallo.
- Nel campo Applica alla chiave, scegli uno dei seguenti valori: Tutti, Indirizzo IP o Indirizzo IP X-Forwarded-For. Per ulteriori informazioni su queste opzioni, consulta Identificazione dei clienti per la limitazione di frequenza.
- Per disattivare il criterio di sicurezza predefinito di Google Cloud Armor, seleziona
- Conserva le altre impostazioni predefinite.
- Fai clic su Crea.
Regole host e percorso
Per Regole host e percorso, mantieni le impostazioni predefinite.
Esamina e finalizza
- Fai clic su Esamina e finalizza.
- Rivedi le impostazioni di configurazione del bilanciatore del carico.
- (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta API REST che verrà utilizzata per creare il bilanciatore del carico.
- Fai clic su Crea.
Attendi che la creazione del bilanciatore del carico sia completa.
Se hai creato un bilanciatore del carico HTTPS e hai selezionato la casella di controllo Abilita reindirizzamento da HTTP a HTTPS, vedrai anche un bilanciatore del carico HTTP creato con un suffisso -redirect.
- Fai clic sul nome del bilanciatore del carico.
- Nella schermata Dettagli bilanciatore del carico, prendi nota di IP:Port per il bilanciatore del carico.
gcloud
- Creare un controllo di integrità.
gcloud compute health-checks create http http-basic-check \ --port 80
- Crea un servizio di backend.
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
- Aggiungi il tuo gruppo di istanze come backend del servizio di backend.
gcloud beta compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE_A \ --global
- Per HTTP, crea una mappa URL per instradare le richieste in entrata al servizio di backend predefinito.
gcloud beta compute url-maps create web-map-http \ --default-service web-backend-service
- Per HTTPS, crea una mappa URL per instradare le richieste in entrata al servizio di backend predefinito.
gcloud beta compute url-maps create web-map-https \ --default-service web-backend-service
Configurare un frontend HTTPS
Salta questa sezione per i bilanciatori del carico HTTP.
- Per HTTPS, se non lo hai già fatto, crea la risorsa del certificato SSL globale, come illustrato nelle sezioni seguenti:
- Creazione di una risorsa del certificato SSL gestito da Google
- Creazione di una risorsa del certificato SSL autogestito
Per 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, quindi carichi anche il tuo certificato in questo passaggio.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-map-https \ --ssl-certificates=www-ssl-cert
- Per HTTPS, crea una regola di forwarding globale per instradare le richieste in entrata al proxy.
gcloud compute forwarding-rules create https-content-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
- (Facoltativo) Per HTTPS, crea un criterio SSL globale e collegalo al proxy HTTPS.
Per creare un criterio SSL globale:gcloud compute ssl-policies create my-ssl-policy \ --profile MODERN \ --min-tls-version 1.0
Per collegare il criterio SSL al proxy HTTPS di destinazione globale:gcloud compute target-https-proxies update https-lb-proxy \ --ssl-policy my-ssl-policy
Configura un frontend HTTP
Salta questa sezione per i bilanciatori del carico HTTPS.
- Per HTTP, crea un proxy HTTP di destinazione per instradare le richieste alla mappa di URL.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http
- Per HTTP, crea una regola di forwarding globale per instradare le richieste in entrata al proxy.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
-
Per creare il controllo di integrità, utilizza la risorsa
google_compute_health_check
. -
Per creare il servizio di backend, utilizza la risorsa
google_compute_backend_service
.Questo esempio utilizza
load_balancing_scheme="EXTERNAL_MANAGED"
, che configura un bilanciatore del carico delle applicazioni esterno globale con funzionalità avanzata di gestione del traffico. Per creare un bilanciatore del carico delle applicazioni classico, assicurati di modificareload_balancing_scheme
inEXTERNAL
prima di eseguire lo script. -
Per creare la mappa URL, utilizza la risorsa
google_compute_url_map
. -
Per creare il proxy HTTP di destinazione, utilizza la risorsa
google_compute_target_http_proxy
. -
Per creare la regola di forwarding, utilizza la risorsa
google_compute_global_forwarding_rule
.Questo esempio utilizza
load_balancing_scheme="EXTERNAL_MANAGED"
, che configura un bilanciatore del carico delle applicazioni esterno globale con funzionalità avanzata di gestione del traffico. Per creare un bilanciatore del carico delle applicazioni classico, assicurati di modificareload_balancing_scheme
inEXTERNAL
prima di eseguire lo script.
Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base.
Connetti il tuo dominio al bilanciatore del carico
Dopo aver creato il bilanciatore del carico, prendi nota dell'indirizzo IP associato al bilanciatore, ad esempio 30.90.80.100
. Per puntare il tuo dominio al bilanciatore del carico, crea un record A
utilizzando il servizio di registrazione del dominio. Se hai aggiunto più domini al certificato SSL, devi aggiungere un record A
per ciascuno, il tutto puntando all'indirizzo IP del bilanciatore del carico. Ad esempio, per
creare record A
per www.example.com
e example.com
, utilizza quanto segue:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Se utilizzi Cloud DNS come provider DNS, consulta Aggiungere, modificare ed eliminare record.
Testa il traffico inviato alle istanze
Ora che il servizio di bilanciamento del carico è in esecuzione, puoi inviare il traffico alla regola di forwarding e osservare la distribuzione del traffico in diverse istanze.
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic sul bilanciatore del carico che hai appena creato.
Nella sezione Backend, verifica che le VM siano integre. La colonna Integro dovrebbe essere compilata, a indicare che entrambe le VM sono in stato integro (
2/2
). Se la risposta è diversa, prova prima a ricaricare la pagina. Possono essere necessari alcuni minuti prima che la console Google Cloud indica che le VM sono integre. Se dopo pochi minuti i backend non risultano in stato integro, controlla la configurazione del firewall e il tag di rete assegnato alle VM di backend.- Per HTTPS, se utilizzi un certificato gestito da Google, verifica che lo stato della risorsa del certificato sia ATTIVO. Per maggiori informazioni, vedi Stato delle risorse del certificato SSL gestito da Google.
- Quando la console Google Cloud indica che le istanze di backend sono in stato integro, puoi testare il bilanciatore del carico utilizzando un browser web da
https://IP_ADDRESS
(ohttp://IP_ADDRESS
). SostituisciIP_ADDRESS
con l'indirizzo IP del bilanciatore del carico. - Se hai utilizzato un certificato autofirmato per il test del protocollo HTTPS, il browser mostra un avviso. Devi indicare esplicitamente al browser di accettare un certificato autofirmato.
- Il browser dovrebbe visualizzare una pagina con contenuti che mostrano il nome dell'istanza che ha pubblicato la pagina e la relativa zona (ad esempio,
Page served from: lb-backend-example-xxxx
). Se il browser non mostra questa pagina, rivedi le impostazioni di configurazione in questa guida.
gcloud
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Dopo alcuni minuti, puoi testare la configurazione eseguendo questo comando curl
.
curl http://IP_ADDRESS
-o-
curl https://HOSTNAME
Passaggi successivi
- Per configurare un reindirizzamento da HTTP a HTTPS per il bilanciatore del carico delle applicazioni classico, consulta Configurare un reindirizzamento da HTTP a HTTPS per i bilanciatori del carico delle applicazioni classici
- Per un esempio complesso con il bilanciamento del carico IPv6 e multiregionale, consulta Configurazione di un bilanciatore del carico HTTPS.
- Esegui la pulizia della configurazione del bilanciatore del carico.
- Per abilitare IAP, vedi Attivazione di IAP sull'Application Load Balancer esterno.
- Per utilizzare un modulo Terraform, vedi Esempi di moduli Terraform per Application Load Balancer esterni.