Configura un bilanciatore del carico di rete proxy esterno regionale con backend di gruppi di istanze VM

Un bilanciatore del carico di rete proxy esterno regionale è un bilanciatore del carico di livello 4 regionale basato su proxy che consente di eseguire e scalare il traffico del servizio TCP in un'unica regione dietro un indirizzo IP regionale esterno. Questi bilanciatori del carico distribuiscono il traffico TCP esterno da internet ai backend nella stessa regione.

Questa guida contiene le istruzioni per configurare un bilanciatore del carico di rete proxy esterno regionale con un backend di un gruppo di istanze gestite.

Prima di iniziare, leggi l' Panoramica del bilanciatore del carico di rete proxy esterno.

In questo esempio, utilizzeremo il bilanciatore del carico per distribuire il traffico TCP VM di backend in due gruppi di istanze gestite a livello di zona nella regione A. Per Nell'esempio, il servizio è un insieme Server Apache configurati per rispondere sulla porta 110. Molti browser non consentono la porta 110, pertanto sezione di test utilizza curl.

In questo esempio, configurerai il deployment mostrato nel diagramma seguente.

Configurazione di esempio del bilanciatore del carico di rete proxy esterno con backend di gruppi di istanze.
Configurazione di esempio del bilanciatore del carico di rete proxy esterno con backend di gruppi di istanze

Un bilanciatore del carico di rete proxy esterno regionale è un bilanciatore del carico regionale. Tutti i componenti del bilanciatore del carico (gruppo di istanza di backend, servizio di backend, proxy di destinazione e regola di forwarding) deve trovarsi nella stessa regione.

Autorizzazioni

Per seguire questa guida, devi essere in grado di creare istanze e modificare un in un progetto. Devi essere un progetto Proprietario o Editor, oppure includono tutte le seguenti caratteristiche Ruoli IAM di Compute Engine.

Attività Ruolo richiesto
Creazione di reti, subnet e componenti del bilanciatore del carico Amministratore rete Compute (roles/compute.networkAdmin)
Aggiungi e rimuovi regole firewall Amministratore sicurezza Compute (roles/compute.securityAdmin)
Creazione delle istanze Amministratore istanze Compute (roles/compute.instanceAdmin)

Per ulteriori informazioni, consulta le seguenti guide:

Configura la rete e le subnet

È necessaria una rete VPC con due subnet, una per il carico e l'altro per i proxy del bilanciatore del carico. Questo a livello di regione. Traffico all'interno del VPC viene instradata al bilanciatore del carico se l'origine del traffico si trova in una nella stessa regione del bilanciatore del carico.

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

  • Rete: un VPC in modalità personalizzata rete denominata lb-network

  • Subnet per i backend:una subnet denominata backend-subnet in Regione A che utilizza 10.1.2.0/24 come intervallo di indirizzi IP principali

  • Subnet per i proxy:una subnet denominata proxy-only-subnet in Regione B che utilizza 10.129.0.0/23 come intervallo di indirizzi IP principali

Crea la rete e le subnet

Console

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

    Vai alle reti VPC

  2. Fai clic su Crea rete VPC.

  3. In Nome, inserisci lb-network.

  4. Nella sezione Subnet, imposta la Modalità di creazione subnet su Personalizzato.

  5. Creare una subnet per i backend del bilanciatore del carico. Nella sezione Nuova subnet inserisci le seguenti informazioni:

    • Nome: backend-subnet
    • Regione: REGION_A
    • Intervallo di indirizzi IP: 10.1.2.0/24
  6. Fai clic su Fine.

  7. Fai clic su Crea.

gcloud

  1. Per creare la rete VPC personalizzata, utilizza il comando gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Per creare una subnet nella rete lb-network nella regione REGION_A, utilizza il comando gcloud compute networks subnets create:

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

Crea la subnet solo proxy

Una subnet solo proxy fornisce una insieme di indirizzi IP che Google utilizza per eseguire proxy Envoy per tuo conto. La i proxy terminano le connessioni dal client e creano nuove connessioni di backend.

Questa subnet solo proxy viene utilizzata da tutti i bilanciatori del carico basati su Envoy Regione A della rete VPC lb-network.

Console

