GSP041

Panoramica
Il bilanciatore del carico delle applicazioni interno è essenziale per creare applicazioni interne affidabili, sicure e facilmente gestibili per le operazioni aziendali. Questo lab ti insegnerà a distribuire il traffico di rete all'interno della rete cloud privata senza esporre le macchine virtuali (VM) direttamente alla rete internet pubblica, così da garantire la protezione e l'efficienza dei servizi.
Creerai un pattern architetturale semplificato, ma molto comune:
- Un "livello web" (un sito web rivolto al pubblico) che deve chiedere aiuto a un altro servizio interno.
- Un "livello di servizio interno" (un calcolatore di numeri primi) che esegue attività specifiche ed è distribuito su più macchine.
Questa configurazione garantisce che, anche se una parte del servizio interno è occupata o non funziona, il sistema complessivo continui a funzionare senza problemi perché il bilanciatore del carico indirizza automaticamente le richieste alle macchine integre.
In questo lab proverai a:
- Scoprire di più sui componenti che costituiscono un bilanciatore del carico interno.
- Creare un gruppo di macchine di backend (un calcolatore di numeri primi).
- Configurare il bilanciatore del carico interno in modo che indirizzi il traffico interno alle macchine di backend.
- Testare il bilanciatore del carico interno da un'altra macchina interna.
- Configurare un server web rivolto al pubblico che utilizza il bilanciatore del carico interno per ottenere i risultati dal servizio interno per il calcolo di numeri primi.
Prerequisiti
- Familiarità di base con Google Cloud Compute Engine: sapere cos'è un'istanza di macchina virtuale (VM).
- Concetti di base del networking: che cos'è un indirizzo IP.
- Riga di comando Unix/Linux di base: come digitare i comandi in un terminale.
- Conoscenze generali sui VPC (Virtual Private Cloud): sapere che le risorse Google Cloud si trovano in una rete privata.
Configurazione e requisiti
Prima di fare clic sul pulsante Avvia lab
Leggi le seguenti istruzioni. I lab sono a tempo e non possono essere messi in pausa. Il timer si avvia quando fai clic su Inizia il lab e ti mostra per quanto tempo avrai a disposizione le risorse Google Cloud.
Con questo lab pratico avrai la possibilità di completare le attività in un ambiente cloud reale e non di simulazione o demo. Riceverai delle nuove credenziali temporanee che potrai utilizzare per accedere a Google Cloud per la durata del lab.
Per completare il lab, avrai bisogno di:
- Accesso a un browser internet standard (Chrome è il browser consigliato).
Nota: per eseguire questo lab, utilizza una finestra del browser in modalità di navigazione in incognito (consigliata) o privata. Ciò evita conflitti tra il tuo account personale e l'account studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
- È ora di completare il lab: ricorda che, una volta iniziato, non puoi metterlo in pausa.
Nota: utilizza solo l'account studente per questo lab. Se utilizzi un altro account Google Cloud, potrebbero essere addebitati costi su quell'account.
Come avviare il lab e accedere alla console Google Cloud
-
Fai clic sul pulsante Avvia lab. Se devi effettuare il pagamento per il lab, si aprirà una finestra di dialogo per permetterti di selezionare il metodo di pagamento.
A sinistra, trovi il riquadro Dettagli lab con le seguenti informazioni:
- Il pulsante Apri la console Google Cloud
- Tempo rimanente
- Credenziali temporanee da utilizzare per il lab
- Altre informazioni per seguire questo lab, se necessario
-
Fai clic su Apri console Google Cloud (o fai clic con il tasto destro del mouse e seleziona Apri link in finestra di navigazione in incognito se utilizzi il browser Chrome).
Il lab avvia le risorse e apre un'altra scheda con la pagina di accesso.
Suggerimento: disponi le schede in finestre separate posizionate fianco a fianco.
Nota: se visualizzi la finestra di dialogo Scegli un account, fai clic su Usa un altro account.
-
Se necessario, copia il Nome utente di seguito e incollalo nella finestra di dialogo di accesso.
{{{user_0.username | "Username"}}}
Puoi trovare il Nome utente anche nel riquadro Dettagli lab.
-
Fai clic su Avanti.
-
Copia la Password di seguito e incollala nella finestra di dialogo di benvenuto.
{{{user_0.password | "Password"}}}
Puoi trovare la Password anche nel riquadro Dettagli lab.
-
Fai clic su Avanti.
Importante: devi utilizzare le credenziali fornite dal lab. Non utilizzare le credenziali del tuo account Google Cloud.
Nota: utilizzare il tuo account Google Cloud per questo lab potrebbe comportare addebiti aggiuntivi.
-
Fai clic nelle pagine successive:
- Accetta i termini e le condizioni.
- Non inserire opzioni di recupero o l'autenticazione a due fattori, perché si tratta di un account temporaneo.
- Non registrarti per le prove gratuite.
Dopo qualche istante, la console Google Cloud si apre in questa scheda.
Nota: per accedere ai prodotti e ai servizi Google Cloud, fai clic sul menu di navigazione o digita il nome del servizio o del prodotto nel campo Cerca.
Attiva Cloud Shell
Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud. Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.
-
Fai clic su Attiva Cloud Shell
nella parte superiore della console Google Cloud.
-
Fai clic nelle seguenti finestre:
- Continua nella finestra delle informazioni di Cloud Shell.
- Autorizza Cloud Shell a utilizzare le tue credenziali per effettuare chiamate API Google Cloud.
Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo Project_ID, . L'output contiene una riga che dichiara il Project_ID per questa sessione:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento tramite tasto Tab.
- (Facoltativo) Puoi visualizzare il nome dell'account attivo con questo comando:
gcloud auth list
- Fai clic su Autorizza.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Facoltativo) Puoi elencare l'ID progetto con questo comando:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: per la documentazione completa di gcloud
, in Google Cloud, fai riferimento alla guida Panoramica dell'interfaccia a riga di comando gcloud.
Imposta la regione e la zona
- Imposta la regione e la zona del progetto per questo lab:
gcloud config set compute/region {{{project_0.default_region | Region}}}
gcloud config set compute/zone {{{project_0.default_zone | Zone}}}
- Crea una variabile per la regione:
export REGION={{{project_0.default_region | Region}}}
- Crea una variabile per la zona:
export ZONE={{{project_0.default_zone | Zone}}}
Puoi trovare ulteriori informazioni nella documentazione relativa alle regioni e alle zone.
Nota: quando esegui gcloud
sul tuo computer, le impostazioni di configurazione sono rese persistenti in tutte le sessioni. In Cloud Shell, invece, devi impostarle per ogni nuova sessione o riconnessione.
Attività 1: crea un ambiente virtuale
Un ambiente virtuale mantiene in ordine il software del progetto e garantisce che il codice venga sempre eseguito con le versioni specifiche degli strumenti necessari.
Gli ambienti virtuali Python vengono utilizzati per isolare l'installazione dei pacchetti dal sistema.
- Installa l'ambiente
virtualenv
:
sudo apt-get install -y virtualenv
- Crea l'ambiente virtuale:
python3 -m venv venv
- Attiva l'ambiente virtuale:
source venv/bin/activate
Attività 2: crea un gruppo di istanze gestite di backend
Utilizzando un "gruppo di istanze gestite", Google Cloud può creare e gestire automaticamente copie identiche del servizio. Se una copia ha dei problemi, Google Cloud la sostituisce, rendendo il servizio più affidabile.
Crea lo script di avvio
Questo script è come un insieme di istruzioni che ogni nuova VM del gruppo seguirà all'avvio. Il nostro script includerà un piccolo server web scritto in Python che può dirci se un numero è primo (True) o meno (False).
- Per iniziare, crea lo script
backend.sh
nella home directory:
touch ~/backend.sh
- Fai clic su sull'icona Apri editor nella parte superiore di Cloud Shell. Se richiesto, fai clic su Apri in una nuova finestra.

