1. Introduzione
Questa guida fornisce istruzioni per eseguire 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
- Informazioni sui vantaggi dei servizi di backend regionali
- Creare un bilanciatore del carico di rete con pool di destinazione
- Esegui la convalida del pool di destinazione
- Creare un servizio di backend regionale 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. In questo modo, i nostri clienti possono usufruire di scalabilità, velocità, prestazioni e resilienza migliorate durante il deployment, il tutto in 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 la modalità di distribuzione del traffico in entrata ai backend collegati dai nostri bilanciatori del carico 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:
- Controlli di integrità ad alta fedeltà con controlli di integrità unificati: 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 precedenti. Per motivi di conformità, i controlli di integrità TCP con il supporto di 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 principale e un altro come secondario e eseguire il failover del traffico quando lo stato 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à in stato di integrità 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 sopra, potrai sfruttare lo svuotamento delle connessioni per il protocollo TCP (connection oriented) e tempi di programmazione più rapidi per i deployment di grandi dimensioni.
Topologia di rete del codelab
Questa guida fornisce istruzioni per 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 usufruire di 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 procedura per eseguire la transizione del seguente bilanciatore del carico di rete basato su pool di destinazione di esempio in modo da utilizzare 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 su servizi di backend risultante sarà simile al seguente.
Dopo: bilanciamento del carico di rete con un servizio di backend regionale
Questo esempio presuppone che tu abbia un bilanciatore del carico di rete basato su pool di destinazione tradizionale 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 tuo 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, 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 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 inoltro che rimandi al nuovo servizio di backend. Puoi scegliere tra due opzioni:
- (Consigliato) Aggiorna la regola di inoltro esistente in modo che punti al servizio di backend. OPPURE
- Crea un nuovo inoltro che punti al servizio di backend. Per farlo, devi creare un nuovo indirizzo IP per il frontend del bilanciatore del carico. Quindi, modifica le impostazioni DNS per passare senza problemi dall'indirizzo IP del vecchio bilanciatore del carico basato su pool di destinazione al nuovo indirizzo IP.
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 per tutti i progetti Google Cloud (il nome sopra indicato è già stato utilizzato e non funzionerà per te, scusa). In seguito in questo codelab verrà chiamato PROJECT_ID
.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per poter utilizzare le risorse Google Cloud.
L'esecuzione di questo codelab non dovrebbe costare molto, se non del tutto. Assicurati di seguire le istruzioni nella sezione "Pulizia" che ti consigliano come arrestare le risorse per evitare addebiti al termine di questo tutorial. I nuovi utenti di Google Cloud possono partecipare al programma Prova senza costi di 300$.
Avvia Cloud Shell
Sebbene Google Cloud possa 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 qualcosa di simile a questo:
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 e l'autenticazione di rete. Tutto il lavoro in questo lab può essere svolto semplicemente con un browser.
Accedi a Cloud Shell e imposta il tuo 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
Creare 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
Creare istanze non gestite
Crea due istanze per zona, us-central1-a e us-central1-c
Crea l'istanza 1 da Cloud Shell
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"
Crea l'istanza 3 da Cloud Shell
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"
Crea l'istanza 4 da Cloud Shell
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. Creare una regola di forwarding e un pool di destinazione
Creare 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 di destinazione
Identifica l'indirizzo IP del frontend selezionando Bilanciatori del carico → Frontend (www-rule)
Utilizza il comando curl dal terminale della workstation per accedere all'indirizzo IP esterno e osservare il bilanciamento del carico tra le quattro istanze target. 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
Creare gruppi di istanze dalle 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 inoltro esistente per supportare i servizi di backend
Prendi nota del nome della regola di inoltro "www-rule" e dell'indirizzo IP associato seguendo questa procedura:
Seleziona Bilanciatore del carico → Frontend
Inoltre, ho notato 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 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
La convalida della regola di forwarding del frontend è ora associata al bilanciatore del carico "my-backend-service"
Seleziona Bilanciatore del carico → Frontend
Tieni presente che il nome della regola "www-rule" viene mantenuto e il bilanciatore del carico "my-backend-service" è ora in uso
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 dopo la convalida.
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!
Complimenti per aver completato il codelab.
Argomenti trattati
- Informazioni sui vantaggi dei servizi di backend regionali
- Creare un bilanciatore del carico di rete con pool di destinazione
- Esegui la convalida del pool di destinazione
- Creare un servizio di backend regionale utilizzando gruppi di istanze non gestite
- Esegui la migrazione del pool di destinazione al servizio di backend
- Esegui la convalida dei servizi di backend