Transizione di un bilanciatore del carico di rete dai pool di destinazione ai servizi di backend regionali

1. Introduzione

Questa guida fornisce le istruzioni per eseguire la transizione di un bilanciatore del carico di rete esistente dal backend di un 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 i pool di destinazione
  • Esegui convalida del pool di destinazione
  • Crea un servizio di backend a livello di regione utilizzando gruppi di istanze non gestite
  • Esegui la migrazione del 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 di Google Cloud dispongono di un potente strumento per la distribuzione del traffico esterno tra le macchine virtuali in una regione di Google Cloud. Per consentire ai nostri clienti di gestire più facilmente il 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. Ciò fornisce ai nostri clienti una maggiore scalabilità, velocità, prestazioni e resilienza durante il deployment, il tutto in un modo facile 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 il modo in cui i 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.

267db35a58145be.png

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à di 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 sono stati una richiesta comune per i clienti del bilanciamento del carico di rete.
  • Migliore resilienza con i gruppi di failover - Con i gruppi di failover puoi designare un gruppo di istanze come primario e un altro come secondario e 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 keepaLifetime o pacemaker e fare in modo che venga esposto un controllo di integrità integro o non riuscito in base alle modifiche dello stato dell'istanza di backend.
  • Scalabilità e alta disponibilità con gruppi di istanze gestite: i servizi di backend regionali supportano i gruppi di istanze gestite come backend. Ora puoi specificare un modello per le tue 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 illustrato sopra, potrai sfruttare lo svuotamento della connessione per il protocollo orientato alla connessione (TCP) e tempi di programmazione più rapidi per implementazioni di grandi dimensioni.

Topologia di rete codelab

Questa guida fornisce le istruzioni per eseguire la transizione di un bilanciatore del carico di rete esistente dal backend di un 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 il criterio di failover.

Questa guida illustra la transizione del seguente bilanciatore del carico di rete basato su pool di destinazione di esempio per l'utilizzo di un servizio di backend regionale

b2ac8a09e53e27f8.png

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 a questo.

f628fdad64c83af3.png

Dopo: bilanciamento del carico di rete con un servizio di backend regionale

Questo esempio presuppone che tu abbia 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 generali necessari per questa transizione sono:

  1. 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 anche se non esiste 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 un numero di istanze superiore al massimo consentito, dovrai suddividere i backend in più gruppi di istanze. Se il deployment esistente include un pool di destinazione di backup, crea un gruppo di istanze separato per le istanze in questione. Questo gruppo di istanze verrà configurato come gruppo di failover.
  2. Creare un servizio di backend a livello di regione. Se il deployment include un pool di destinazione di backup, dovrai specificare un rapporto di failover durante la creazione del servizio di backend. Deve corrispondere al rapporto di failover configurato in precedenza per il deployment del pool di destinazione.
  3. Aggiungi 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.
  4. Configura una regola di forwarding che punti al nuovo servizio di backend. Puoi scegliere tra due opzioni:
  • (Consigliato) Aggiorna la regola di forwarding esistente in modo che punti al servizio di backend. OPPURE
  • Crea un nuovo forwarding che punti al servizio di backend. Ciò richiede la creazione di un nuovo indirizzo IP per il frontend del bilanciatore del carico. Quindi modifica le impostazioni DNS in modo che la transizione dall'indirizzo IP del bilanciatore del carico basato su pool di destinazione precedente a quello nuovo avvenga senza problemi.

Configurazione dell'ambiente da seguire in modo autonomo

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Ricorda l'ID progetto, un nome univoco in tutti i progetti Google Cloud (il nome precedente è già stato utilizzato e non funzionerà correttamente). Verrà indicato più avanti in questo codelab come PROJECT_ID.

  1. Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.

Eseguire questo codelab non dovrebbe costare molto. Assicurati di seguire le istruzioni nella sezione "Pulizia" in cui viene spiegato come arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.

Avvia Cloud Shell

Anche se Google Cloud può essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.

Dalla console di Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:

bce75f34b2c53987.png

Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:

f6ef2b5f13479f3a.png

Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Tutto il lavoro in questo lab può essere svolto semplicemente con un browser.

Accedi a Cloudshell e imposta l'ID progetto

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 istanze con 2 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 verso 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 regola di forwarding e 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 tue 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 tue 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 di destinazione

Identifica l'indirizzo IP del frontend selezionando Bilanciatori del carico → Frontend (www-rule)

Usa il comando curl dal terminale di workstation per accedere all'indirizzo IP esterno e osservare il bilanciamento del carico tra le quattro istanze di destinazione. Chiudi il terminale dopo la convalida.

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 dal 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 dal 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

Osserva il nome della regola di forwarding "www-rule" e l'indirizzo IP associato, procedendo nel seguente modo:

Seleziona bilanciatore del carico → Frontend

Inoltre, sono stati notati i quattro pool di destinazione

Seleziona Bilanciatore del carico → seleziona "www-pool"

Instrada 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 il bilanciatore del carico "www-pool" non è più configurato con il frontend "www-rule" (vedi screenshot di seguito).

Seleziona Bilanciatore del carico → www-pool

9a393b3ca4e0942c.png

La convalida della regola di forwarding del frontend è ora associata al bilanciatore del carico "my-backend-service"

Seleziona bilanciatore del carico → Frontend

Nota il nome della regola "www-rule" L'indirizzo IP viene mantenuto e il bilanciatore del carico "my-backend-service" è ora in uso

Utilizza il comando curl dal terminale di workstation per accedere all'indirizzo IP esterno e osservare il bilanciamento del carico nel servizio di backend appena associato. Chiudi il terminale dopo la convalida.

while true; do curl -m1 IP_ADDRESS; done

7. Procedura di 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!

Complimenti per aver completato il codelab.

Argomenti trattati

  • Comprendere i vantaggi dei servizi di backend regionali
  • Crea un bilanciatore del carico di rete con i pool di destinazione
  • Esegui convalida del pool di destinazione
  • Crea un servizio di backend a livello di regione utilizzando gruppi di istanze non gestite
  • Esegui la migrazione del pool di destinazione al servizio di backend
  • Esegui la convalida dei servizi di backend