Se utilizzi la console Google Cloud, puoi attendere e creare una subnet solo proxy in un secondo momento nella pagina Bilanciamento del carico.

Se vuoi creare ora la subnet solo proxy, segui questi passaggi:

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

    Vai alle reti VPC

  2. Fai clic sul nome della rete VPC: lb-network.

  3. Fai clic su Aggiungi subnet.

  4. In Nome, inserisci proxy-only-subnet.

  5. In Regione, seleziona REGION_A.

  6. Imposta Purpose su Regional Managed Proxy (Proxy gestito a livello di regione).

  7. In Intervallo di indirizzi IP, inserisci 10.129.0.0/23.

  8. Fai clic su Aggiungi.

gcloud

Per creare la subnet solo proxy, utilizza il comando gcloud compute networks subnets create:

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

Crea regole firewall

In questo esempio, vengono create le seguenti regole firewall:

  • fw-allow-ssh. Una regola in entrata, applicabile alle istanze da caricare bilanciata, che consente la connettività SSH in entrata sulla porta TCP 22 da qualsiasi . Puoi scegliere un intervallo IP di origine più restrittivo per questa regola. della Ad esempio, puoi specificare solo gli intervalli IP del sistema da cui avviare sessioni SSH. Questo esempio utilizza il tag target allow-ssh.

  • fw-allow-health-check. Una regola in entrata, applicabile alle istanze che vengono con bilanciamento del carico, che consente tutto il traffico TCP da Google Cloud sistemi di controllo dell'integrità (in 130.211.0.0/22 e 35.191.0.0/16). Questo utilizza il tag di destinazione allow-health-check.

  • fw-allow-proxy-only-subnet. Una regola in entrata che consente le connessioni dal una subnet solo proxy per raggiungere i backend.

Senza queste regole firewall, il campo di blocco predefinito una regola in entrata blocca in entrata alle istanze di backend.

I tag target e definire le istanze di backend. Senza i tag di destinazione, il firewall e vengono applicate a tutte le istanze di backend nella rete VPC. Quando crei le VM di backend, assicurati di Includere i tag di destinazione specificati, come illustrato in Creare un'istanza gestita. .

Console

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

    Vai a Criteri firewall

  2. Fai clic su Crea regola firewall per creare la regola in modo da consentire le richieste in entrata e le connessioni SSH. Completa i seguenti campi:

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

  4. Fai clic su Crea regola firewall una seconda volta per creare la regola che consente Controlli di integrità di Google Cloud:

    • Nome: fw-allow-health-check
    • Rete: lb-network
    • Direzione del traffico: in entrata
    • Azione in caso di corrispondenza: Consenti
    • Target: tag di destinazione specificati
    • Tag di destinazione: allow-health-check
    • Filtro di origine: Intervalli IPv4
    • Intervalli IPv4 di origine: 130.211.0.0/22 e 35.191.0.0/16
    • Protocolli e porte:

      • Scegli Protocolli e porte specificati.
      • Seleziona la casella di controllo TCP, quindi inserisci 80 per il numero di porta.

      Come best practice, limita questa regola ai soli protocolli e porte che corrispondano a quelli usati dal controllo di integrità. Se utilizzi tcp:80 per il protocollo e la porta, Google Cloud può utilizzare HTTP sulla porta 80 per contattare le VM, ma non è possibile utilizzare HTTPS porta 443 per contattarlo.

  5. Fai clic su Crea.

  6. Fai clic su Crea regola firewall una terza volta per creare la regola che consente ai server proxy del bilanciatore del carico per la connessione ai backend:

    • Nome: fw-allow-proxy-only-subnet
    • Rete: lb-network
    • Direzione del traffico: in entrata
    • Azione in caso di corrispondenza: Consenti
    • Target: tag di destinazione specificati
    • Tag di destinazione: allow-proxy-only-subnet
    • Filtro di origine: Intervalli IPv4
    • Intervalli IPv4 di origine: 10.129.0.0/23
    • Protocolli e porte:
        .
      • Scegli Protocolli e porte specificati.
      • Seleziona la casella di controllo TCP, quindi inserisci 80 per numero di porta.
  7. Fai clic su Crea.

