arrow_back

Configurazione di bilanciatori del carico di rete e HTTP [ACE]

Accedi Partecipa
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Configurazione di bilanciatori del carico di rete e HTTP [ACE]

Lab 40 minuti universal_currency_alt 5 crediti show_chart Introduttivi
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Panoramica

In questo lab pratico scoprirai quali sono le differenze tra un bilanciatore del carico di rete e un bilanciatore del carico HTTP e come configurarli per le tue applicazioni in esecuzione su macchine virtuali Google Compute Engine.

Ci sono diversi modi per eseguire il bilanciamento del carico in Google Cloud Platform. Questo lab illustra il processo per configurare i seguenti bilanciatori del carico:

Consigliamo agli studenti di digitare direttamente i comandi, per rafforzare la conoscenza dei concetti chiave. Molti lab includono blocchi di codice che contengono i comandi da inserire. Durante il lab puoi semplicemente copiare e incollare i comandi dai blocchi di codice nelle destinazioni appropriate.

In questo lab:

  • Proverai a configurare un bilanciatore del carico di rete.

  • Proverai a configurare un bilanciatore del carico HTTP(s).

  • Acquisirai esperienza pratica imparando le differenze tra i bilanciatori del carico di rete e i bilanciatori del carico HTTP.

Prerequisiti

La familiarità con gli editor di testo standard di Linux, ad esempio vim, emacs o nano, è un vantaggio.

Configurazione

Per ciascun lab, riceverai un nuovo progetto Google Cloud e un insieme di risorse per un periodo di tempo limitato senza alcun costo aggiuntivo.

  1. Accedi a Qwiklabs utilizzando una finestra di navigazione in incognito.

  2. Tieni presente la durata dell'accesso al lab (ad esempio, 1:15:00) e assicurati di finire entro quell'intervallo di tempo.
    Non è disponibile una funzionalità di pausa. Se necessario, puoi riavviare il lab ma dovrai ricominciare dall'inizio.

  3. Quando è tutto pronto, fai clic su Inizia lab.

  4. Annota le tue credenziali del lab (Nome utente e Password). Le userai per accedere a Google Cloud Console.

  5. Fai clic su Apri console Google.

  6. Fai clic su Utilizza un altro account e copia/incolla le credenziali per questo lab nei prompt.
    Se utilizzi altre credenziali, compariranno errori oppure ti verranno addebitati dei costi.

  7. Accetta i termini e salta la pagina di ripristino delle risorse.

Attiva Google Cloud Shell

Google 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. Google Cloud Shell consente di accedere da riga di comando alle risorse GCP.

  1. In GCP console, nella barra degli strumenti in alto a destra, fai clic sul pulsante Apri Cloud Shell.

    Icona di Cloud Shell

  2. Fai clic su Continua. cloudshell_continue.png

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo PROJECT_ID. Ad esempio:

Terminale Cloud Shell

gcloud è lo strumento a riga di comando di Google Cloud Platform. È preinstallato su Cloud Shell e supporta il completamento tramite tasto Tab.

Puoi visualizzare il nome dell'account attivo con questo comando:

gcloud auth list

Output:

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)

Output di esempio:

Credentialed accounts:
 - google1623327_student@qwiklabs.net

Puoi elencare l'ID progetto con questo comando:

gcloud config list project

Output:

[core]
project = <project_ID>

Output di esempio:

[core]
project = qwiklabs-gcp-44776a13dea667a6
La documentazione completa di gcloud è disponibile su Panoramica di gcloud di Google Cloud .

Imposta l'area geografica e la zona predefinite per tutte le risorse

In Cloud Shell imposta la zona predefinita:

gcloud config set compute/zone us-central1-a

Imposta l'area geografica predefinita:

gcloud config set compute/region us-central1

Ulteriori informazioni sulla scelta delle zone e delle aree geografiche sono disponibili nella documentazione sulle aree geografiche e le zone.

Crea più istanze del server web

Per simulare la pubblicazione da un cluster di macchine, crea un semplice cluster di server web Nginx per fornire contenuti statici utilizzando modelli di istanza e gruppi di istanze gestite. I modelli di istanza definiscono l'aspetto di ogni macchina virtuale nel cluster (disco, CPU, memoria e così via). I gruppi di istanze gestite creano diverse istanze di macchine virtuali utilizzando il modello di istanza.

Per creare i cluster di server web Nginx, crea quanto segue:

  • Uno script di avvio che ogni istanza di macchina virtuale utilizzerà per configurare il server Nginx all'avvio
  • Un modello di istanza da utilizzare per lo script di avvio
  • Un pool di destinazione
  • Un gruppo di istanze gestite che utilizza il modello di istanza

