Configura un bilanciatore del carico delle applicazioni esterno regionale con bucket Cloud Storage

Questo documento mostra come creare un bilanciatore del carico delle applicazioni esterno regionale per instradare le richieste di contenuti statici ai bucket Cloud Storage.

Prima di iniziare

Assicurati che la tua configurazione soddisfi i seguenti prerequisiti.

Installa Google Cloud CLI

Alcune istruzioni di questa guida possono essere eseguite solo utilizzando Google Cloud CLI. Per installarlo, vedi Installa gcloud CLI.

Puoi trovare i comandi relativi al bilanciamento del carico nel documento Riferimenti per API e gcloud CLI.

Ruoli obbligatori

Se hai creato il progetto, ti viene concesso il ruolo Proprietario (roles/owner). Per impostazione predefinita, il ruolo Proprietario (roles/owner) o il ruolo Editor (roles/editor) include le autorizzazioni necessarie per seguire questo documento.

Se non sei l'autore del progetto, le autorizzazioni richieste devono essere concesse al principal appropriato. Ad esempio, un'entità può essere un Account Google (per gli utenti finali) o un service account.

Per ottenere le autorizzazioni necessarie per creare bucket Cloud Storage e risorse di rete, chiedi all'amministratore di concederti i seguenti ruoli IAM per il progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Per saperne di più su ruoli e autorizzazioni per Cloud Load Balancing, consulta Ruoli e autorizzazioni. Per saperne di più sulla definizione delle policy IAM con concessioni condizionali per le regole di forwarding, consulta Condizioni IAM per le regole di forwarding.

Configura una risorsa del certificato SSL

Per un bilanciatore del carico delle applicazioni esterno regionale che utilizza HTTPS come protocollo di richiesta e risposta, puoi creare una risorsa certificato SSL utilizzando un certificato SSL di Compute Engine o un certificato Certificate Manager.

Per questo esempio, crea una risorsa del certificato SSL utilizzando Certificate Manager come descritto in uno dei seguenti documenti:

Dopo aver creato il certificato, puoi collegarlo al proxy di destinazione HTTPS.

Ti consigliamo di utilizzare un certificato gestito da Google.

Limitazioni

Si applicano le seguenti limitazioni ai bucket Cloud Storage quando fungono da backend per un bilanciatore del carico delle applicazioni esterno regionale:

  • L'accesso privato al bucket non è supportato, pertanto il bucket di backend deve essere accessibile pubblicamente su internet.

  • Gli URL firmati non sono supportati.

  • L'integrazione di Cloud CDN non è disponibile quando crei bucket di backend per un bilanciatore del carico delle applicazioni esterno regionale.

  • Quando utilizzi un bilanciatore del carico delle applicazioni esterno regionale per accedere ai bucket di backend, è supportato solo il metodo HTTP GET. Puoi scaricare contenuti dal bucket, ma il caricamento di contenuti nel bucket tramite il bilanciatore del carico delle applicazioni esterno regionale non è disponibile.

  • Per un bilanciatore del carico delle applicazioni esterno regionale, i bucket Cloud Storage sono supportati solo nella regione in cui è configurato il bilanciatore del carico. I bucket dual-region o multiregionali non sono supportati.

Panoramica della configurazione

Il seguente diagramma mostra un bilanciatore del carico delle applicazioni esterno regionale con bucket di backend situati nella stessa regione del bilanciatore del carico.

La regola di forwarding del bilanciatore del carico delle applicazioni esterno regionale ha un indirizzo IP esterno.

Un bilanciatore del carico delle applicazioni esterno regionale invia il traffico a un backend Cloud Storage.
Distribuzione del traffico a Cloud Storage (fai clic per ingrandire).

Nelle sezioni seguenti configurerai le diverse risorse come mostrato nel diagramma precedente.

Configura la rete e la subnet solo proxy

