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 configurazione soddisfi i seguenti prerequisiti.

Installa Google Cloud CLI

Alcune delle istruzioni riportate in 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 di riferimento per l'API e gcloud CLI.

Ruoli obbligatori

Se sei il creatore del 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 il creatore del progetto, le autorizzazioni richieste devono essere concesse al progetto all'entità appropriata. 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ù sui ruoli e sulle 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-risposta, puoi creare una risorsa del certificato SSL utilizzando un certificato SSL di Compute Engine o un certificato di 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 HTTPS di destinazione.

Ti consigliamo di utilizzare un certificato gestito da Google.

Limitazioni

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

  • L'accesso ai bucket privati non è supportato, quindi 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 i contenuti dal bucket, ma il caricamento dei 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 a due regioni 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 che seguono, 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 l'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 gcloud compute networks create comando.

    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 i 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ò esistere una sola subnet solo proxy attiva per uno scopo specifico, per regione, 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 us-east1 regione con il gcloud compute networks subnets create comando.

    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.

Crea bucket Cloud Storage

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

Console

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

    Vai a Bucket

  2. Fai clic su Crea.

  3. Nella sezione Inizia, inserisci un nome univoco a livello 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 Regione.

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

  7. Fai clic su Crea.

  8. Fai clic su Bucket per tornare alla pagina Bucket di 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 gcloud storage buckets create comando.

    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 us-east1 regione con il gcloud storage buckets create comando.

    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 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 Google Cloud console, vai alla pagina Bucket di 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 Concedi l'accesso pulsante. 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 in 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 in visualizzazione agli oggetti nei bucket, esegui il buckets add-iam-policy-binding comando.

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 Google Cloud console, 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. In Tipo, seleziona Regionale.

  5. In Regione, seleziona us-east1.

  6. Lascia l'opzione Collegato 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 gcloud compute addresses create comando.

    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 gcloud compute addresses describe comando per visualizzare il risultato:

    gcloud compute addresses describe ADDRESS_NAME
    

L'indirizzo IP restituito viene indicato come 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 sopra menzionati utilizzando gcloud CLI:

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

    gcloud compute backend-buckets create backend-bucket-cats \
        --gcs-bucket-name=BUCKET1_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --region=us-east1
    
    gcloud 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 bucket Cloud Storage.

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

    gcloud 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 gcloud compute url-maps add-path-matcher comando.

    In questo esempio, il bucket di backend predefinito è backend-bucket-cats, che gestisce tutti i percorsi esistenti al suo interno. Tuttavia, qualsiasi richiesta che ha come target http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg utilizza il backend backend-bucket-dogs. Ad esempio, se la /love-to-fetch/ cartella 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 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 gcloud compute target-http-proxies create comando.

    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 a la 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 collegare il certificato al proxy HTTPS di destinazione.

    Per collegare un certificato di Certificate Manager, esegui il seguente 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 us-east1 regione utilizzando il gcloud compute forwarding-rules create comando.

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