Nota: se non vedi l'icona dell'editor di codice, chiudi il riquadro a sinistra facendo clic sull'icona del menu di navigazione.
Dopo l'avvio dell'editor di codice, Cloud Shell viene spostato in una nuova finestra e l'editor di codice viene aperto. Dopo alcuni secondi, viene visualizzato il workspace.
-
Seleziona il file backend.sh
nel riquadro a sinistra.
-
Ora aggiungi lo script seguente nell'editor a destra:
sudo chmod -R 777 /usr/local/sbin/
sudo cat << EOF > /usr/local/sbin/serveprimes.py
import http.server
def is_prime(a): return a!=1 and all(a % i for i in range(2,int(a**0.5)+1))
class myHandler(http.server.BaseHTTPRequestHandler):
def do_GET(s):
s.send_response(200)
s.send_header("Content-type", "text/plain")
s.end_headers()
s.wfile.write(bytes(str(is_prime(int(s.path[1:]))).encode('utf-8')))
http.server.HTTPServer(("",80),myHandler).serve_forever()
EOF
nohup python3 /usr/local/sbin/serveprimes.py >/dev/null 2>&1 &
- Fai clic su File > Salva.
Crea il modello di istanza
- Fai clic su Apri terminale nella barra degli strumenti di Cloud Shell. Inserisci il comando seguente per creare il template di istanza
primecalc
:
gcloud compute instance-templates create primecalc \
--metadata-from-file startup-script=backend.sh \
--no-address --tags backend --machine-type=e2-medium
Questo è il "progetto base" per le VM di backend. Nota che contiene --no-address
, a indicare che queste VM di backend non avranno accesso a internet pubblico per motivi di sicurezza.
Apri il firewall
Devi creare una regola firewall per consentire al traffico sulla porta 80 (traffico HTTP standard) di raggiungere le VM di backend. Ciò è fondamentale per la comunicazione tra il bilanciatore del carico delle applicazioni interno e i controlli di integrità.
- Apri il firewall sulla porta
80
:
gcloud compute firewall-rules create http --network default --allow=tcp:80 \
--source-ranges {{{project_0.startup_script.selected_cidr | IP}}} --target-tags backend
Fai clic su Controlla i miei progressi qui sotto per verificare se il lab sta procedendo bene.
Crea il template di istanza e apri il firewall sulla porta 80
Crea il gruppo di istanze
- Ora crea il gruppo di istanze gestite denominato
backend
. Inizia con tre istanze:
gcloud compute instance-groups managed create backend \
--size 3 \
--template primecalc \
--zone $ZONE
- Al termine dell'esecuzione, torna alla scheda della console. Vai a Compute Engine > Istanze VM. Ora dovresti vedere che il gruppo di istanze ha creato tre VM di backend.

