1. Introduzione
Questa guida fornisce istruzioni per la transizione di un bilanciatore del carico di rete esistente da un backend del pool di destinazione a un servizio di backend regionale.
Cosa imparerai a fare
- Comprendere i vantaggi dei servizi di backend regionali
- Crea un bilanciatore del carico di rete con pool di destinazione
- Esegui la convalida del pool di destinazione
- Crea un servizio di backend regionale utilizzando gruppi di istanze non gestite
- Esegui la migrazione dal pool di destinazione al servizio di backend
- Esegui la convalida dei servizi di backend
Che cosa ti serve
- Esperienza con i bilanciatori del carico
2. Panoramica dei servizi di backend regionali per il bilanciamento del carico di rete
Con il bilanciamento del carico di rete, i clienti Google Cloud dispongono di uno strumento potente per distribuire il traffico esterno tra le macchine virtuali in una regione Google Cloud. Per semplificare la gestione del traffico in entrata e controllare il comportamento del bilanciatore del carico, di recente abbiamo aggiunto il supporto per i servizi di backend al bilanciamento del carico di rete. In questo modo, i nostri clienti possono usufruire di scalabilità, velocità, prestazioni e resilienza migliori durante l'implementazione, il tutto in modo semplice da gestire.
Ora supportiamo i servizi di backend con il bilanciamento del carico di rete, un miglioramento significativo rispetto all'approccio precedente, i pool di destinazione. Un servizio di backend definisce in che modo i nostri bilanciatori del carico distribuiscono il traffico in entrata ai backend collegati e fornisce un controllo granulare sul comportamento del bilanciatore del carico.
3. Vantaggi dei servizi di backend regionali
La scelta di un servizio di backend regionale come bilanciatore del carico offre una serie di vantaggi al tuo ambiente.

Fin da subito, i servizi di backend regionali forniscono:
- Controllo di integrità ad alta precisione con controllo di integrità unificato: con i servizi di backend regionali ora puoi sfruttare appieno le funzionalità di controllo di integrità del bilanciamento del carico, liberandoti dai vincoli dei controlli di integrità HTTP legacy. Per motivi di conformità, i controlli di integrità TCP con supporto per stringhe di richiesta e risposta personalizzate o HTTPS erano una richiesta comune per i clienti di Network Load Balancing.
- Maggiore resilienza con i gruppi di failover: con i gruppi di failover, puoi designare un gruppo di istanze come primario e un altro come secondario ed eseguire il failover del traffico quando l'integrità delle istanze nel gruppo attivo scende al di sotto di una determinata soglia. Per un maggiore controllo sul meccanismo di failover, puoi utilizzare un agente come keepalived o pacemaker e avere un controllo di integrità integro o non riuscito esposto in base alle modifiche dello stato dell'istanza di backend.
- Scalabilità e alta disponibilità con i gruppi di istanze gestite: i servizi di backend regionali supportano i gruppi di istanze gestite come backend. Ora puoi specificare un modello per le istanze di macchine virtuali di backend e sfruttare la scalabilità automatica in base all'utilizzo della CPU o ad altre metriche di monitoraggio.
Oltre a quanto sopra, potrai usufruire di Connection Draining per il protocollo orientato alla connessione (TCP) e di tempi di programmazione più rapidi per le implementazioni di grandi dimensioni.
Topologia di rete del codelab
Questa guida fornisce istruzioni per la transizione di un bilanciatore del carico di rete esistente da un backend del pool di destinazione a un servizio di backend regionale.
Il passaggio a un servizio di backend regionale ti consente di sfruttare funzionalità come i controlli di integrità non legacy (per TCP, SSL, HTTP, HTTPS e HTTP/2), i gruppi di istanze gestite, lo svuotamento della connessione e i criteri di failover.
Questa guida illustra la transizione del seguente bilanciatore del carico di rete basato su pool di destinazione di esempio per utilizzare invece un servizio di backend regionale

Prima:bilanciamento del carico di rete con un pool di destinazione
Il deployment del bilanciatore del carico di rete basato sul servizio di backend risultante sarà simile al seguente.

