Configura il backend di un gruppo di istanze gestite

Cloud CDN utilizza i bilanciatori del carico HTTP(S) esterni globali di Google Cloud per fornire routing, controllo di integrità e supporto per IP anycast. I bilanciatori del carico HTTP(S) esterni globali possono avere più istanza di backend backend e puoi scegliere per quali backend (o origini) abilitare Cloud CDN.

Questa guida alla configurazione mostra come creare un bilanciatore del carico HTTP(S) esterno con un backend di gruppo di istanze gestite da Compute Engine con Cloud CDN abilitato.

Se questo esempio non corrisponde al tuo caso d'uso, consulta una delle seguenti pagine:

Per concetti generali, consulta la panoramica del bilanciatore del carico HTTP(S) esterno.

Se sei un utente esistente del bilanciatore del carico HTTP(S) esterno globale (versione classica), assicurati di controllare la pianificazione della migrazione al bilanciatore del carico HTTP(S) esterno globale quando pianifichi un nuovo deployment con il bilanciatore del carico HTTP(S) esterno globale.

Topologie del bilanciatore del carico

Per un bilanciatore del carico HTTPS, crei la configurazione mostrata nel diagramma seguente.

bilanciatore del carico HTTPS con backend di gruppo di istanze gestite.
Figura 1. bilanciatore del carico HTTPS con backend di gruppo di istanze gestite (fai clic per ingrandire)

Per un bilanciatore del carico HTTP, crei la configurazione mostrata nel diagramma seguente.

bilanciatore del carico HTTP con backend di gruppo di istanze gestite (MIG).
Figura 2. Bilanciatore del carico HTTP con backend di un gruppo di istanze gestite (MIG) (fai clic per ingrandire)

La sequenza degli eventi nei diagrammi è la seguente:

  1. Un client invia una richiesta di contenuti all'indirizzo IPv4 esterno definito nella regola di forwarding.
  2. Il bilanciatore del carico controlla se la richiesta può essere fornita dalla cache. In tal caso, il bilanciatore del carico pubblica i contenuti richiesti dalla cache. In caso contrario, l'elaborazione continua.

  3. Per un bilanciatore del carico HTTPS, la regola di forwarding indirizza la richiesta al proxy HTTPS di destinazione.

    Per un bilanciatore del carico HTTP, la regola di forwarding indirizza la richiesta al proxy HTTP di destinazione.

  4. Il proxy di destinazione utilizza la regola nella mappa URL per determinare che il servizio di backend singolo riceva tutte le richieste.

  5. Il bilanciatore del carico determina che il servizio di backend ha un solo gruppo di istanze e indirizza la richiesta a un'istanza di una macchina virtuale (VM) in quel gruppo.

  6. La VM gestisce i contenuti richiesti dall'utente.

Bilanciatore del carico HTTP(S) esterno con backend di gruppo di istanze gestite e Cloud CDN abilitato.
Bilanciatore del carico HTTP(S) esterno con backend di gruppo di istanze gestite (MIG) e Cloud CDN abilitati (fai clic per ingrandire)

Prima di iniziare

Completa i seguenti passaggi prima di creare il bilanciatore del carico.

Configura una risorsa del certificato SSL

Per un bilanciatore del carico HTTPS, crea una risorsa del certificato SSL come descritto di seguito:

Ti consigliamo di utilizzare un certificato gestito da Google.

Questo esempio presuppone che tu abbia già una risorsa del certificato SSL denominata www-ssl-cert.

Configurare le autorizzazioni

Per completare i passaggi descritti in questa guida, devi disporre dell'autorizzazione per creare istanze di Compute Engine, regole firewall e indirizzi IP riservati in un progetto. Devi avere un ruolo di proprietario o editor del progetto o avere i seguenti ruoli IAM di Compute Engine.

Attività Ruolo richiesto
Creare istanze Amministratore istanze
Aggiungi e rimuovi le regole firewall Amministratore sicurezza
Crea componenti del bilanciatore del carico Amministratore rete
Crea un progetto (facoltativo) Autore progetto