I backend adesso sono pronti a gestire il traffico.
Fai clic su Controlla i miei progressi qui sotto per verificare se il lab sta procedendo bene.
Crea il gruppo di istanze
Attività 3: configura il bilanciatore del carico interno
Stai creando un unico ingresso VIP privato per il servizio interno. In questo modo, altre applicazioni interne potranno raggiungere in modo affidabile il "calcolatore di numeri primi", senza che sia necessario sapere quale VM di backend specifica è attiva o disponibile.
Ora configuriamo il bilanciatore del carico interno e colleghiamolo al gruppo di istanze che hai appena creato.
Un bilanciatore del carico interno è composto da tre parti principali:
- Regola di forwarding: questo è l'indirizzo IP privato effettivo a cui altri servizi interni invieranno le richieste. In pratica, "inoltra" il traffico al servizio di backend.
- Servizio di backend: definisce in che modo il bilanciatore del carico distribuisce il traffico sulle istanze VM. Include anche il controllo di integrità.
- Controllo di integrità: si tratta di un controllo continuo che monitora l'integrità delle VM di backend. Il bilanciatore del carico invia il traffico solo alle macchine che superano i controlli di integrità, in modo da garantire che il servizio sia sempre disponibile.
Il seguente diagramma mostra come viene bilanciato il carico delle istanze utilizzando più istanze in più gruppi di backend all'interno di zone diverse.