Dopo: bilanciamento del carico di rete con un servizio di backend regionale
Questo esempio presuppone che tu disponga di un bilanciatore del carico di rete tradizionale basato su pool di destinazione con due istanze nella zona us-central-1a e due istanze nella zona us-central-1c.
I passaggi di alto livello necessari per una transizione di questo tipo sono:
- Raggruppa le istanze del pool di destinazione in gruppi di istanze. I servizi di backend funzionano solo con gruppi di istanze gestite o non gestite. Tieni presente che, sebbene non esista un limite al numero di istanze che possono essere inserite in un singolo pool di destinazione, i gruppi di istanze hanno una dimensione massima. Se il pool di destinazione ha più di questo numero massimo di istanze, devi suddividere i relativi backend in più gruppi di istanze. Se il deployment esistente include un pool di destinazione di backup, crea un gruppo di istanze separato per queste istanze. Questo gruppo di istanze verrà configurato come gruppo di failover.
- Crea un servizio di backend regionale. Se il deployment include un pool di destinazione di backup, devi specificare un rapporto di failover durante la creazione del servizio di backend. Questo valore deve corrispondere al rapporto di failover configurato in precedenza per il deployment del pool di destinazione.
- Aggiungi i gruppi di istanze (creati in precedenza) al servizio di backend. Se il deployment include un pool di destinazione di backup, contrassegna il gruppo di istanze di failover corrispondente con un flag –failover quando lo aggiungi al servizio di backend.
- Configura una regola di forwarding che rimandi al nuovo servizio di backend. Hai due opzioni:
- (Consigliato) Aggiorna la regola di forwarding esistente in modo che punti al servizio di backend. OPPURE
- Crea un nuovo forwarding che rimandi al servizio di backend. Per farlo, devi creare un nuovo indirizzo IP per il frontend del bilanciatore del carico. Poi, modifica le impostazioni DNS per passare senza problemi dal vecchio indirizzo IP del bilanciatore del carico basato sul pool di destinazione al nuovo indirizzo IP.
Configurazione dell'ambiente autonomo
- Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.



Ricorda l'ID progetto, un nome univoco tra tutti i progetti Google Cloud (il nome sopra è già stato utilizzato e non funzionerà per te, mi dispiace). In questo codelab verrà chiamato PROJECT_ID.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.
L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Assicurati di seguire le istruzioni riportate nella sezione "Pulizia", che ti consiglia come arrestare le risorse in modo da non incorrere in addebiti oltre questo tutorial. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.
Avvia Cloud Shell
Sebbene Google Cloud possa essere gestito da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Nella console GCP, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere un risultato simile a questo:

