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

Questo documento mostra come creare un regional internal Application Load Balancer 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 gcloud CLI. Per installarla, vedi Installa Google Cloud 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, consulta Condizioni IAM per le regole di forwarding.

Configura una risorsa del certificato SSL

Per un regional internal Application Load Balancer che utilizza HTTPS come protocollo di richiesta e risposta, crea una risorsa 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 regional internal Application Load Balancer:

  • 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 unregional internal Application Load Balancer.

  • Quando utilizzi un regional internal Application Load Balancer per accedere ai bucket di backend, è supportato solo il metodo GET HTTP. Puoi scaricare i contenuti dal bucket, ma il caricamento dei contenuti nel bucket tramite regional internal Application Load Balancer non è disponibile.

  • Per un regional internal Application Load Balancer, 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

Puoi configurare un regional internal Application Load Balancer in una regione come mostrato nel seguente diagramma dell'architettura:

Un regional internal Application Load Balancer invia il traffico a un backend Cloud Storage.
Distribuzione del traffico a Cloud Storage (fai clic per ingrandire).

Come mostrato nel diagramma dell'architettura, questo esempio crea un regional internal Application Load Balancer in una rete Virtual Private Cloud (VPC) con due bucket di backend, dove ogni bucket di backend fa riferimento a un bucket Cloud Storage. I bucket Cloud Storage si trovano nella regione us-east1 e puoi bilanciare il carico del traffico tra ogni bucket.

Configura la rete e le subnet

All'interno della rete VPC, configura una subnet nella regione us-east1 in cui deve essere configurata la regola di forwarding dei bilanciatori del carico. Inoltre, configura una subnet solo proxy nella regione us-east1 in cui vuoi configurare il bilanciatore del carico.

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

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

  • Subnet per il bilanciatore del carico. Una subnet denominata subnet-us nella regione us-east1 utilizza 10.1.2.0/24 per il suo intervallo IP principale.

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

Configura le subnet per la regola di forwarding del bilanciatore del carico

Crea una subnet nella stessa regione in cui deve essere configurata la regola di forwarding dei bilanciatori del carico.

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. Nella sezione Subnet, imposta Modalità di creazione subnet su Personalizzata.

  5. Nella sezione Nuova subnet, inserisci le seguenti informazioni:

    1. Nome: subnet-us
    2. Seleziona una regione: us-east1
    3. Intervallo di indirizzi IP: 10.1.2.0/24
    4. Fai clic su Fine.
  6. 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
    
  2. Crea una subnet nella rete VPC lb-network nella regione us-east1 con il comando gcloud compute networks subnets create.

    gcloud compute networks subnets create subnet-us \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-east1
    

Configura le 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 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. In questo esempio, creiamo una subnet solo proxy nella regione us-east1.

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:

    1. In Nome, inserisci proxy-only-subnet-us.
    2. In Regione, inserisci us-east1.
    3. Per Scopo, seleziona Regional Managed Proxy.
    4. In Intervallo di indirizzi IP, inserisci 10.129.0.0/23.
  5. Fai clic su Aggiungi.

gcloud

  • 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 una regola firewall

Questo esempio utilizza una regola firewall in entrata, fw-allow-ssh, che consente l'accesso SSH sulla porta 22 alla VM client.

Console

  1. Nella console Google Cloud , vai alla pagina Policy del firewall.

    Vai a Criteri firewall

  2. Fai clic su Crea regola firewall per creare la regola che consente le connessioni SSH in entrata sulla VM client:

  3. Nella pagina Crea una regola firewall, inserisci le seguenti informazioni:

    1. Nome: fw-allow-ssh
    2. Rete: lb-network
    3. Direzione del traffico: in entrata
    4. Azione in caso di corrispondenza: Consenti
    5. Target: Tag di destinazione specificati
    6. Tag di destinazione: allow-ssh
    7. Filtro di origine: intervalli IPv4
    8. Intervalli IPv4 di origine: 0.0.0.0/0
    9. Protocolli e porte:
      1. Scegli Protocolli e porte specificati.
      2. Seleziona la casella di controllo TCP, quindi inserisci 22 per il numero di porta.
  4. Fai clic su Crea.

gcloud

  • Crea la regola firewall fw-allow-ssh per consentire la connettività SSH alle VM con il tag di rete allow-ssh. Se ometti --source-ranges, Google Cloud interpreta la regola in modo che si riferisca a qualsiasi origine.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    

Configura i bucket Cloud Storage

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

  1. Crea i bucket.
  2. Copia i contenuti nei bucket.
  3. Rendi pubblicamente leggibili i 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 le istruzioni precedenti per creare un secondo bucket nella stessa regione, us-east1.

gcloud

  • Crea i 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
    
    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access
    

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

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, seleziona la casella di controllo per ogni bucket che vuoi rendere pubblico.

  3. Fai clic sul pulsante Autorizzazioni. Viene visualizzata la finestra di dialogo Autorizzazioni.

  4. Nella finestra di dialogo Autorizzazioni, fai clic sul pulsante Aggiungi entità. 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 un indirizzo IP interno statico