Crea un controllo di integrità
- È necessario un controllo di integrità per garantire che il bilanciatore del carico invii il traffico solo alle istanze integre. Il servizio di backend è un server HTTP, perciò occorre verificare se risponde con "200 OK" su un percorso URL specifico (in questo caso,
/2
per verificare se 2 è un numero primo):
gcloud compute health-checks create http ilb-health --request-path /2
Poiché il servizio HTTP è fornito, occorre verificare se viene compilata una risposta 200 su un percorso URL specifico (in questo caso /2
per verificare se 2 è un numero primo):
Crea un servizio di backend
- Adesso crea il servizio di backend denominato
prime-service
:
gcloud compute backend-services create prime-service \
--load-balancing-scheme internal --region=$REGION \
--protocol tcp --health-checks ilb-health
Questo servizio collegherà il controllo di integrità al gruppo di istanze.
Aggiungi il gruppo di istanze al nuovo servizio di backend
- Collega il gruppo di istanze di backend al servizio di backend "prime-service" per indicare al bilanciatore del carico quali macchine deve gestire:
gcloud compute backend-services add-backend prime-service \
--instance-group backend --instance-group-zone=$ZONE \
--region=$REGION
Crea la regola di forwarding
- Infine, crea la regola di forwarding denominata
prime-lb
con un IP statico :
gcloud compute forwarding-rules create prime-lb \
--load-balancing-scheme internal \
--ports 80 --network default \
--region=$REGION --address {{{project_0.startup_script.selected_forwarding_rule_cidr | IP}}} \
--backend-service prime-service
Il servizio interno per il calcolo dei numeri primi è ora completamente configurato e pronto per essere interrogato tramite il suo indirizzo IP interno.
Fai clic su Controlla i miei progressi qui sotto per verificare se il lab sta procedendo bene.
Configura il bilanciatore del carico interno
Attività 4: testa il bilanciatore del carico
Questo passaggio è fondamentale per verificare che il bilanciatore del carico delle applicazioni interno indirizzi correttamente il traffico ai servizi di backend. Dimostra che altre applicazioni interne ora possono raggiungere in modo affidabile il servizio tramite un unico indirizzo IP stabile, così da garantire il funzionamento continuo.
Per testare il bilanciatore del carico, devi creare una nuova istanza VM nella stessa rete del bilanciatore del carico delle applicazioni interno. È accessibile solo dalla rete cloud privata, non direttamente da Cloud Shell (che si trova al di fuori di questa rete specifica).
- Utilizza
gcloud
in Cloud Shell per creare una semplice istanza di test:
gcloud compute instances create testinstance \
--machine-type=e2-standard-2 --zone $ZONE
- Poi, accedi tramite SSH:
gcloud compute ssh testinstance --zone $ZONE
Se richiesto, digita Y e premi Invio due volte per procedere.
Esegui una query sul bilanciatore del carico
- Dall'istanza di test, utilizza
curl
per chiedere all'indirizzo IP del bilanciatore del carico delle applicazioni interno se alcuni numeri sono primi:
curl {{{project_0.startup_script.selected_forwarding_rule_cidr | IP}}}/2
curl {{{project_0.startup_script.selected_forwarding_rule_cidr | IP}}}/4
curl {{{project_0.startup_script.selected_forwarding_rule_cidr | IP}}}/5
L'output mostrerà True o False accanto alla riga di comando, come indicato di seguito:
user@testinstance:~$ curl {{{project_0.startup_script.selected_forwarding_rule_cidr | IP}}}/2
Trueuser@testinstance:~$ curl {{{project_0.startup_script.selected_forwarding_rule_cidr | IP}}}/4
Falseuser@testinstance:~$ curl {{{project_0.startup_script.selected_forwarding_rule_cidr | IP}}}/5
Trueuser@testinstance:~$ exit
Dovresti vedere che 2 e 5 sono identificati correttamente come numeri primi, mentre 4 no. Ciò conferma che il bilanciatore del carico delle applicazioni interno funziona. Ha ricevuto le richieste e le ha inoltrate correttamente a una delle VM di backend per il calcolo dei numeri primi.
Il servizio ha risposto correttamente: 2 e 5 sono numeri primi, mentre 4 no.
- Esci dall'istanza di test:
exit
- Poi eliminala perché non è più necessaria:
gcloud compute instances delete testinstance --zone=$ZONE
- Digita Y per confermare l'eliminazione.
Attività 5: crea un server web rivolto al pubblico
Ora puoi vedere in che modo un'applicazione rivolta al pubblico (ad esempio un sito web) può sfruttare i servizi interni. Creerai un server web rivolto al pubblico che utilizzerà il servizio interno "calcolatore di numeri primi" (tramite il bilanciatore del carico delle applicazioni interno) per visualizzare una matrice di numeri primi.
- Innanzitutto, crea lo script di avvio per questo "frontend" pubblico nella directory home:
touch ~/frontend.sh
- L'editor di codice dovrebbe ancora essere aperto. In caso contrario, avvia l'editor di codice selezionandolo nella shell:

Dopo alcuni secondi, viene visualizzato il workspace.
- Ora aggiungi questo script nell'editor a destra:
sudo chmod -R 777 /usr/local/sbin/
sudo cat << EOF > /usr/local/sbin/getprimes.py
import urllib.request
from multiprocessing.dummy import Pool as ThreadPool
import http.server
PREFIX="http://{{{project_0.startup_script.selected_forwarding_rule_cidr | IP}}}/" #HTTP Load Balancer
def get_url(number):
return urllib.request.urlopen(PREFIX+str(number)).read().decode('utf-8')
class myHandler(http.server.BaseHTTPRequestHandler):
def do_GET(s):
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
i = int(s.path[1:]) if (len(s.path)>1) else 1
s.wfile.write("<html><body><table>".encode('utf-8'))
pool = ThreadPool(10)
results = pool.map(get_url,range(i,i+100))
for x in range(0,100):
if not (x % 10): s.wfile.write("<tr>".encode('utf-8'))
if results[x]=="True":
s.wfile.write("<td bgcolor='#00ff00'>".encode('utf-8'))
else:
s.wfile.write("<td bgcolor='#ff0000'>".encode('utf-8'))
s.wfile.write(str(x+i).encode('utf-8')+"</td> ".encode('utf-8'))
if not ((x+1) % 10): s.wfile.write("</tr>".encode('utf-8'))
s.wfile.write("</table></body></html>".encode('utf-8'))
http.server.HTTPServer(("",80),myHandler).serve_forever()
EOF
nohup python3 /usr/local/sbin/getprimes.py >/dev/null 2>&1 &
- Fai clic su File > Salva.
Crea l'istanza di frontend
- In Cloud Shell crea un'istanza denominata
frontend
che eseguirà questo server web:
gcloud compute instances create frontend --zone=$ZONE \
--metadata-from-file startup-script=frontend.sh \
--tags frontend --machine-type=e2-standard-2
Apri il firewall per il frontend
- Poiché il server è pubblico, devi aprire il firewall per consentire il traffico sulla porta 80 da qualsiasi punto su internet (0.0.0.0/0):
gcloud compute firewall-rules create http2 --network default --allow=tcp:80 \
--source-ranges 0.0.0.0/0 --target-tags frontend
-
Nel menu di navigazione, fai clic su Compute Engine > Istanze VM. Aggiorna il browser se non vedi l'istanza frontend
.
-
Apri l'IP esterno del frontend nel browser:

Dovresti vedere una matrice simile a questa, in cui tutti i numeri primi fino a 100 sono riportati in verde:

- Prova ad aggiungere un numero al percorso, ad esempio http://your-ip/10000, per visualizzare tutti i numeri primi a partire da quel numero.

Nota: lo script di avvio di esempio non calcola i numeri primi. Inoltre, non include algoritmi di rilevamento o correzione degli errori. L'aggiunta di numeri elevati al percorso causerà timeout del servizio.
Fai clic su Controlla i miei progressi qui sotto per verificare se il lab sta procedendo bene.
Crea un server web rivolto al pubblico
Complimenti!
Hai creato correttamente un servizio interno affidabile utilizzando il bilanciatore del carico delle applicazioni interno di Google Cloud e hai dimostrato come un'applicazione pubblica può sfruttarlo in modo sicuro.
Prossimi passi/Scopri di più
Formazione e certificazione Google Cloud
… per utilizzare al meglio le tecnologie Google Cloud. I nostri corsi ti consentono di sviluppare competenze tecniche e best practice per aiutarti a metterti subito al passo e avanzare nel tuo percorso di apprendimento. Offriamo vari livelli di formazione, dal livello base a quello avanzato, con opzioni di corsi on demand, dal vivo e virtuali, in modo da poter scegliere il più adatto in base ai tuoi impegni. Le certificazioni ti permettono di confermare e dimostrare le tue abilità e competenze relative alle tecnologie Google Cloud.
Ultimo aggiornamento del manuale: 18 luglio 2025
Ultimo test del lab: 18 luglio 2025
Copyright 2025 Google LLC. Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.