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.
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
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.
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:
- 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.
- 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.
- 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.
- 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
- 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 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
.
- 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:
Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:
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
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