Prenota un indirizzo IPv4 interno statico per la regola di forwarding del bilanciatore del carico. Per saperne di più, consulta Prenota un indirizzo IP interno statico.

Console

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

    Vai a Prenota indirizzo IP statico interno

  2. Nel campo Nome, inserisci un nome per il nuovo indirizzo.

  3. Nell'elenco Versione IP, seleziona IPv4.

  4. Nell'elenco Rete, seleziona lb-network.

  5. Nell'elenco Subnet, seleziona subnet-us.

  6. In Regione, seleziona us-east1.

  7. Nell'elenco Indirizzo IP statico, seleziona Assegna automaticamente. Dopo aver creato il bilanciatore del carico, questo indirizzo IP viene collegato alla regola di forwarding del bilanciatore del carico.

  8. 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 \
         --subnet=subnet-us
    

    Sostituisci ADDRESS_NAME con il nome del nuovo indirizzo.

  2. Per visualizzare le informazioni sull'indirizzo, utilizza il comando gcloud compute addresses describe.

    gcloud compute addresses describe ADDRESS_NAME
    

    Copia l'indirizzo IP restituito da utilizzare 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 regional internal Application Load Balancer:

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

    gcloud beta compute backend-buckets create backend-bucket-cats \
        --gcs-bucket-name=BUCKET1_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --region=us-east1
    
    gcloud beta compute backend-buckets create backend-bucket-dogs \
        --gcs-bucket-name=BUCKET2_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --region=us-east1
    
  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 lb-map \
        --default-backend-bucket=backend-bucket-cats \
        --region=us-east1
    
  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 lb-map \
        --path-matcher-name=path-matcher-pets \
        --new-hosts=* \
        --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \
        --default-backend-bucket=backend-bucket-cats \
        --region=us-east1
    
  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=lb-map \
        --region=us-east1
    

    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.

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

    Sostituisci CERTIFICATE_NAME con il nome del certificato SSL che hai creato utilizzando Certificate Manager.

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

    La prenotazione di un indirizzo IP è facoltativa per una regola di forwarding HTTP; tuttavia, devi prenotare un indirizzo IP per una regola di forwarding HTTPS.

    In questo esempio, un indirizzo IP temporaneo è associato alla regola di forwarding HTTP del bilanciatore del carico. Un indirizzo IP temporaneo rimane costante finché esiste la regola di forwarding. Se devi eliminare la regola di forwarding e ricrearla, la regola potrebbe ricevere un nuovo indirizzo IP.

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

    gcloud compute forwarding-rules create http-fw-rule-1 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=lb-network \
        --subnet=subnet-us \
        --subnet-region=us-east1 \
        --ports=80 \
        --target-http-proxy=http-proxy \
        --target-http-proxy-region=us-east1 \
        --region=us-east1
    

    Per il traffico HTTPS, crea le regole di forwarding globali per instradare le richieste in entrata al proxy HTTPS di destinazione:

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

    Sostituisci RESERVED_IP_ADDRESS con il nome dell'indirizzo che hai copiato nella sezione Prenota un indirizzo IP interno statico.

Invia una richiesta HTTP al bilanciatore del carico

Invia una richiesta da una VM client interna alla regola di forwarding del bilanciatore del carico.

Ottieni l'indirizzo IP della regola di forwarding del bilanciatore del carico

Recupera l'indirizzo IP della regola di forwarding del bilanciatore del carico (http-fw-rule-1) nella regione us-east1 per inviare una richiesta HTTP all'indirizzo IP virtuale (VIP) nella regione utilizzando curl.

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

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

Crea una VM client per testare la connettività

Crea una VM client e invia una richiesta HTTP ai VIP nella rete VPC. La VM client può trovarsi in qualsiasi zona della stessa regione del bilanciatore del carico e può utilizzare qualsiasi subnet nella stessa rete VPC. In questo esempio, crei la VM client nella stessa subnet della regola di forwarding del bilanciatore del carico.

  1. Crea una VM client nella regione us-east1.

    gcloud compute instances create client-a \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --network=lb-network \
        --subnet=subnet-us \
        --zone=us-east1-c \
        --tags=allow-ssh
    
  2. Stabilisci una connessione SSH alla VM client.

    gcloud compute ssh client-a --zone=us-east1-c
    
  3. In questo esempio, regional internal Application Load Balancer ha un VIP frontend nella regione us-east1 della rete VPC. Invia una richiesta HTTP al VIP in quella regione 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
    

    Sostituisci FORWARDING_RULE_IP_ADDRESS con l'indirizzo IP che hai copiato nella sezione Recupera l'indirizzo IP della regola di forwarding del bilanciatore del carico.

Passaggi successivi