Per saperne di più, consulta le seguenti guide:

Creare un gruppo di istanze gestite

Per configurare un bilanciatore del carico con un backend di Compute Engine, le VM devono trovarsi in un gruppo di istanze. Questa guida descrive come creare un gruppo di istanze gestite con VM Linux su cui è in esecuzione Apache e quindi configurare il bilanciamento del carico. Un gruppo di istanze gestite crea ognuna delle proprie istanze gestite in base ai modelli di istanza specificati.

Il gruppo di istanze gestite fornisce VM che utilizzano i server di backend di un bilanciatore del carico HTTP(S) esterno. A scopo dimostrativo, i backend gestiscono i propri nomi host.

Prima di creare un gruppo di istanze gestite, 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. Assicurati che il disco di avvio sia impostato su un'immagine Debian, ad esempio Debian GNU/Linux 10 (buster). Queste istruzioni utilizzano comandi disponibili solo su Debian, come apt-get.

  5. Non configurare l'opzione Firewall.

    Poiché il bilanciatore del carico HTTP(S) esterno è un proxy, non è necessario selezionare Consenti traffico HTTPS o Consenti traffico HTTP in Firewall. In Configurazione di una regola firewall, crei l'unica regola firewall necessaria per questo bilanciatore del carico.

  6. Fai clic su Opzioni avanzate.

  7. Fai clic su Networking e configura il seguente campo:

    1. In Tag di rete, inserisci allow-health-check.
  8. Fai clic su Gestione. Inserisci lo script seguente 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

  1. Crea il modello.

    gcloud compute instance-templates create TEMPLATE_NAME \
       --region=us-east1 \
       --network=default \
       --subnet=default \
       --tags=allow-health-check \
       --image-family=debian-10 \
       --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'
    

Terraform

Per creare il modello di istanza, utilizza la risorsa google_compute_instance_template.

resource "google_compute_instance_template" "default" {
  name = "lb-backend-template"
  disk {
    auto_delete  = true
    boot         = true
    device_name  = "persistent-disk-0"
    mode         = "READ_WRITE"
    source_image = "projects/debian-cloud/global/images/family/debian-11"
    type         = "PERSISTENT"
  }
  labels = {
    managed-by-cnrm = "true"
  }
  machine_type = "n1-standard-1"
  metadata = {
    startup-script = "#! /bin/bash\n     sudo apt-get update\n     sudo apt-get install apache2 -y\n     sudo a2ensite default-ssl\n     sudo a2enmod ssl\n     vm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\n   http://169.254.169.254/computeMetadata/v1/instance/name)\"\n   sudo echo \"Page served from: $vm_hostname\" | \\\n   tee /var/www/html/index.html\n   sudo systemctl restart apache2"
  }
  network_interface {
    access_config {
      network_tier = "PREMIUM"
    }
    network    = "global/networks/default"
    subnetwork = "regions/us-east1/subnetworks/default"
  }
  region = "us-east1"
  scheduling {
    automatic_restart   = true
    on_host_maintenance = "MIGRATE"
    provisioning_model  = "STANDARD"
  }
  service_account {
    email  = "default"
    scopes = ["https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring.write", "https://www.googleapis.com/auth/pubsub", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", "https://www.googleapis.com/auth/trace.append"]
  }
  tags = ["allow-health-check"]
}

Crea il gruppo di istanze gestite e seleziona il modello di istanza.

Console

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

    Vai alla pagina Gruppi di istanze

  2. Fai clic su Crea gruppo di istanze.
  3. A sinistra, scegli Nuovo gruppo di istanze gestite (stateless).
  4. In Nome, inserisci lb-backend-example.
  5. In Località, seleziona Zona singola.
  6. Per Area geografica, seleziona quella che preferisci. In questo esempio viene utilizzato il criterio us-east1.
  7. In Zona, seleziona us-east1-b.
  8. In Modello di istanza, seleziona il modello di istanza lb-backend-template.
  9. In Modalità di scalabilità automatica, seleziona On: aggiungi e rimuovi istanze al gruppo.

    Imposta Numero minimo di istanze su 2 e Numero massimo di istanze su 2 o più.

  10. Per creare il nuovo gruppo di istanze, fai clic su Crea.

gcloud

  1. Crea il gruppo di istanze gestite in base al modello.

    gcloud compute instance-groups managed create lb-backend-example \
    --template=TEMPLATE_NAME --size=2 --zone=us-east1-b
    

Terraform

Per creare il gruppo di istanze gestite, utilizza la risorsa google_compute_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name = "lb-backend-example"
  zone = "us-east1-b"
  named_port {
    name = "http"
    port = 80
  }
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  base_instance_name = "vm"
  target_size        = 2
}