Questa macchina virtuale è caricata con tutti gli strumenti per sviluppatori di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Tutto il lavoro di questo lab può essere svolto semplicemente con un browser.
Accedi a Cloud Shell e imposta il projectid
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
4. Crea rete VPC
Rete VPC
Da Cloud Shell
gcloud compute networks create network-lb --subnet-mode custom
Crea subnet
Da Cloud Shell
gcloud compute networks subnets create network-lb-subnet \
--network network-lb --range 10.0.0.0/24 --region us-central1
Crea regole firewall
Da Cloud Shell
gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag
Crea istanze non gestite
Crea due istanze per zona, us-central1-a e us-central1-c
Da Cloud Shell crea l'istanza 1
gcloud compute instances create www1 \ --subnet network-lb-subnet \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-a \ --tags network-lb-tag \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html"
Da Cloud Shell crea l'istanza 2
gcloud compute instances create www2 \ --subnet network-lb-subnet \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-a \ --tags network-lb-tag \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html"
Da Cloud Shell crea l'istanza 3
gcloud compute instances create www3 \ --subnet network-lb-subnet \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-c \ --tags network-lb-tag \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html"
Da Cloud Shell crea l'istanza 4
gcloud compute instances create www4 \ --subnet network-lb-subnet \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-c \ --tags network-lb-tag \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www4</h1></body></html>' | tee /var/www/html/index.html"
Crea una regola firewall per consentire il traffico esterno a queste istanze VM
Da Cloud Shell
gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag
Crea un indirizzo IP esterno statico per il bilanciatore del carico
Da Cloud Shell
gcloud compute addresses create network-lb-ip-1 \
--region us-central1
Aggiungi una risorsa legacy di controllo di integrità HTTP
Da Cloud Shell
gcloud compute http-health-checks create basic-check
5. Crea la regola di forwarding e il pool di destinazione
Crea un pool di destinazione
gcloud compute target-pools create www-pool \
--region us-central1 --http-health-check basic-check
Aggiungi le istanze al pool di destinazione us-central1-a
gcloud compute target-pools add-instances www-pool \ --instances www1,www2 \ --instances-zone us-central1-a
Aggiungi le istanze al pool di destinazione us-central1-c
gcloud compute target-pools add-instances www-pool \ --instances www3,www4 \ --instances-zone us-central1-c
Aggiungere una regola di forwarding
gcloud compute forwarding-rules create www-rule \ --region us-central1 \ --ports 80 \ --address network-lb-ip-1 \ --target-pool www-pool
Convalida la funzionalità del pool target
Identifica l'indirizzo IP frontend selezionando Bilanciatori del carico → Frontend (regola www)
Utilizza il comando curl dal terminale della workstation per accedere all'indirizzo IP esterno e osservare il bilanciamento del carico nelle quattro istanze di destinazione. Chiudi il terminale una volta convalidato.
while true; do curl -m1 IP_ADDRESS; done
6. Esegui la transizione del bilanciatore del carico di rete dal pool di destinazione al servizio di backend
Crea controlli di integrità unificati per il tuo servizio di backend
gcloud compute health-checks create tcp my-tcp-health-check --port 80 --region us-central1
Crea gruppi di istanze da istanze esistenti del pool di destinazione
gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1a --zone=us-central1-a gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1a --zone=us-central1-a --instances=www1,www2
Crea gruppi di istanze da istanze esistenti del pool di destinazione
gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1c --zone=us-central1-c gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1c --zone=us-central1-c --instances=www3,www4
Crea un servizio di backend e associalo ai controlli di integrità appena creati
gcloud compute backend-services create my-backend-service --region us-central1 --health-checks my-tcp-health-check --health-checks-region us-central1 --load-balancing-scheme external
Configura il servizio di backend e aggiungi i gruppi di istanze
gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1a --instance-group-zone us-central1-a --region us-central1 gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1c --instance-group-zone us-central1-c --region us-central1
Aggiorna la regola di forwarding esistente per supportare i servizi di backend
Prendi nota del nome della regola di forwarding "www-rule" e dell'indirizzo IP associato eseguendo le seguenti operazioni:
Seleziona Bilanciatore del carico → Frontend
Inoltre, ha annotato i quattro pool target
Seleziona Bilanciatore del carico → Seleziona "www-pool"
Instradare il traffico ai servizi di backend aggiornando la regola di forwarding esistente
gcloud compute forwarding-rules set-target www-rule --region=us-central1 --backend-service my-backend-service --region us-central1
Verifica che il bilanciatore del carico "www-pool" non sia più configurato con il frontend "www-rule" (vedi screenshot di seguito)
Seleziona Bilanciatore del carico → www-pool

Verifica che la regola di forwarding frontend sia ora associata al bilanciatore del carico "my-backend-service".
Seleziona Bilanciatore del carico → Frontend
Prendi nota del nome della regola "www-rule". L'indirizzo IP viene mantenuto e ora è in uso il bilanciatore del carico "my-backend-service"
Utilizza il comando curl dal terminale della workstation per accedere all'indirizzo IP esterno e osservare il bilanciamento del carico nel servizio di backend appena associato. Chiudi il terminale una volta convalidato.
while true; do curl -m1 IP_ADDRESS; done
7. Procedura per la pulizia
gcloud compute forwarding-rules delete www-rule --region=us-central1 --quiet gcloud compute backend-services delete my-backend-service --region us-central1 --quiet gcloud compute target-pools delete www-pool --region us-central1 --quiet gcloud compute addresses delete network-lb-ip-1 --region us-central1 --quiet gcloud compute firewall-rules delete www-firewall-network-lb --quiet gcloud compute instances delete www4 --zone us-central1-c --quiet gcloud compute instances delete www3 --zone us-central1-c --quiet gcloud compute instances delete www2 --zone us-central1-a --quiet gcloud compute instances delete www1 --zone us-central1-a --quiet gcloud compute networks subnets delete network-lb-subnet --region us-central1 --quiet gcloud compute networks delete network-lb --quiet gcloud compute instance-groups unmanaged delete www-instance-group-central1a --zone us-central1-a --quiet gcloud compute instance-groups unmanaged delete www-instance-group-central1c --zone us-central1-c --quiet
8. Complimenti!
Congratulazioni per aver completato il codelab.
Argomenti trattati
- Comprendere i vantaggi dei servizi di backend regionali
- Crea un bilanciatore del carico di rete con pool di destinazione
- Esegui la convalida del pool di destinazione
- Crea un servizio di backend regionale utilizzando gruppi di istanze non gestite
- Esegui la migrazione dal pool di destinazione al servizio di backend
- Esegui la convalida dei servizi di backend