Sempre in Cloud Shell, crea uno script di avvio che verrà utilizzato da ogni istanza di macchina virtuale. Questo script configura il server Nginx all'avvio:

cat << EOF > startup.sh
#! /bin/bash
apt-get update
apt-get install -y nginx
service nginx start
sed -i -- 's/nginx/Google Cloud Platform - '"\$HOSTNAME"'/' /var/www/html/index.nginx-debian.html
EOF

Crea un modello di istanza, che usa lo script di avvio:

gcloud compute instance-templates create nginx-template \
         --metadata-from-file startup-script=startup.sh

(Output)

Created [...].
NAME           MACHINE_TYPE  PREEMPTIBLE CREATION_TIMESTAMP
nginx-template n1-standard-1             2015-11-09T08:44:59.007-08:00

Crea un pool di destinazione. Un pool di destinazione consente un unico punto di accesso per tutte le istanze in un gruppo ed è necessario per il bilanciamento del carico nei prossimi passaggi.

gcloud compute target-pools create nginx-pool

(Output)

Created [...].
NAME       REGION       SESSION_AFFINITY BACKUP HEALTH_CHECKS
nginx-pool us-central1

Crea un gruppo di istanze gestite utilizzando il modello di istanza:

gcloud compute instance-groups managed create nginx-group \
         --base-instance-name nginx \
         --size 2 \
         --template nginx-template \
         --target-pool nginx-pool

(Output)

Created [...].
NAME         LOCATION       SCOPE  BASE_INSTANCE_NAME  SIZE  TARGET_SIZE  INSTANCE_TEMPLATE  AUTOSCALED
nginx-group  us-central1-a  zone   nginx               0     2            nginx-template     no

In questo modo vengono create due istanze di macchina virtuale con i nomi preceduti dal prefisso nginx-. L'operazione potrebbe richiedere un paio di minuti.

Elenca le istanze di Compute Engine. Dovresti visualizzare tutte le istanze create:

gcloud compute instances list

(Output)

NAME       ZONE           MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP    STATUS
nginx-7wvi us-central1-a n1-standard-1             10.240.X.X  X.X.X.X           RUNNING
nginx-9mwd us-central1-a n1-standard-1             10.240.X.X  X.X.X.X           RUNNING

Ora configura un firewall in modo da poterti connettere alle macchine sulla porta 80 con gli indirizzi EXTERNAL_IP:

gcloud compute firewall-rules create www-firewall --allow tcp:80

Dovresti riuscire a connetterti alle singole istanze mediante i relativi indirizzi IP esterni con http://EXTERNAL_IP/ mostrato come risultato dell'esecuzione del comando precedente.

Controlla i tuoi progressi nel lab. Fai clic su Controlla i miei progressi qui sotto per verificare di avere creato un gruppo di server web.

Crea un gruppo di server web

Crea un bilanciatore del carico di rete

Il bilanciamento del carico di rete consente di bilanciare il carico dei sistemi in base ai dati relativi al protocollo IP in entrata, come indirizzo, porta o tipo di protocollo. Offre inoltre alcune opzioni che non sono disponibili con il bilanciamento del carico HTTP(S). Ad esempio, puoi bilanciare il carico di altri protocolli basati su TCP/UDP, come il traffico SMTP. E se l'applicazione considera le caratteristiche correlate alla connessione TCP, il bilanciamento del carico di rete consente all'app di ispezionare i pacchetti, diversamente dal bilanciamento del carico HTTP(S) che non lo consente.

Crea un bilanciatore del carico di rete L4 destinato al tuo gruppo di istanze:

gcloud compute forwarding-rules create nginx-lb \
         --region us-central1 \
         --ports=80 \
         --target-pool nginx-pool

(Output)