gcloud

  1. Crea la regola firewall fw-allow-ssh per consentire la connettività SSH a VM con il tag di rete allow-ssh. Se ometti source-ranges, Google Cloud interpreta la regola nel significato che Fonte.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  2. Crea la regola fw-allow-health-check per consentire a Google Cloud e controlli di integrità. Questo esempio consente tutto il traffico TCP proveniente dal controllo di integrità i probatori; ma puoi configurare un insieme più ristretto di porte e alle esigenze aziendali.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --target-tags=allow-health-check \
        --rules=tcp:80
    
  3. Crea la regola fw-allow-proxy-only-subnet per consentire a Envoy della regione per connettersi ai tuoi backend. Imposta --source-ranges su di intervalli allocati della subnet solo proxy: in questo esempio, 10.129.0.0/23.

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.129.0.0/23 \
        --target-tags=allow-proxy-only-subnet \
        --rules=tcp:80
    

Prenota l'indirizzo IP del bilanciatore del carico

Prenota un indirizzo IP statico per il 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. Per Network Service Tier (Livello di servizio di rete), seleziona Standard.

  4. Per Versione IP, seleziona IPv4. Gli indirizzi IPv6 non sono supportati.

  5. In Tipo, seleziona A livello di regione.

  6. In Regione, seleziona REGION_A.

  7. Lascia l'opzione Allegato a impostata su Nessuno. Dopo aver creato bilanciatore del carico, questo indirizzo IP è collegato la regola di forwarding del bilanciatore.

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

gcloud

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

    gcloud compute addresses create ADDRESS_NAME  \
        --region=REGION_A \
        --network-tier=STANDARD
    

    Sostituisci ADDRESS_NAME con il nome che vuoi chiamare .

  2. Per visualizzare il risultato: Usa il comando gcloud compute addresses describe:

    gcloud compute addresses describe ADDRESS_NAME
    

Creare un gruppo di istanze gestite

Questa sezione mostra come creare due backend di gruppo di istanze gestite nella regione A per il bilanciatore del carico. Il gruppo di istanze gestite fornisce istanze VM che eseguono i server Apache backend per questo esempio. In genere, un bilanciatore del carico di rete proxy esterno regionale non viene utilizzato per il traffico HTTP, ma Il software Apache è comunemente usato per i test.

Console

Crea un modello di istanza

  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 ext-reg-tcp-proxy-backend-template.

  4. Assicurati che il disco di avvio sia impostato su un'immagine Debian, ad esempio Debian GNU/Linux 10 (stretch). Queste istruzioni utilizzano comandi sono disponibili solo su Debian, come apt-get.

  5. Fai clic su Opzioni avanzate.

  6. Fai clic su Networking e configura i seguenti campi:

    1. In Tag di rete, inserisci allow-ssh, allow-health-check, e allow-proxy-only-subnet.
    2. In Interfacce di rete, seleziona quanto segue:
        .
      • Rete: lb-network
      • Subnet: backend-subnet
  7. 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
     
  8. Fai clic su Crea.

Crea un gruppo di istanze gestite

  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). Per ulteriori informazioni, consulta Creare un gruppo di istanze gestite con dischi stateful.

  4. In Nome, inserisci mig-a.

  5. Per Località, seleziona Zona singola.

  6. In Regione, seleziona REGION_A.

  7. In Zona, seleziona ZONE_A.

  8. In Modello di istanza, seleziona ext-reg-tcp-proxy-backend-template.

  9. Specifica il numero di istanze che vuoi creare nel gruppo.

    Per questo esempio, specifica le seguenti opzioni per la Scalabilità automatica:

    • In Modalità di scalabilità automatica, seleziona Off:do not autoscale.
    • In Numero massimo di istanze, inserisci 2.
  10. In Mappatura delle porte, fai clic su Aggiungi porta.

    • In Nome porta, inserisci tcp80.
    • In Numero porta, inserisci 80.
  11. Fai clic su Crea.

  12. Per creare un secondo gruppo di istanze gestite, ripeti il comando Crea un gruppo di istanze gestite e utilizza quanto segue. impostazioni:

    • Nome: mig-b
    • Zona: ZONE_B

    Mantieni invariate tutte le altre impostazioni.

gcloud