Per informazioni su come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi una porta denominata al gruppo di istanze

Per il gruppo di istanze, definisci un servizio HTTP e mappa un nome di porta sulla porta pertinente. Il servizio di bilanciamento del carico inoltra il traffico alla porta denominata. Per saperne di più, vedi Porte con nome.

Console

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

    Vai alla pagina Gruppi di istanze

  2. Fai clic sul nome del gruppo di istanze (in questo esempio lb-backend-example).
  3. Nella pagina Panoramica del gruppo di istanze, fai clic su Modifica .
  4. In Mappatura delle porte, fai clic su Aggiungi porta.
    1. Come nome della porta, inserisci http. Come numero di porta, inserisci 80.
  5. Fai clic su Salva.

gcloud

Utilizza il comando gcloud compute instance-groups set-named-ports.

gcloud compute instance-groups set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone us-east1-b

Terraform

L'attributo named_port è incluso nell'esempio di gruppo di istanze gestite.

Configurare una regola firewall

In questo esempio crei la regola firewall fw-allow-health-check. Questa è una regola in entrata che consente il traffico dai sistemi di controllo di integrità Google Cloud (130.211.0.0/22 e 35.191.0.0/16). Questo esempio utilizza il tag di destinazione allow-health-check per identificare le VM.

Console

  1. Nella console Google Cloud, vai alla pagina Firewall.

    Vai alla pagina Firewall

  2. Fai clic su Crea regola firewall per creare la regola firewall.
  3. In Nome, inserisci fw-allow-health-check.
  4. In Rete, seleziona Predefinita.
  5. In Target, seleziona Tag di destinazione specificati.
  6. Completa il campo Tag di destinazione con 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. In Protocolli e porte, seleziona Protocolli e porte specificati.
  10. Seleziona la casella di controllo TCP, quindi digita 80 per i numeri di porta.
  11. Fai clic su Crea.

gcloud

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

Terraform

Per creare la regola firewall, utilizza la risorsa google_compute_firewall.

resource "google_compute_firewall" "default" {
  name          = "fw-allow-health-check"
  direction     = "INGRESS"
  network       = "global/networks/default"
  priority      = 1000
  source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
  target_tags   = ["allow-health-check"]
  allow {
    ports    = ["80"]
    protocol = "tcp"
  }
}

Per informazioni su come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Prenotare un indirizzo IP esterno

Ora che le istanze sono operative, configura un indirizzo IP esterno statico e globale, che i tuoi clienti utilizzano per raggiungere il bilanciatore del carico.

Console

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

    Vai alla pagina Indirizzi IP esterni

  2. Per prenotare un indirizzo IPv4, fai clic su Prenota indirizzo 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

gcloud compute addresses create lb-ipv4-1 \
    --ip-version=IPV4 \
    --network-tier=PREMIUM \
    --global

Prendi nota dell'indirizzo IPv4 riservato:

gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global

Terraform

Per prenotare l'indirizzo IP, utilizza la risorsa google_compute_global_address.