Questo esempio utilizza la seguente rete VPC, regione e subnet solo proxy:

  • Rete. La rete è una rete VPC in modalità personalizzata denominata lb-network.

  • Subnet per i proxy Envoy. Una subnet denominata proxy-only-subnet-us nella regione us-east1 utilizza 10.129.0.0/23 per il suo intervallo IP primario.

Configura una rete VPC in modalità personalizzata

Console

  1. Nella console Google Cloud , vai alla pagina Reti VPC.

    Vai a Reti VPC

  2. Fai clic su Crea rete VPC.

  3. In Nome, inserisci lb-network.

  4. Fai clic su Crea.

gcloud

  1. Crea una rete VPC personalizzata, denominata lb-network, con il comando gcloud compute networks create.

    gcloud compute networks create lb-network --subnet-mode=custom
    

Configura la subnet solo proxy

Una subnet solo proxy fornisce un insieme di indirizzi IP che Google Cloud utilizza per eseguire proxy Envoy per tuo conto. I proxy terminano le connessioni dal client e creano nuove connessioni ai backend.

Questa subnet solo proxy viene utilizzata da tutti i bilanciatori del carico regionali basati su Envoy nella stessa regione della rete VPC. Può essere presente una sola subnet solo proxy attiva per uno scopo specifico, per regione e per rete.

Console

  1. Nella console Google Cloud , vai alla pagina Reti VPC.

    Vai a Reti VPC

  2. Fai clic sul nome della rete VPC che hai creato.

  3. Nella scheda Subnet, fai clic su Aggiungi subnet.

  4. Inserisci le seguenti informazioni:

    • Nome: proxy-only-subnet-us
    • Regione: us-east1
    • Scopo: proxy gestito a livello di regione
    • Intervallo di indirizzi IP: 10.129.0.0/23
  5. Fai clic su Aggiungi.

gcloud

  1. Crea una subnet solo proxy nella regione us-east1 con il comando gcloud compute networks subnets create.

    gcloud compute networks subnets create proxy-only-subnet-us \
        --purpose=REGIONAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=us-east1 \
        --network=lb-network \
        --range=10.129.0.0/23
    

Configura i bucket Cloud Storage

La procedura per configurare i bucket Cloud Storage è la seguente:

  • Crea i bucket.
  • Copia i contenuti nei bucket.

Creazione di bucket di Cloud Storage

In questo esempio, crei due bucket Cloud Storage nella regione us-east1.

Console

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

    Vai a Bucket

  2. Fai clic su Crea.

  3. Nella sezione Inizia, inserisci un nome univoco globale che rispetti le linee guida per l'assegnazione dei nomi.

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

  5. Imposta Tipo di località su Area geografica.

  6. Dall'elenco delle regioni, seleziona us-east1.

  7. Fai clic su Crea.

  8. Fai clic su Bucket per tornare alla pagina Bucket Cloud Storage. Segui queste istruzioni per creare un secondo bucket nella regione us-east1.

gcloud

  1. Crea il primo bucket nella regione us-east1 con il comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET1_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access
    
  2. Crea il secondo bucket anche nella regione us-east1 con il comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access
    

Sostituisci le variabili BUCKET1_NAME e BUCKET2_NAME con i nomi dei tuoi bucket Cloud Storage.

Copia i file grafici nei bucket Cloud Storage

Per consentirti di testare la configurazione, copia un file grafico da un bucket Cloud Storage pubblico ai tuoi bucket Cloud Storage.

Esegui i comandi seguenti in Cloud Shell, sostituendo le variabili dei nomi dei bucket con i nomi univoci dei bucket Cloud Storage:

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/

Rendi pubblicamente leggibili i bucket Cloud Storage

Per rendere leggibili tutti gli oggetti in un bucket da parte di chiunque su internet, concedi all'entità allUsers il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer).

Console