Le istruzioni per Google Cloud CLI riportate in questa guida presuppongono che tu stia utilizzando Cloud Shell o un altro ambiente con bash installato.

  1. Per creare un modello di istanza VM con un server HTTP, utilizza Comando gcloud compute instance-templates create:

    gcloud compute instance-templates create ext-reg-tcp-proxy-backend-template \
        --region=REGION_A \
        --network=lb-network \
        --subnet=backend-subnet \
        --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
        --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'
    
  2. Crea un gruppo di istanze gestite nella zona ZONE_A:

    gcloud compute instance-groups managed create mig-a \
        --zone=ZONE_A \
        --size=2 \
        --template=ext-reg-tcp-proxy-backend-template
    
  3. Crea un gruppo di istanze gestite nella zona ZONE_B:

    gcloud compute instance-groups managed create mig-b \
        --zone=ZONE_B \
        --size=2 \
        --template=ext-reg-tcp-proxy-backend-template
    

Configura 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. Per Tipo di bilanciatore del carico, seleziona Bilanciatore del carico di rete (TCP/UDP/SSL) e fai clic su Avanti.
  4. Per Proxy o passthrough, seleziona Bilanciatore del carico proxy e fai clic su Avanti.
  5. Per Pubblico o interno, seleziona Rivolto al pubblico (esterno) e fai clic su Avanti.
  6. Per Deployment globale o in una regione singola, seleziona Ideale per regione carichi di lavoro e fai clic su Avanti.
  7. Fai clic su Configura.

Configurazione di base

  1. In Nome, inserisci my-ext-tcp-lb.
  2. In Regione, seleziona REGION_A.
  3. In Rete, seleziona lb-network.

Riserva una subnet solo proxy

.
  1. Fai clic su Prenota subnet.
  2. In Nome, inserisci proxy-only-subnet.
  3. In Intervallo di indirizzi IP, inserisci 10.129.0.0/23.
  4. Fai clic su Aggiungi.

Configura i backend

  1. Fai clic su Configurazione backend.
  2. In Tipo di backend, seleziona Gruppo di istanze.
  3. Per Protocollo, seleziona TCP.
  4. In Porta denominata, inserisci tcp80.
  5. Configura il primo backend:
    1. Per Nuovo backend, seleziona il gruppo di istanze mig-a.
    2. In Numeri di porta, inserisci 80.
    3. Conserva i valori predefiniti rimanenti e fai clic su Fine.
  6. Configura il secondo backend:
    1. Fai clic su Aggiungi backend.
    2. Per Nuovo backend, seleziona il gruppo di istanze mig-b.
    3. In Numeri di porta, inserisci 80.
    4. Conserva i valori predefiniti rimanenti e fai clic su Fine.
  7. Configura il controllo di integrità:
    1. In Controllo di integrità, seleziona Crea un controllo di integrità.
    2. Imposta il nome del controllo di integrità su tcp-health-check.
    3. Per Protocollo, seleziona TCP.
    4. Imposta Porta su 80.
  8. Conserva i valori predefiniti rimanenti e fai clic su Salva.
  9. Nella console Google Cloud, verifica che sia presente un segno di spunta accanto a Configurazione backend. In caso contrario, assicurati di aver completato tutti i passaggi.

Configura il frontend

  1. Fai clic su Configurazione frontend.
  2. In Nome, inserisci ext-reg-tcp-forwarding-rule.
  3. In Subnet, seleziona backend-subnet.
  4. Per Indirizzo IP, seleziona l'indirizzo IP riservato in precedenza: LB_IP_ADDRESS
  5. In Numero porta, inserisci 110. Solo la regola di forwarding inoltra i pacchetti con una porta di destinazione corrispondente.
  6. In Protocollo proxy, seleziona Off perché il protocollo PROXY non funziona con il software Apache HTTP Server. Per ulteriori informazioni informazioni, consulta il protocollo PROXY.
  7. Fai clic su Fine.
  8. Nella console Google Cloud, verifica che sia presente un segno di spunta accanto a Configurazione frontend. In caso contrario, assicurati di aver completato tutti i passaggi precedenti.

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. utilizzato per creare il bilanciatore del carico.
  4. Fai clic su Crea.