resource "google_compute_global_address" "default" {
  name       = "lb-ipv4-1"
  ip_version = "IPV4"
}

Per informazioni su come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Configura il bilanciatore del carico

In questo esempio, utilizzi HTTPS (frontend) tra il client e il bilanciatore del carico. Per il protocollo HTTPS sono necessarie una o più risorse sui certificati SSL per configurare il proxy. Ti consigliamo di utilizzare un certificato gestito da Google.

Anche se utilizzi HTTPS sul frontend, puoi utilizzare HTTP sul backend. Google cripta automaticamente il traffico tra i Google Front End (GFE) e i tuoi backend che risiedono all'interno delle reti VPC di Google Cloud.

Console

Avvia la configurazione
  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
    Vai a Bilanciamento del carico
  2. In Bilanciamento del carico HTTP(S), fai clic su Avvia configurazione.
  3. In Per Internet o solo interno, seleziona Da Internet alle mie VM.
  4. In Globale o a livello di regione, seleziona Bilanciatore del carico HTTP(S) globale (classico).
  5. Fai clic su Continua.
  6. In Nome del bilanciatore del carico, inserisci qualcosa come web-map-https o web-map-http.
Configurazione frontend
  1. Fai clic su Configurazione frontend.
  2. Imposta Protocollo su HTTPS.
  3. Imposta Indirizzo IP su lb-ipv4-1, creato in precedenza.
  4. Assicurati che l'opzione Porta sia impostata su 443 per consentire il traffico HTTPS.
  5. Fai clic su Certificato e seleziona il certificato SSL principale.
  6. Facoltativo: crea un criterio SSL:
    1. Nell'elenco Criterio SSL, seleziona Crea un criterio.
    2. Imposta il nome del criterio SSL su my-ssl-policy.
    3. In Versione TLS minima, seleziona TLS 1.0.
    4. Per Profilo, seleziona Moderno. Vengono visualizzate le Funzionalità attivate e le Funzionalità disattivate.
    5. Fai clic su Salva.
    6. Se non hai creato alcun criterio SSL, viene applicato un criterio SSL predefinito di GCP.
    7. (Facoltativo) Seleziona la casella di controllo Abilita reindirizzamento da HTTP a HTTPS per abilitare i reindirizzamenti dalla porta 80 alla porta 443.

      Se attivi questa casella di controllo, viene creato un ulteriore bilanciatore del carico HTTP che utilizza lo stesso indirizzo IP del bilanciatore del carico HTTPS e reindirizza le richieste HTTP in entrata al frontend HTTPS del bilanciatore del carico.

      Questa casella di controllo può essere selezionata solo quando viene selezionato il protocollo HTTPS e viene utilizzato un indirizzo IP riservato.

  7. Fai clic su Fine.
Configurazione backend
  1. Fai clic su Configurazione backend.
  2. In Crea o seleziona servizi e bucket di backend, seleziona Servizi di backend > Crea un servizio di backend.
  3. Aggiungi un nome per il servizio di backend, ad esempio web-backend-service.
  4. In Protocollo, seleziona HTTP.
  5. In Porta denominata, inserisci http.
  6. In Backend > Nuovo backend > Gruppo di istanze, seleziona il gruppo di istanze, lb-backend-example.
  7. In Numeri di porta, inserisci 80.
  8. Mantieni le altre impostazioni predefinite.
  9. In Controllo di integrità, seleziona Crea un controllo di integrità, quindi aggiungi un nome per il controllo di integrità, ad esempio http-basic-check.
  10. Imposta il protocollo su HTTP, quindi fai clic su Salva.
  11. (Facoltativo) Configura un criterio di sicurezza predefinito del backend. Il criterio di sicurezza predefinito limita il traffico oltre una soglia configurata dall'utente. Per ulteriori informazioni sui criteri di sicurezza predefiniti, consulta la panoramica sulla limitazione della frequenza.

    1. Per disattivare il criterio di sicurezza predefinito di Google Cloud Armor, seleziona None nel menu dell'elenco dei criteri di sicurezza del backend.
    2. Nella sezione Sicurezza, seleziona Criterio di sicurezza predefinito.
    3. Nel campo Nome criterio, accetta il nome generato automaticamente o inserisci un nome per il criterio di sicurezza.
    4. Nel campo Conteggio richieste, accetta il conteggio delle richieste predefinito o inserisci un numero intero compreso tra 1 e 10,000.
    5. Nel campo Intervallo, seleziona un intervallo.
    6. Nel campo Applica alla chiave, scegli uno dei seguenti valori: Tutti, Indirizzo IP o Indirizzo IP X-Forwarded-For. Per ulteriori informazioni su queste opzioni, consulta la pagina Identificazione dei client per la limitazione di frequenza.
  12. Seleziona Attiva Cloud CDN.
  13. Facoltativo: modifica le impostazioni della modalità cache e del TTL.
  14. Mantieni le altre impostazioni predefinite.
  15. Fai clic su Crea.