Per concedere a tutti gli utenti l'accesso in visualizzazione agli oggetti nei bucket, ripeti la seguente procedura per ogni bucket:

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

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket che vuoi rendere pubblico.

  3. Seleziona la scheda Autorizzazioni.

  4. Nella sezione Autorizzazioni, fai clic sul pulsante Concedi l'accesso. Viene visualizzata la finestra di dialogo Concedi l'accesso.

  5. Nel campo Nuove entità, inserisci allUsers.

  6. Nel campo Seleziona un ruolo, inserisci Storage Object Viewer nella casella del filtro e seleziona Visualizzatore oggetti Storage dai risultati filtrati.

  7. Fai clic su Salva.

  8. Fai clic su Consenti accesso pubblico.

gcloud

Per concedere a tutti gli utenti l'accesso per visualizzare gli oggetti nei bucket, esegui il comando buckets add-iam-policy-binding.

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME \
    --member=allUsers \
    --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
   --member=allUsers \
   --role=roles/storage.objectViewer

Prenota l'indirizzo IP del bilanciatore del carico

Prenota un indirizzo IP esterno statico per la regola di forwarding del bilanciatore del carico.

Console

  1. Nella console Google Cloud , vai alla pagina Prenota un indirizzo statico.

    Vai a Prenota un indirizzo statico

  2. Scegli un Nome per il nuovo indirizzo.

  3. In Versione IP, seleziona IPv4.

  4. Per Tipo, seleziona A livello di regione.

  5. In Regione, seleziona us-east1.

  6. Lascia l'opzione Allegato a impostata su Nessuno. Dopo aver creato il bilanciatore del carico, questo indirizzo IP viene collegato alla regola di forwarding del bilanciatore del carico.

  7. Fai clic su Prenota per prenotare l'indirizzo IP.

gcloud

  1. Per prenotare un indirizzo IP esterno statico, utilizza il comando gcloud compute addresses create.

    gcloud compute addresses create ADDRESS_NAME \
       --region=us-east1
    

    Sostituisci quanto segue:

    • ADDRESS_NAME: il nome che vuoi assegnare a questo indirizzo.
  2. Utilizza il comando gcloud compute addresses describe per visualizzare il risultato:

    gcloud compute addresses describe ADDRESS_NAME
    

L'indirizzo IP restituito viene chiamato RESERVED_IP_ADDRESS nella sezione seguente.

Configura il bilanciatore del carico con i bucket di backend

Questa sezione mostra come creare le seguenti risorse per un bilanciatore del carico delle applicazioni esterno regionale:

  • Due bucket di backend. I bucket di backend fungono da wrapper per i bucket Cloud Storage che hai creato in precedenza.
  • Mappa URL
  • Proxy di destinazione
  • Una regola di forwarding con indirizzi IP regionali. La regola di forwarding ha un indirizzo IP esterno.

In questo esempio, puoi utilizzare HTTP o HTTPS come protocollo di richiesta-risposta tra il client e il bilanciatore del carico. Per creare un bilanciatore del carico HTTPS, devi aggiungere una risorsa del certificato SSL al frontend del bilanciatore del carico.

