Questo documento descrive come eseguire la migrazione delle risorse dell'infrastruttura del bilanciatore del carico delle applicazioni classico all'infrastruttura del bilanciatore del carico delle applicazioni esterno globale.
Prima di iniziare
Assicurati che la configurazione soddisfi i seguenti prerequisiti.
Impostare un progetto predefinito
Console
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
gcloud
gcloud config set project PROJECT_ID
Sostituisci PROJECT_ID
con il progetto che utilizzi per questa guida.
Autorizzazioni
Per seguire questo documento, devi disporre delle autorizzazioni per creare istanze di macchine virtuali (VM) Compute Engine, regole del firewall, indirizzi IP riservati e bucket Cloud Storage in un progetto Google Cloud. Devi essere un proprietario o un editor del progetto oppure disporre dei seguenti ruoli IAM di Compute Engine:
Attività | Ruolo richiesto |
---|---|
Creazione delle istanze | Ruolo Compute Instance Admin (beta) (roles/compute.instanceAdmin )
|
Aggiungere e rimuovere regole firewall | Ruolo Amministratore della sicurezza di Compute (roles/compute.securityAdmin )
|
Crea componenti del bilanciatore del carico | Ruolo Amministratore rete Compute (roles/compute.networkAdmin )
|
(Facoltativo) Crea un progetto | Ruolo Creator di progetti (roles/resourcemanager.projectCreator )
|
Creazione di bucket di Cloud Storage | Ruolo Storage Object Admin (roles/storage.objectAdmin )
|
Per ulteriori informazioni, consulta le seguenti guide:
- Gestire controllo dell'accesso per Cloud Load Balancing utilizzando IAM
- Condizioni IAM per le regole di inoltro
Creare risorse bilanciatore del carico delle applicazioni classico
In questo documento, crei le seguenti risorse di bilanciatore del carico delle applicazioni classico e poi esegui la migrazione all'infrastruttura del bilanciatore del carico delle applicazioni esterno globale.
- Un gruppo di istanze gestite con VM.
- Un bucket Cloud Storage.
- Un bilanciatore del carico delle applicazioni HTTP classico con il gruppo di istanze gestite e il bucket Cloud Storage come backend.
Creare un gruppo di istanze gestite
Questa sezione descrive come creare un gruppo di istanze gestite con VM Linux su cui è in esecuzione Apache. Un gruppo di istanze gestite crea ciascuna delle sue istanze gestite in base ai modelli di istanza specificati.
Crea un modello di istanza
Console
Nella console Google Cloud, vai alla pagina Modelli di istanza.
Fai clic su Crea modello istanza.
In Nome, inserisci
lb-backend-template
.In Regione, seleziona
REGION
.Nella sezione Disco di avvio, assicurati che Immagine del disco di avvio sia impostata su un'immagine Debian, ad esempio Debian GNU/Linux 12 (bookworm). Queste istruzioni utilizzano comandi disponibili solo su Debian, ad esempio
apt-get
.Fai clic su Opzioni avanzate.
Fai clic su Networking e nel campo Tag di rete inserisci
allow-health-check
.Fai clic su Gestione e inserisci il seguente script nel campo Script di avvio.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Fai clic su Crea.
gcloud
Esegui il comando gcloud compute instance-templates create
per creare il modello.
gcloud compute instance-templates create lb-backend-template \ --region=REGION \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Crea il gruppo di istanze gestite
Console
Nella console Google Cloud, vai alla pagina Gruppi di istanze.
Fai clic su Crea gruppo di istanze.
Seleziona Nuovo gruppo di istanze gestite (stateless).
In Nome, inserisci
lb-backend-example
.Per Modello di istanza, seleziona il modello di istanza
lb-backend-template
.In Località, seleziona Zona singola.
In Regione, seleziona
REGION
.In Zona, seleziona
ZONE
.In Modalità di scalabilità automatica, seleziona On: aggiungi e rimuovi istanze al gruppo.
Imposta Numero minimo di istanze e Numero massimo di istanze su
2
.Nella sezione Mappatura delle porte, fai clic su Aggiungi porta.
Come nome della porta, inserisci
http
. Per il numero di porta, inserisci80
.Fai clic su Crea.
gcloud
Esegui il gcloud compute instance-groups managed create
comando per creare il
gruppo di istanze gestite in base al modello.
gcloud compute instance-groups managed create lb-backend-example \ --template=lb-backend-template \ --size=2 --zone=ZONE
Esegui il comando seguente per aggiungere una porta denominata al gruppo di istanze:
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone ZONE
Configurare una regola firewall
In questa sezione crei la regola firewall fw-allow-health-check
e utilizzi il tag di destinazione allow-health-check
per identificare le VM. Si tratta di una regola in entrata che consente il traffico proveniente dai sistemi di controllo di integrità di Google Cloud (130.211.0.0/22
e 35.191.0.0/16
).
Console
Nella console Google Cloud, vai alla pagina Criteri firewall.
Fai clic su Crea regola firewall.
In Nome, inserisci
fw-allow-health-check
.In Rete, seleziona predefinita.
Per Destinazioni, seleziona Tag di destinazione specificati.
Nel campo Tag di destinazione, inserisci
allow-health-check
.Imposta Filtro di origine su Intervalli IPv4.
Imposta Intervalli IPv4 di origine su
130.211.0.0/22
e35.191.0.0/16
.Nella sezione Protocolli e porte, seleziona Protocolli e porte specificati.
Seleziona la casella di controllo TCP, quindi digita
80
per il numero di porta.Fai clic su Crea.
gcloud
Esegui il comando gcloud compute firewall-rules create
per creare la regola firewall.
gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
Crea un bucket Cloud Storage
In questa sezione, crei un bucket Cloud Storage a cui deve accedere il bilanciatore del carico. Per i deployment in produzione, ti consigliamo di scegliere un bucket multiregionale, che consente di riprodurre automaticamente gli oggetti in più regioni Google Cloud. In questo modo puoi migliorare la disponibilità dei tuoi contenuti e la tolleranza agli errori nell'intera applicazione.
Console
Nella console Google Cloud, vai alla pagina Bucket Cloud Storage.
Fai clic su Crea.
Nella casella Assegna un nome al bucket, inserisci
storage-backend-bucket
e fai clic su Continua.Fai clic su Scegli dove archiviare i tuoi dati.
Imposta Tipo di località su Regione e specifica
REGION
.Fai clic su Crea.
(Facoltativo) Se viene visualizzata la finestra di dialogo L'accesso pubblico verrà vietato, deseleziona la casella di controllo Applica la prevenzione dell'accesso pubblico in questo bucket e fai clic su Conferma.
gcloud
Esegui il comando gcloud storage buckets create
per creare il bucket:
gcloud storage buckets create gs://storage-backend-bucket \ --default-storage-class=standard \ --location=REGION --uniform-bucket-level-access
Trasferisci i contenuti nei bucket Cloud Storage
Per testare il bucket dopo aver creato il bilanciatore del carico, copia il seguente file immagine da un bucket Cloud Storage pubblico al tuo bucket Cloud Storage.
gcloud
Fai clic su
Attiva Cloud Shell.Esegui i seguenti comandi in Cloud Shell:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://storage-backend-bucket/never-fetch/
Nella console Google Cloud, fai clic su Aggiorna nella pagina dei dettagli del bucket per verificare che il file sia stato copiato correttamente.
Rendi pubblicamente leggibile il bucket Cloud Storage
Quando rendi un bucket Cloud Storage pubblicamente leggibile, chiunque su internet può elencare e visualizzare gli oggetti e i relativi metadati (esclusi gli ACL). Non includere informazioni sensibili nei bucket pubblici.
Per ridurre la probabilità di esposizione accidentale di informazioni sensibili, non memorizzare oggetti pubblici e dati sensibili nello stesso bucket.
Console
Per concedere a tutti gli utenti l'accesso per visualizzare gli oggetti nei bucket:
Nella console Google Cloud, vai alla pagina Bucket Cloud Storage.
Fai clic sul nome di
storage-backend-bucket
e poi sulla scheda Autorizzazioni.Fai clic su Concedi accesso.
Nella casella Nuove entità, inserisci
allUsers
.Nella casella Seleziona un ruolo, seleziona Cloud Storage > Visualizzatore oggetti Storage.
Fai clic su Salva.
Fai clic su Consenti accesso pubblico.
gcloud
Esegui il comando gcloud storage buckets add-iam-policy-binding
per concedere a tutti gli utenti l'accesso in visualizzazione agli oggetti nei bucket:
gcloud storage buckets add-iam-policy-binding gs://storage-backend-bucket \ --member=allUsers \ --role=roles/storage.objectViewer
Prenotare un indirizzo IP esterno
Ora che le istanze sono operative, configura un indirizzo IP esterno statico e globale, che verrà utilizzato dai clienti per raggiungere il bilanciatore del carico.
Console
Nella console Google Cloud, vai alla pagina Indirizzi IP esterni.
Per prenotare un indirizzo IPv4, fai clic su Prenota indirizzo IP esterno statico.
In Nome, inserisci
lb-ipv4-1
.Imposta Network Service Tier su Premium.
Imposta Versione IP su IPv4.
Imposta Tipo su Globale.
Fai clic su Prenota.
gcloud
Per prenotare un indirizzo IP esterno, esegui il seguente comando:
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Per prendere nota dell'indirizzo IPv4 riservato, esegui il seguente comando:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Configurare il bilanciatore del carico delle applicazioni classico
In questa sezione utilizzerai HTTP (frontend) tra il client e il bilanciatore del carico.
Console
Avvia la configurazione
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic su Crea bilanciatore del carico.
- In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
- In Pubblico o interno, seleziona Pubblico (esterno) e fai clic su Avanti.
- In Deployment globale o in una regione singola, seleziona Ideale per carichi di lavoro globali e fai clic su Avanti.
- In Generazione del bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni classico e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- Nel campo Nome bilanciatore del carico, inserisci
web-map-http
. - Fai clic su Configurazione frontend, configura i seguenti campi e poi fai clic su Fine.
- Protocollo: HTTP.
- Versione IP: IPv4
- Indirizzo IP:
lb-ipv4-1
- Porta:
443
- Fai clic su Configurazione backend.
- In Servizi e bucket di backend, fai clic su Crea un servizio di backend, quindi segui questi passaggi:
- Configura i seguenti campi:
- Nome:
web-backend-service
- Protocollo: HTTP
- Porta denominata: http
- Nome:
- Nella sezione Backend > Nuovo backend, configura i seguenti campi e poi fai clic su Fine.
- Gruppo di istanze: lb-backend-example
- Numeri di porta:
80
- In Controllo di integrità, fai clic su Crea un controllo di integrità, specifica i seguenti campi e poi fai clic su Salva.
- Nome:
http-basic-check
- Protocollo: HTTP
- Nome:
- Nella sezione Logging, seleziona la casella di controllo Attiva il logging.
- Fai clic su Crea.
- Configura i seguenti campi:
- Fai clic su OK.
- In Servizi e bucket di backend, fai clic su Crea un bucket di backend, configura i seguenti campi e poi fai clic su Crea.
- Nome del bucket di backend:
cats
- Bucket Cloud Storage:
storage-backend-bucket
- Nome del bucket di backend:
- Fai clic su OK.
- Fai clic su Regole host e percorso.
- Per
cats
, inserisci*
nel campo Host 2 e/never-fetch/*
nel campo Percorso 2. - Fai clic su Esamina e finalizza.
- Rivedi le impostazioni di configurazione del bilanciatore del carico.
- Fai clic su Crea.
gcloud
Creare un controllo di integrità.
gcloud compute health-checks create http http-basic-check \ --port 80
Crea un servizio di backend.
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --enable-logging \ --logging-sample-rate=1.0 \ --enable-cdn \ --global
Aggiungi il tuo gruppo di istanze come backend del servizio di backend.
gcloud compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE \ --global
Aggiungi un bucket di backend.
gcloud compute backend-buckets create cats \ --gcs-bucket-name=storage-backend-bucket
Crea una mappa URL per instradare le richieste in entrata al servizio di backend e al bucket di backend.
gcloud compute url-maps create web-map-http \ --default-service web-backend-service
gcloud compute url-maps add-path-matcher web-map-http \ --path-matcher-name=cats-path-matcher \ --default-backend-bucket=cats \ --new-hosts="*" \ --backend-bucket-path-rules="/never-fetch/*=cats"
Crea un proxy HTTP di destinazione per instradare le richieste alle mappe URL.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http
Crea una regola di forwarding globale per instradare le richieste in entrata al proxy.
gcloud compute forwarding-rules create web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Verifica il traffico inviato alle istanze
Ora che il servizio di bilanciamento del carico è in esecuzione, puoi inviare il traffico alla regola di forwarding e osservare la distribuzione del traffico su diverse istanze.
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Fai clic su
web-map-http
.Nella sezione Frontend, prendi nota dell'IP:Port del bilanciatore del carico.
Per testare l'istanza di backend, inserisci
http://IP_ADDRESS
nella barra degli indirizzi del browser web.Il browser mostra una pagina con contenuti che mostrano il nome dell'istanza che ha pubblicato la pagina e la relativa zona (ad esempio,
Page served from: lb-backend-example-xxxx
).Per testare il bucket di backend, inserisci
http://IP_ADDRESS/never-fetch/three-cats.jpg
nella barra degli indirizzi del browser web.Il browser esegue il rendering dell'immagine.
Esegui la migrazione delle risorse del bilanciatore del carico delle applicazioni classico
In questa sezione esegui la migrazione del servizio di backend, del bucket di backend e della regola di forwarding all'infrastruttura di Application Load Balancer esterno globale.
Esegui la migrazione del servizio di backend
Prepara il servizio di backend per la migrazione.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=PREPARE \ --global
Attendi un po' di tempo (circa sei minuti).
Invia parte del traffico, ad esempio il 10%, al servizio di backend.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=10 \ --global
Attendi un po' di tempo (circa sei minuti).
Una volta pronta, la risorsa invia il 10% delle richieste all'infrastruttura del bilanciatore del carico delle applicazioni esterno globale e il 90% delle richieste all'infrastruttura del bilanciatore del carico delle applicazioni classico.
Accedi al servizio di backend.
Inserisci
http://IP_ADDRESS
nella barra degli indirizzi del browser web. Se viene visualizzato il messaggioPage served from: lb-backend-example-xxxx
, esegui il seguente comando per aumentare la percentuale.gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=50 \ --global
Ripeti la procedura finché non raggiungi il 100%.
(Facoltativo) Controlla i log del servizio di backend.
Completa il test e invia tutto il traffico al servizio di backend.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_ALL_TRAFFIC \ --global
(Facoltativo) Controlla i log del servizio di backend.
Modifica lo schema del servizio di backend in
EXTERNAL_MANAGED
.gcloud beta compute backend-services update web-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Attendi un po' di tempo (circa sei minuti) per la migrazione completa del servizio di backend all'infrastruttura del bilanciatore del carico delle applicazioni esterno globale.
(Facoltativo) Controlla i log del servizio di backend. Vedrai che lo schema di bilanciamento del carico è
EXTERNAL_MANAGED
.
Esegui la migrazione del bucket di backend
Prepara il bucket di backend per la migrazione.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=PREPARE \ --global
Attendi un po' di tempo (circa sei minuti).
Invia parte del traffico, ad esempio il 10%, al bucket di backend.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=10 \ --global
Attendi un po' di tempo (circa sei minuti).
Una volta pronta, la risorsa invia il 10% delle richieste all'infrastruttura del bilanciatore del carico delle applicazioni esterno globale e il 90% delle richieste all'infrastruttura del bilanciatore del carico delle applicazioni classico.
Accedi al bucket di backend.
Inserisci
http://IP_ADDRESS/never-fetch/three-cats.jpg
nella barra degli indirizzi del browser web. Se vedi l'immagine dei gatti, esegui il seguente comando per aumentare la percentuale. Ripeti la procedura fino a raggiungere il 100%.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=50 \ --global
(Facoltativo) Controlla i log del bucket di backend.
Completa il test e invia tutto il traffico al bucket di backend.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_ALL_TRAFFIC \ --global
(Facoltativo) Controlla i log del bucket di backend.
Esegui la migrazione della regola di forwarding
Modifica lo schema della regola di forwarding in
EXTERNAL_MANAGED
.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Attendi un po' di tempo (circa sei minuti) per la migrazione completa della regola di forwarding all'infrastruttura del bilanciatore del carico delle applicazioni esterno globale.
(Facoltativo) Controlla i log della regola di forwarding. Vedrai che lo schema di bilanciamento del carico è
EXTERNAL_MANAGED
.