Regole host e percorso

In Regole host e percorso, lascia le impostazioni predefinite.

Esamina e finalizza
  1. Fai clic su Esamina e finalizza.
  2. Rivedi le impostazioni di configurazione del bilanciatore del carico.
  3. (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta API REST che verrà utilizzata per creare il bilanciatore del carico.
  4. Fai clic su Crea.

Attendi che la creazione del bilanciatore del carico sia completa.

Se hai creato un bilanciatore del carico HTTPS e hai selezionato la casella di controllo Abilita reindirizzamento da HTTP a HTTPS, vedrai anche un bilanciatore del carico HTTP creato con un suffisso -redirect.

  1. Fai clic sul nome del bilanciatore del carico.
  2. Nella schermata Dettagli del bilanciatore del carico, controlla il campo IP:Port per il bilanciatore del carico.

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 \
          --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=us-east1-b \
          --global
      
  4. Per il protocollo HTTP, crea una mappa URL per instradare le richieste in entrata al servizio di backend predefinito.
      gcloud compute url-maps create web-map-http \
          --default-service web-backend-service
      
  5. Per il protocollo HTTPS, crea una mappa URL per instradare le richieste in entrata al servizio di backend predefinito.
      gcloud compute url-maps create web-map-https \
          --default-service web-backend-service
      

Configurazione di un frontend HTTPS

Salta questa sezione per i bilanciatori del carico HTTP.
  1. Per HTTPS, se non lo hai già fatto, crea la risorsa del certificato SSL globale, come mostrato in:
  2. Per HTTPS, crea un proxy HTTPS di destinazione per instradare le richieste alla tua mappa URL. Il proxy è la parte del bilanciatore del carico che contiene il certificato SSL per un bilanciatore del carico HTTPS, quindi puoi anche caricare il certificato in questo passaggio.
      gcloud compute target-https-proxies create https-lb-proxy \
          --url-map=web-map-https \
          --ssl-certificates=www-ssl-cert
      
  3. Per il protocollo HTTPS, crea una regola di forwarding globale per instradare le richieste in entrata al proxy.
      gcloud compute forwarding-rules create https-content-rule \
          --load-balancing-scheme=EXTERNAL \
          --network-tier=PREMIUM \
          --address=lb-ipv4-1 \
          --global \
          --target-https-proxy=https-lb-proxy \
          --ports=443
      
  4. (Facoltativo) Per HTTPS, crea un criterio SSL globale e collegalo al proxy HTTPS.
    Per creare un criterio SSL globale:
      gcloud compute ssl-policies create my-ssl-policy \
          --profile MODERN \
          --min-tls-version 1.0
      
    Per collegare il criterio SSL al proxy HTTPS di destinazione globale:
      gcloud compute target-https-proxies update https-lb-proxy \
          --ssl-policy my-ssl-policy
      

Configurazione di un frontend HTTP

Salta questa sezione per i bilanciatori del carico HTTPS.

  1. Per HTTP, crea un proxy HTTP di destinazione per instradare le richieste alla tua mappa URL.
      gcloud compute target-http-proxies create http-lb-proxy \
          --url-map=web-map-http
      
  2. Per il protocollo HTTP, crea una regola di forwarding globale per instradare le richieste in entrata al proxy.
      gcloud compute forwarding-rules create http-content-rule \
          --load-balancing-scheme=EXTERNAL \
          --address=lb-ipv4-1 \
          --global \
          --target-http-proxy=http-lb-proxy \
          --ports=80
      

Terraform

  1. Per creare il controllo di integrità, utilizza la risorsa google_compute_health_check.

    resource "google_compute_health_check" "default" {
      name               = "http-basic-check"
      check_interval_sec = 5
      healthy_threshold  = 2
      http_health_check {
        port               = 80
        port_specification = "USE_FIXED_PORT"
        proxy_header       = "NONE"
        request_path       = "/"
      }
      timeout_sec         = 5
      unhealthy_threshold = 2
    }
  2. Per creare il servizio di backend, utilizza la risorsa google_compute_backend_service.

    Questo esempio utilizza load_balancing_scheme="EXTERNAL_MANAGED", che configura un bilanciatore del carico HTTP(S) esterno globale con funzionalità di gestione del traffico avanzata. Per creare un bilanciatore del carico HTTP(S) esterno globale (classico), assicurati di cambiare load_balancing_scheme in EXTERNAL prima di eseguire lo script.

    resource "google_compute_backend_service" "default" {
      name                            = "web-backend-service"
      connection_draining_timeout_sec = 0
      health_checks                   = [google_compute_health_check.default.id]
      load_balancing_scheme           = "EXTERNAL_MANAGED"
      port_name                       = "http"
      protocol                        = "HTTP"
      session_affinity                = "NONE"
      timeout_sec                     = 30
      backend {
        group           = google_compute_instance_group_manager.default.instance_group
        balancing_mode  = "UTILIZATION"
        capacity_scaler = 1.0
      }
    }
  3. Per creare la mappa URL, utilizza la risorsa google_compute_url_map.

    resource "google_compute_url_map" "default" {
      name            = "web-map-http"
      default_service = google_compute_backend_service.default.id
    }
  4. Per creare il proxy HTTP di destinazione, utilizza la risorsa google_compute_target_http_proxy.

    resource "google_compute_target_http_proxy" "default" {
      name    = "http-lb-proxy"
      url_map = google_compute_url_map.default.id
    }
  5. Per creare la regola di forwarding, utilizza la risorsa google_compute_global_forwarding_rule.

    Questo esempio utilizza load_balancing_scheme="EXTERNAL_MANAGED", che configura un bilanciatore del carico HTTP(S) esterno globale con funzionalità di gestione del traffico avanzata. Per creare un bilanciatore del carico HTTP(S) esterno globale (classico), assicurati di cambiare load_balancing_scheme in EXTERNAL prima di eseguire lo script.

    resource "google_compute_global_forwarding_rule" "default" {
      name                  = "http-content-rule"
      ip_protocol           = "TCP"
      load_balancing_scheme = "EXTERNAL_MANAGED"
      port_range            = "80-80"
      target                = google_compute_target_http_proxy.default.id
      ip_address            = google_compute_global_address.default.id
    }

Per informazioni su come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Abilita Cloud CDN

Se non hai già abilitato Cloud CDN al momento della creazione del servizio di backend, puoi farlo ora aggiornando il servizio di backend.

gcloud compute backend-services update web-backend-service \
    --enable-cdn \
    --cache-mode=CACHE_MODE

Imposta la modalità cache sostituendo CACHE_MODE con una delle seguenti opzioni:

  • CACHE_All_STATIC: memorizza automaticamente nella cache contenuti statici.

  • USE_ORIGIN_HEADERS (valore predefinito): richiede l'origine per impostare intestazioni di memorizzazione nella cache valide per memorizzare i contenuti nella cache.

  • FORCE_CACHE_ALL: memorizza nella cache tutti i contenuti, ignorando eventuali istruzioni private, no-store o no-cache nelle intestazioni delle risposte Cache-Control.

Collegare il dominio al bilanciatore del carico

Dopo aver creato il bilanciatore del carico, prendi nota dell'indirizzo IP associato al bilanciatore del carico, ad esempio 30.90.80.100. Per indirizzare il tuo dominio al bilanciatore del carico, crea un record A utilizzando il servizio di registrazione del dominio. Se hai aggiunto più domini al certificato SSL, devi aggiungere un record A per ciascuno, indirizzando tutti all'indirizzo IP del bilanciatore del carico. Ad esempio, per creare record A per www.example.com e example.com, utilizza quanto segue:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Se utilizzi Google Domains, visita la Guida di Google Domains per ulteriori informazioni.

Testa 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 alla pagina Bilanciamento del carico

  2. Fai clic sul bilanciatore del carico che hai appena creato.
  3. Nella sezione Backend, verifica che le VM siano in stato integro. La colonna Integro deve essere compilata, a indicare che entrambe le VM sono in stato integro (2/2). Se visualizzi un valore diverso, prova prima a ricaricare la pagina. Potrebbero essere necessari alcuni minuti perché la console Google Cloud indichi che le VM sono in stato integro. Se i backend non sembrano integri dopo qualche minuto, esamina la configurazione del firewall e il tag di rete assegnato alle VM di backend.
  4. Per il protocollo HTTPS, se utilizzi un certificato gestito da Google, verifica che lo stato della risorsa del certificato sia ATTIVO. Per ulteriori informazioni, consulta Stato delle risorse del certificato SSL gestito da Google.
  5. Dopo che la console Google Cloud mostra che le istanze di backend sono in stato integro, puoi testare il bilanciatore del carico utilizzando un browser web andando alla pagina https://IP_ADDRESS (o http://IP_ADDRESS). Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico.
  6. Se hai utilizzato un certificato autofirmato per il test del protocollo HTTPS, il browser mostra un avviso. Devi chiedere esplicitamente al browser di accettare un certificato autofirmato.
  7. Il browser dovrebbe visualizzare 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). Se il browser non esegue il rendering di questa pagina, controlla le impostazioni di configurazione di questa guida.