Per creare i componenti di bilanciamento del carico menzionati in precedenza utilizzando gcloud CLI, segui questi passaggi:

  1. Crea due bucket di backend nella regione us-east1 con il comando gcloud beta compute backend-buckets create. I bucket di backend hanno uno schema di bilanciamento del carico di EXTERNAL_MANAGED.

    gcloud beta compute backend-buckets create backend-bucket-cats \
        --gcs-bucket-name=BUCKET1_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --region=us-east1
    
    gcloud beta compute backend-buckets create backend-bucket-dogs \
        --gcs-bucket-name=BUCKET2_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --region=us-east1
    

    Sostituisci le variabili BUCKET1_NAME e BUCKET2_NAME con i nomi dei tuoi bucket Cloud Storage.

  2. Crea una mappa URL per instradare le richieste in entrata al bucket di backend con il comando gcloud beta compute url-maps create.

    gcloud beta compute url-maps create URL_MAP_NAME \
        --default-backend-bucket=backend-bucket-cats \
        --region=us-east1
    

    Sostituisci la variabile URL_MAP_NAME con il nome della mappa URL.

  3. Configura le regole host e percorso della mappa URL con il comando gcloud beta compute url-maps add-path-matcher.

    In questo esempio, il bucket di backend predefinito è backend-bucket-cats, che gestisce tutti i percorsi al suo interno. Tuttavia, qualsiasi richiesta di targeting http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg utilizza il backend backend-bucket-dogs. Ad esempio, se la cartella /love-to-fetch/ esiste anche nel backend predefinito (backend-bucket-cats), il bilanciatore del carico assegna la priorità al backend backend-bucket-dogs perché esiste una regola di percorso specifica per /love-to-fetch/*.

    gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
        --path-matcher-name=path-matcher-pets \
        --new-hosts=* \
        --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \
        --default-backend-bucket=backend-bucket-cats
    

    Sostituisci la variabile URL_MAP_NAME con il nome della mappa URL.

  4. Crea un proxy di destinazione con il comando gcloud compute target-http-proxies create.

    Per il traffico HTTP, crea un proxy HTTP di destinazione per instradare le richieste alla mappa URL:

    gcloud compute target-http-proxies create http-proxy \
        --url-map=URL_MAP_NAME \
        --region=us-east1
    

    Sostituisci la variabile URL_MAP_NAME con il nome della mappa URL.

    Per il traffico HTTPS, crea un proxy HTTPS di destinazione per instradare le richieste alla mappa URL. Il proxy è la parte del bilanciatore del carico che contiene il certificato SSL per un bilanciatore del carico HTTPS. Dopo aver creato il certificato, puoi collegarlo al proxy di destinazione HTTPS.

    Per collegare un certificato Certificate Manager, esegui questo comando:

    gcloud compute target-https-proxies create https-proxy \
        --url-map=URL_MAP_NAME \
        --certificate-manager-certificates=CERTIFICATE_NAME \
        --region=us-east1
    

    Sostituisci quanto segue:

  5. Crea una regola di forwarding con un indirizzo IP nella regione us-east1 utilizzando il comando gcloud compute forwarding-rules create.

    Per il traffico HTTP, crea una regola di forwarding regionale per instradare le richieste in entrata al proxy HTTP di destinazione:

    gcloud compute forwarding-rules create http-fw-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network=lb-network \
        --address=RESERVED_IP_ADDRESS \
        --ports=80 \
        --region=us-east1 \
        --target-http-proxy=http-proxy \
        --target-http-proxy-region=us-east1
    

    Per il traffico HTTPS, crea una regola di forwarding regionale per instradare le richieste in entrata al proxy HTTPS di destinazione:

    gcloud compute forwarding-rules create https-fw-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network=lb-network \
        --address=RESERVED_IP_ADDRESS \
        --ports=443 \
        --region=us-east1 \
        --target-https-proxy=https-proxy \
        --target-https-proxy-region=us-east1
    

Invia una richiesta HTTP al bilanciatore del carico

Ora che il servizio di bilanciamento del carico è in esecuzione, puoi inviare una richiesta alla regola di forwarding del bilanciatore del carico.

  1. Ottieni l'indirizzo IP della regola di forwarding del bilanciatore del carico (http-fw-rule), che si trova nella regione us-east1.

      gcloud compute forwarding-rules describe http-fw-rule \
          --region=us-east1
    

    Copia l'indirizzo IP restituito da utilizzare come FORWARDING_RULE_IP_ADDRESS nel passaggio successivo.

  2. Fai una richiesta HTTP all'indirizzo IP virtuale (VIP) della regola di forwarding utilizzando curl.

      curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
      curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

Passaggi successivi