Esegui la migrazione delle risorse dal bilanciatore del carico delle applicazioni esterno classico a quello globale

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. 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:

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

  1. Nella console Google Cloud, vai alla pagina Modelli di istanza.

    Vai a Modelli di istanza

  2. Fai clic su Crea modello istanza.

  3. In Nome, inserisci lb-backend-template.

  4. In Regione, seleziona REGION.

  5. 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.

  6. Fai clic su Opzioni avanzate.

  7. Fai clic su Networking e nel campo Tag di rete inserisci allow-health-check.

  8. 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
    
  9. 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

  1. Nella console Google Cloud, vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Fai clic su Crea gruppo di istanze.

  3. Seleziona Nuovo gruppo di istanze gestite (stateless).

  4. In Nome, inserisci lb-backend-example.

  5. Per Modello di istanza, seleziona il modello di istanza lb-backend-template.

  6. In Località, seleziona Zona singola.

  7. In Regione, seleziona REGION.

  8. In Zona, seleziona ZONE.

  9. 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.

  10. Nella sezione Mappatura delle porte, fai clic su Aggiungi porta.

  11. Come nome della porta, inserisci http. Per il numero di porta, inserisci 80.

  12. 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

  1. Nella console Google Cloud, vai alla pagina Criteri firewall.

    Vai a Policy del firewall

  2. Fai clic su Crea regola firewall.

  3. In Nome, inserisci fw-allow-health-check.

  4. In Rete, seleziona predefinita.

  5. Per Destinazioni, seleziona Tag di destinazione specificati.

  6. Nel campo Tag di destinazione, inserisci allow-health-check.

  7. Imposta Filtro di origine su Intervalli IPv4.

  8. Imposta Intervalli IPv4 di origine su 130.211.0.0/22 e 35.191.0.0/16.

  9. Nella sezione Protocolli e porte, seleziona Protocolli e porte specificati.

  10. Seleziona la casella di controllo TCP, quindi digita 80 per il numero di porta.

  11. 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 eseguire automaticamente la replica degli oggetti in più regioni Google Cloud. In questo modo, puoi migliorare la disponibilità dei tuoi contenuti e la tolleranza agli errori nell'applicazione.

Console

  1. Nella console Google Cloud, vai alla pagina Bucket Cloud Storage.

    Vai a Bucket Cloud Storage

  2. Fai clic su Crea.

  3. Nella casella Assegna un nome al bucket, inserisci storage-backend-bucket e fai clic su Continua.

  4. Fai clic su Scegli dove archiviare i tuoi dati.

  5. Imposta Tipo di località su Regione e specifica REGION.

  6. Fai clic su Crea.

  7. (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

  1. Fai clic su Attiva Cloud Shell.

  2. 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:

  1. Nella console Google Cloud, vai alla pagina Bucket Cloud Storage.

    Vai a Bucket Cloud Storage

  2. Fai clic sul nome di storage-backend-bucket e poi sulla scheda Autorizzazioni.

  3. Fai clic su Concedi accesso.

  4. Nella casella Nuove entità, inserisci allUsers.

  5. Nella casella Seleziona un ruolo, seleziona Cloud Storage > Visualizzatore oggetti Storage.

  6. Fai clic su Salva.

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

  1. Nella console Google Cloud, vai alla pagina Indirizzi IP esterni.

    Vai a Indirizzi IP esterni

  2. Per prenotare un indirizzo IPv4, fai clic su Prenota indirizzo IP esterno statico.

  3. In Nome, inserisci lb-ipv4-1.

  4. Imposta Network Service Tier su Premium.

  5. Imposta Versione IP su IPv4.

  6. Imposta Tipo su Globale.

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

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Fai clic su Crea bilanciatore del carico.
  3. In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
  4. In Pubblico o interno, seleziona Pubblico (esterno) e fai clic su Avanti.
  5. In Deployment globale o in una regione singola, seleziona Ideale per carichi di lavoro globali e fai clic su Avanti.
  6. In Generazione del bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni classico e fai clic su Avanti.
  7. Fai clic su Configura.

Configurazione di base

  1. Nel campo Nome bilanciatore del carico, inserisci web-map-http.
  2. 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
  3. Fai clic su Configurazione backend.
  4. In Servizi e bucket di backend, fai clic su Crea un servizio di backend e poi segui questi passaggi:
    1. Configura i seguenti campi:
      • Nome: web-backend-service
      • Protocollo: HTTP
      • Porta denominata: http
    2. 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
    3. 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
    4. Nella sezione Logging, seleziona la casella di controllo Attiva il logging.
    5. Fai clic su Crea.
  5. Fai clic su OK.
  6. 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
  7. Fai clic su OK.
  8. Fai clic su Regole host e percorso.
  9. Per cats, inserisci * nel campo Host 2 e /never-fetch/* nel campo Percorso 2.
  10. Fai clic su Esamina e finalizza.
  11. Rivedi le impostazioni di configurazione del bilanciatore del carico.
  12. Fai clic su Crea.

gcloud

  1. Creare un controllo di integrità.

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  2. 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
    
  3. 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
    
  4. Aggiungi un bucket di backend.

    gcloud compute backend-buckets create cats \
        --gcs-bucket-name=storage-backend-bucket
    
  5. 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"
    
  6. 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
    
  7. 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

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Fai clic su web-map-http.

  3. Nella sezione Frontend, prendi nota dell'IP:Port del bilanciatore del carico.

  4. 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).

  5. 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 del bilanciatore del carico delle applicazioni esterno globale.

Esegui la migrazione del servizio di backend

  1. 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).

  2. 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.

  3. Accedi al servizio di backend.

    Inserisci http://IP_ADDRESS nella barra degli indirizzi del browser web. Se viene visualizzato il messaggio Page 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%.

  4. (Facoltativo) Controlla i log del servizio di backend.

  5. 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
    
  6. (Facoltativo) Controlla i log del servizio di backend.

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

  8. (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

  1. 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).

  2. 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.

  3. 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
    
  4. (Facoltativo) Controlla i log del bucket di backend.

  5. 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
    
  6. (Facoltativo) Controlla i log del bucket di backend.

Esegui la migrazione della regola di forwarding

  1. 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.

  2. (Facoltativo) Controlla i log della regola di forwarding. Vedrai che lo schema di bilanciamento del carico è EXTERNAL_MANAGED.

Passaggi successivi