gcloud

gcloud compute addresses describe lb-ipv4-1 \
   --format="get(address)" \
   --global

Una volta trascorsi alcuni minuti, puoi testare la configurazione eseguendo il comando curl.

curl http://IP_ADDRESS

-o-

curl https://HOSTNAME

Disabilita Cloud CDN

Console

Disabilita Cloud CDN per un singolo servizio di backend

  1. Nella console Google Cloud, vai alla pagina Cloud CDN.

    Vai alla pagina Cloud CDN

  2. Sul lato destro della riga di origine, fai clic su Menu e seleziona Modifica.
  3. Deseleziona le caselle di controllo dei servizi di backend da cui vuoi interrompere l'utilizzo di Cloud CDN.
  4. Fai clic su Aggiorna.

Rimuovi Cloud CDN per tutti i servizi di backend per un'origine

  1. Nella console Google Cloud, vai alla pagina Cloud CDN.

    Vai alla pagina Cloud CDN

  2. Sul lato destro della riga di origine, fai clic su Menu , poi seleziona Rimuovi.
  3. Fai clic su Rimuovi per confermare.

gcloud

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --no-enable-cdn

La disabilitazione di Cloud CDN non invalida né elimina definitivamente le cache. Se disabiliti e riattivi Cloud CDN, la maggior parte dei tuoi contenuti memorizzati nella cache rimarrà comunque memorizzata nella cache. Per evitare che i contenuti vengano pubblicati nella cache, devi invalidare tali contenuti.

Passaggi successivi