gcloud

  1. Crea un controllo di integrità a livello di regione:

    gcloud compute health-checks create tcp tcp-health-check \
        --region=REGION_A \
        --use-serving-port
    
  2. Crea un servizio di backend:

    gcloud compute backend-services create ext-reg-tcp-proxy-bs \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=TCP \
        --port-name=tcp80 \
        --region=REGION_A \
        --health-checks=tcp-health-check \
        --health-checks-region=REGION_A
    
  3. Aggiungi gruppi di istanze al tuo servizio di backend:

    gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \
        --region=REGION_A \
        --instance-group=mig-a \
        --instance-group-zone=ZONE_A \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8
     
    gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \
        --region=REGION_A \
        --instance-group=mig-b \
        --instance-group-zone=ZONE_B \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8
    
  4. Crea un proxy TCP di destinazione:

    gcloud compute target-tcp-proxies create ext-reg-tcp-target-proxy \
        --backend-service=ext-reg-tcp-proxy-bs \
        --proxy-header=NONE \
        --region=REGION_A
    

    Se vuoi attivare l'intestazione del proxy, Impostalo su PROXY_V1 anziché su NONE. In questo esempio, non abilitare il protocollo PROXY perché non funziona con il software Apache HTTP Server. Per ulteriori informazioni informazioni, consulta il protocollo PROXY.

  5. Crea la regola di forwarding. Per --ports, specifica un singolo numero di porta da 1-65535. Questo esempio utilizza la porta 110. Solo la regola di forwarding inoltra i pacchetti con una porta di destinazione corrispondente.

    gcloud compute forwarding-rules create ext-reg-tcp-forwarding-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network=lb-network \
        --subnet=backend-subnet \
        --region=REGION_A \
        --target-tcp-proxy=ext-reg-tcp-target-proxy \
        --target-tcp-proxy-region=REGION_A \
        --address=ext-reg-tcp-ip-address \
        --ports=110
    

Testa il bilanciatore del carico

Ora che hai configurato il bilanciatore del carico, puoi testare l'invio all'indirizzo IP del bilanciatore del carico.

  1. Ottieni l'indirizzo IP del bilanciatore del carico.

    Per ottenere l'indirizzo IPv4, esegui questo comando:

    gcloud compute addresses describe ADDRESS_NAME
    
  2. Invia traffico al bilanciatore del carico eseguendo . Sostituisci LB_IP_ADDRESS con il tuo carico l'indirizzo IPv4 del bilanciatore.

    curl -m1 LB_IP_ADDRESS:9090
    

Opzioni di configurazione aggiuntive

Questa sezione espande l'esempio di configurazione per fornire alternative e e altre opzioni di configurazione. Tutte le attività sono facoltative. Puoi eseguirle in qualsiasi ordine.

Abilita affinità sessione

La configurazione di esempio crea un servizio di backend senza affinità sessione.

Queste procedure mostrano come aggiornare un servizio di backend per il carico di esempio creato in precedenza in modo che il servizio di backend utilizzi l'affinità IP client o affinità cookie generato.

Quando è abilitata l'affinità IP client, il bilanciatore del carico indirizza una particolare delle richieste del client alla stessa VM di backend in base a un hash creato l'indirizzo IP del client e l'indirizzo IP del bilanciatore del carico (l'indirizzo IP interno di una regola di forwarding interno).

Per abilitare l'affinità sessione IP client, completa i seguenti passaggi.

Console

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

    Vai a Bilanciamento del carico

  2. Fai clic su Backend.

  3. Fai clic su ext-reg-tcp-proxy-bs (il nome del servizio di backend creato per questo esempio) e fai clic su Modifica.

  4. Nella pagina Dettagli servizio di backend, fai clic su Avanzate. configurazione.

  5. In Affinità sessione, seleziona IP client.

  6. Fai clic su Aggiorna.

gcloud

Per aggiornare il servizio di backend ext-reg-tcp-proxy-bs e specificare il client Affinità sessione IP, usa gcloud compute backend-services update ext-reg-tcp-proxy-bs :

gcloud compute backend-services update ext-reg-tcp-proxy-bs \
    --region=REGION_A \
    --session-affinity=CLIENT_IP

Passaggi successivi