Created [https://www.googleapis.com/compute/v1/projects/...].

Elenca tutte le regole di forwarding di Google Compute Engine nel progetto.

gcloud compute forwarding-rules list

(Output)

NAME     REGION       IP_ADDRESS     IP_PROTOCOL TARGET
nginx-lb us-central1 X.X.X.X        TCP         us-central1/targetPools/nginx-pool

Puoi quindi visitare il bilanciatore del carico dal browser http://IP_ADDRESS/, dove IP_ADDRESS è l'indirizzo mostrato come risultato dell'esecuzione del comando precedente.

Controlla i tuoi progressi nel lab. Fai clic su Controlla i miei progressi qui sotto per verificare di avere creato un bilanciatore del carico di rete L4 che punta ai server web.

Crea un bilanciatore del carico di rete L4 che punta ai server web

Crea un bilanciatore del carico HTTP(s)

Il bilanciamento del carico HTTP(S) fornisce il bilanciamento del carico globale per le richieste HTTP(S) destinate alle tue istanze. Puoi configurare le regole URL che instradano alcuni URL a un set di istanze e altri URL ad altre istanze. Le richieste vengono sempre instradate al gruppo di istanze più vicino all'utente, purché tale gruppo abbia una capacità sufficiente e sia appropriato per la richiesta. Se il gruppo più vicino non dispone di capacità sufficiente, la richiesta viene inviata al gruppo più vicino che ne dispone.

Prima di tutto, crea un controllo di integrità. I controlli di integrità verificano che l'istanza risponda al traffico HTTP o HTTPS:

gcloud compute http-health-checks create http-basic-check

(Output)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME             HOST PORT REQUEST_PATH
http-basic-check      80   /

Definisci un servizio HTTP e mappa un nome di porta alla porta pertinente per il gruppo di istanze. A questo punto, il servizio di bilanciamento del carico può inoltrare il traffico alla porta denominata:

gcloud compute instance-groups managed \
       set-named-ports nginx-group \
       --named-ports http:80

(Output)

Updated [https://www.googleapis.com/compute/v1/projects/...].

Crea un servizio di backend:

gcloud compute backend-services create nginx-backend \
      --protocol HTTP --http-health-checks http-basic-check --global

(Output)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME          BACKENDS PROTOCOL
nginx-backend          HTTP

Aggiungi il gruppo di istanze al servizio di backend:

gcloud compute backend-services add-backend nginx-backend \
    --instance-group nginx-group \
    --instance-group-zone us-central1-a \
    --global

(Output)

Updated [https://www.googleapis.com/compute/v1/projects/...].

Crea una mappa URL predefinita che indirizza tutte le richieste in arrivo a tutte le tue istanze:

gcloud compute url-maps create web-map \
    --default-service nginx-backend

(Output)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME    DEFAULT_SERVICE
Web-map nginx-backend

Crea un proxy HTTP target per indirizzare le richieste alla tua mappa URL:

gcloud compute target-http-proxies create http-lb-proxy \
    --url-map web-map

(Output)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME          URL_MAP
http-lb-proxy web-map

Crea una regola di forwarding globale per gestire e instradare le richieste in entrata. Una regola di forwarding invia il traffico a un determinato proxy HTTP o HTTPS di destinazione a seconda dell'indirizzo IP, del protocollo IP e della porta specificati. La regola di forwarding globale non supporta più porte.

gcloud compute forwarding-rules create http-content-rule \
        --global \
        --target-http-proxy http-lb-proxy \
        --ports 80

(Output)

Created [https://www.googleapis.com/compute/v1/projects/...].

Dopo la creazione della regola di forwarding globale, possono trascorrere alcuni minuti prima che la configurazione venga propagata.

gcloud compute forwarding-rules list

(Output)

NAME              REGION IP_ADDRESS    IP_PROTOCOL TARGET
http-content-rule        X.X.X.X       TCP         http-lb-proxy
nginx-lb   us-central1  X.X.X.X       TCP         us-central1/....

Prendi nota di http-content-rule IP_ADDRESS per la regola di forwarding.

Dal browser dovresti riuscire a connetterti a http://IP_ADDRESS/. Possono essere necessari da tre a cinque minuti. Se la connessione non riesce, attendi un minuto e poi ricarica il browser.

Controlla i tuoi progressi nel lab. Fai clic su Controlla i miei progressi qui sotto per verificare di avere creato un bilanciatore del carico HTTP(S) L7.

Crea un bilanciatore del carico HTTP(S) L7

Verifica le tue conoscenze

Rispondi al quiz per verificare le tue conoscenze di Google Cloud Platform. Se necessario, seleziona più risposte corrette.

Termina il lab

Una volta completato il lab, fai clic su Termina lab. Google Cloud Skills Boost rimuove le risorse che hai utilizzato ed esegue la pulizia dell'account.

Avrai la possibilità di inserire una valutazione in merito alla tua esperienza. Seleziona il numero di stelle applicabile, inserisci un commento, quindi fai clic su Invia.

Il numero di stelle corrisponde alle seguenti valutazioni:

  • 1 stella = molto insoddisfatto
  • 2 stelle = insoddisfatto
  • 3 stelle = esperienza neutra
  • 4 stelle = soddisfatto
  • 5 stelle = molto soddisfatto

Se non vuoi lasciare un feedback, chiudi la finestra di dialogo.

Per feedback, suggerimenti o correzioni, utilizza la scheda Assistenza.

Copyright 2020 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.