Questa pagina mostra come eseguire il deployment di un bilanciatore del carico delle applicazioni interno tra regioni per bilanciare il carico del traffico verso gli endpoint di rete on-premise o in altri cloud pubblici raggiungibili mediante la connettività ibrida.
Se non lo hai già fatto, rivedi la panoramica sui NEG di connettività ibrida per comprendere i requisiti di rete per configurare il bilanciamento del carico ibrido.
Panoramica della configurazione
L'esempio configura un bilanciatore del carico delle applicazioni interno tra regioni per backend NEG misti a livello di zona e di connettività ibrida, come mostrato nella figura seguente:
Devi configurare la connettività ibrida prima di impostare un deployment di bilanciamento del carico ibrido. A seconda della scelta del prodotto di connettività ibrida, utilizza Cloud VPN o Cloud Interconnect (Dedicato o Partner).
Configura una risorsa del certificato SSL
Crea una risorsa del certificato SSL del Gestore certificati come descritto di seguito:
- Esegui il deployment di un certificato autogestito globale.
- Crea un certificato gestito da Google emesso dalla tua istanza di Certificate Authority Service.
- Crea un certificato gestito da Google con autorizzazione DNS.
Ti consigliamo di utilizzare un certificato gestito da Google.
Autorizzazioni
Per configurare il bilanciamento del carico ibrido, devi disporre delle seguenti autorizzazioni:
Su Google Cloud
- Autorizzazioni per stabilire la connettività ibrida tra Google Cloud e il tuo ambiente on-premise o altri ambienti cloud. Per l'elenco delle autorizzazioni necessarie, consulta la documentazione del prodotto Network Connectivity pertinente.
- Autorizzazioni per creare un NEG di connettività ibrida e il bilanciatore del carico.
Il ruolo Amministratore di bilanciamento del carico di Compute (
roles/compute.loadBalancerAdmin
) contiene le autorizzazioni necessarie per eseguire le attività descritte in questa guida.
Nel tuo ambiente on-premise o in un altro ambiente cloud non Google Cloud
- Autorizzazioni per configurare endpoint di rete che consentono ai servizi nel tuo ambiente on-premise o in altri ambienti cloud di essere raggiungibili da Google Cloud utilizzando una combinazione di
IP:Port
. Per ulteriori informazioni, contatta l'amministratore di rete del tuo ambiente. - Autorizzazioni per creare regole firewall nel tuo ambiente on-premise o in altri ambienti cloud, per consentire ai probe di controllo di integrità di Google di raggiungere gli endpoint.
- Autorizzazioni per configurare endpoint di rete che consentono ai servizi nel tuo ambiente on-premise o in altri ambienti cloud di essere raggiungibili da Google Cloud utilizzando una combinazione di
Inoltre, per completare le istruzioni in questa pagina, devi creare un NEG di connettività ibrida, un bilanciatore del carico e NEG di zona (con relativi endpoint) per fungere da backend basati su Google Cloud per il bilanciatore del carico.
Devi essere un Proprietario o un Editor del progetto oppure dovresti avere i seguenti ruoli IAM di Compute Engine.
Attività | Ruolo richiesto |
---|---|
Crea 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 ) |
Creare istanze | Amministratore istanze Compute
(roles/compute.instanceAdmin ) |
Stabilisci la connettività ibrida
Il tuo ambiente Google Cloud e on-premise o altri ambienti cloud devono essere connessi tramite connettività ibrida utilizzando collegamenti VLAN per Cloud Interconnect o tunnel Cloud VPN con il router Cloud. Ti consigliamo di utilizzare una connessione ad alta disponibilità.
Un router Cloud abilitato con il routing dinamico globale apprende l'endpoint specifico tramite il protocollo BGP (Border Gateway Protocol) e lo programma nella rete VPC di Google Cloud. Il routing dinamico a livello di regione non è supportato. Anche le route statiche non sono supportate.
La rete VPC che utilizzi per configurare Cloud Interconnect o Cloud VPN è la stessa che utilizzi per configurare il deployment del bilanciamento del carico ibrido. Assicurati che gli intervalli CIDR della subnet della tua rete VPC non siano in conflitto con gli intervalli CIDR remoti. Quando gli indirizzi IP si sovrappongono, le route di subnet hanno la priorità sulla connettività remota.
Per istruzioni, consulta la seguente documentazione:
Configura un ambiente esterno a Google Cloud
Completa i seguenti passaggi per configurare il tuo ambiente on-premise o un altro ambiente cloud per il bilanciamento del carico ibrido:
- Configura gli endpoint di rete per esporre servizi on-premise su
Google Cloud (
IP:Port
). - Configura le regole firewall sul tuo ambiente on-premise o su altri ambienti cloud.
- Configura il router Cloud per pubblicizzare determinate route richieste al tuo ambiente privato.
Configura gli endpoint di rete
Dopo aver impostato la connettività ibrida, configurerai uno o più endpoint di rete all'interno del tuo ambiente on-premise o di altri ambienti cloud raggiungibili tramite Cloud Interconnect o Cloud VPN utilizzando una combinazione IP:port
. Questa combinazione IP:port
è configurata come uno o più endpoint per il NEG di connettività ibrida creato in Google Cloud più avanti in questo processo.
Se sono presenti più percorsi per l'endpoint IP, il routing segue il comportamento descritto nella panoramica sul router Cloud.
Configura le regole firewall
Le seguenti regole firewall devono essere create nel tuo ambiente on-premise o in un altro ambiente cloud:
- Crea una regola firewall di autorizzazione in entrata in ingresso in ambienti on-premise o in altri ambienti cloud per consentire al traffico proveniente dalla subnet solo proxy della regione di raggiungere gli endpoint.
La lista consentita degli intervalli di probe del controllo di integrità di Google non è necessaria per i NEG ibridi. Tuttavia, se utilizzi una combinazione di NEG ibridi e di zona in un unico servizio di backend, devi inserire nella lista consentita gli intervalli del probe del controllo di integrità di Google per i NEG di zona.
Pubblicizza route
Configura il router Cloud per pubblicizzare i seguenti intervalli IP personalizzati nel tuo ambiente on-premise o in un altro ambiente cloud:
- L'intervallo della subnet solo proxy della regione.
configura l'ambiente Google Cloud
Per i passaggi seguenti, assicurati di utilizzare la stessa rete VPC (chiamata NETWORK
in questa procedura) che è stata utilizzata per configurare la connettività ibrida tra gli ambienti.
Inoltre, assicurati che le regioni utilizzate
(chiamate REGION_A
e
REGION_B
in questa procedura) siano le stesse utilizzate per creare il tunnel Cloud VPN o i collegamenti VLAN per Cloud Interconnect.
GEO
per instradare il traffico client al VIP del bilanciatore del carico nella regione più vicina al client durante le interruzioni di servizio a livello di regione.
Configura le subnet di backend
Utilizza questa subnet per creare backend NEG a livello di zona del bilanciatore del carico:
Console
Nella console Google Cloud, vai alla pagina Reti VPC.
Vai alla rete utilizzata per configurare la connettività ibrida tra gli ambienti.
Nella sezione Subnet:
- Imposta Modalità di creazione subnet su Personalizzata.
- Nella sezione Nuova subnet, inserisci le informazioni seguenti:
- Specifica un nome per la subnet.
- Seleziona una regione: REGION_A
- Inserisci un intervallo di indirizzi IP.
- Fai clic su Fine.
Fai clic su Crea.
Per aggiungere altre subnet in regioni diverse, fai clic su Aggiungi subnet e ripeti i passaggi precedenti per REGION_B
gcloud
Crea subnet nella rete utilizzata per configurare la connettività ibrida tra gli ambienti.
gcloud compute networks subnets create SUBNET_A \ --network=NETWORK \ --range=LB_SUBNET_RANGE1 \ --region=REGION_A
gcloud compute networks subnets create SUBNET_B \ --network=NETWORK \ --range=LB_SUBNET_RANGE2 \ --region=REGION_B
API
Invia una richiesta POST
al metodo subnetworks.insert
.
Sostituisci PROJECT_ID
con l'ID progetto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks { "name": "SUBNET_A", "network": "projects/PROJECT_ID/global/networks/NETWORK", "ipCidrRange": "LB_SUBNET_RANGE1", "region": "projects/PROJECT_ID/regions/REGION_A", }
Invia una richiesta POST
al metodo subnetworks.insert
.
Sostituisci PROJECT_ID
con l'ID progetto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks { "name": "SUBNET_B", "network": "projects/PROJECT_ID/global/networks/NETWORK", "ipCidrRange": "LB_SUBNET_RANGE2", "region": "projects/PROJECT_ID/regions/REGION_B", }
Sostituisci quanto segue:
SUBNET_A
eSUBNET_B
: il nome delle subnetLB_SUBNET_RANGE1
eLB_SUBNET_RANGE2
: l'intervallo di indirizzi IP per le subnetREGION_A
eREGION_B
: le regioni in cui hai configurato il bilanciatore del carico
Configura la subnet solo proxy
Una subnet solo proxy fornisce un insieme di indirizzi IP che Google 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 è utilizzata da tutti i bilanciatori del carico a livello di regione basati su Envoy nella stessa regione della rete VPC. Può esistere una sola subnet solo proxy attiva per uno scopo specifico, per regione e per rete.
Console
Se utilizzi la console Google Cloud, puoi attendere e creare la subnet solo proxy in un secondo momento sulla pagina Bilanciamento del carico.
Se vuoi creare subito una subnet solo proxy, segui questi passaggi:
Nella console Google Cloud, vai alla pagina Reti VPC.
- Fai clic sul nome della rete VPC.
- Nella scheda Subnet, fai clic su Aggiungi subnet.
- Specifica un nome per la subnet solo proxy.
- Nell'elenco Regione, seleziona REGION_A.
- Nell'elenco Scopo, seleziona Proxy gestito tra regioni.
- Nel campo Intervallo di indirizzi IP, inserisci
10.129.0.0/23
. - Fai clic su Aggiungi.
Crea la subnet solo proxy in REGION_B
- Fai clic su Aggiungi subnet.
- Specifica un nome per la subnet solo proxy.
- Nell'elenco Regione, seleziona REGION_B.
- Nell'elenco Scopo, seleziona Proxy gestito tra regioni.
- Nel campo Intervallo di indirizzi IP, inserisci
10.130.0.0/23
. - Fai clic su Aggiungi.
gcloud
Crea le subnet solo proxy con il
comando gcloud compute networks subnets create
.
gcloud compute networks subnets create PROXY_SN_A \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION_A \ --network=NETWORK \ --range=PROXY_ONLY_SUBNET_RANGE1
gcloud compute networks subnets create PROXY_SN_B \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION_B \ --network=NETWORK \ --range=PROXY_ONLY_SUBNET_RANGE2
Sostituisci quanto segue:
PROXY_SN_A
ePROXY_SN_B
: il nome delle subnet solo proxyPROXY_ONLY_SUBNET_RANGE1
ePROXY_ONLY_SUBNET_RANGE2
: l'intervallo di indirizzi IP per le subnet solo proxyREGION_A
eREGION_B
: le regioni in cui hai configurato il bilanciatore del carico
API
Crea le subnet solo proxy con il
metodo subnetworks.insert
, sostituendo
PROJECT_ID
con il tuo ID progetto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks { "name": "PROXY_SN_A", "ipCidrRange": "PROXY_ONLY_SUBNET_RANGE1", "network": "projects/PROJECT_ID/global/networks/NETWORK", "region": "projects/PROJECT_ID/regions/REGION_A", "purpose": "GLOBAL_MANAGED_PROXY", "role": "ACTIVE" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks { "name": " PROXY_SN_B", "ipCidrRange": "PROXY_ONLY_SUBNET_RANGE2", "network": "projects/PROJECT_ID/global/networks/NETWORK", "region": "projects/PROJECT_ID/regions/REGION_B", "purpose": "GLOBAL_MANAGED_PROXY", "role": "ACTIVE" }
Crea regole firewall
In questo esempio, creerai le seguenti regole firewall per i backend di NEG a livello di zona su Google Cloud:
fw-allow-health-check
: una regola in entrata, applicabile alle istanze con bilanciamento del carico, che consente il traffico dai sistemi di controllo di integrità di Google Cloud (130.211.0.0/22
e35.191.0.0/16
). In questo esempio viene utilizzato il tag di destinazioneallow-health-check
per identificare i NEG di zona a cui deve essere applicato.fw-allow-ssh
: una regola in entrata che consente la connettività SSH in entrata sulla porta TCP 22 da qualsiasi indirizzo. Puoi scegliere un intervallo IP di origine più restrittivo per questa regola; ad esempio, puoi specificare solo gli intervalli IP dei sistemi da cui avvii le sessioni SSH. In questo esempio viene utilizzato il tag di destinazioneallow-ssh
per identificare le istanze di macchine virtuali (VM) a cui deve essere applicato.fw-allow-proxy-only-subnet
: una regola in entrata che consente alle connessioni dalla subnet solo proxy di raggiungere i backend NEG a livello di zona.
Console
Nella console Google Cloud, vai alla pagina Criteri firewall.
Fai clic su Crea regola firewall per creare la regola che consenta il traffico dai probe del controllo di integrità:
- Inserisci un Nome pari a
fw-allow-health-check
. - In Rete, seleziona NETWORK.
- In Target, seleziona Tag di destinazione specificati.
- Compila il campo Tag di destinazione con
allow-health-check
. - Imposta Filtro di origine su Intervalli IPv4.
- Imposta Intervalli IPv4 di origine su
130.211.0.0/22
e35.191.0.0/16
. - In Protocolli e porte, seleziona Protocolli e porte specificati.
- Seleziona TCP, quindi inserisci
80
come numero di porta. - Fai clic su Crea.
- Inserisci un Nome pari a
Fai di nuovo clic su Crea regola firewall per creare la regola che consenta le connessioni SSH in entrata:
- Nome:
fw-allow-ssh
- Rete: NETWORK
- Priorità:
1000
- 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 TCP, quindi inserisci
22
come numero di porta. - Fai clic su Crea.
- Nome:
Fai di nuovo clic su Crea regola firewall per creare la regola che consenta le connessioni in entrata dalla subnet solo proxy:
- Nome:
fw-allow-proxy-only-subnet
- Rete: NETWORK
- Priorità:
1000
- 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: PROXY_ONLY_SUBNET_RANGE1 e PROXY_ONLY_SUBNET_RANGE2
- Protocolli e porte: scegli Protocolli e porte specificati
- Seleziona TCP, quindi inserisci
80
come numero di porta. - Fai clic su Crea.
- Nome:
gcloud
Crea la regola
fw-allow-health-check-and-proxy
per consentire ai controlli di integrità di Google Cloud di raggiungere le istanze di backend sulla porta TCP80
:gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80
Crea la regola firewall
fw-allow-ssh
per consentire la connettività SSH alle VM con il tag di reteallow-ssh
. Se omettisource-ranges
, Google Cloud interpreta la regola in modo che indichi qualsiasi origine.gcloud compute firewall-rules create fw-allow-ssh \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Crea una regola firewall di autorizzazione in entrata per la subnet solo proxy per consentire al bilanciatore del carico di comunicare con le istanze di backend sulla porta TCP
80
:gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-proxy-only-subnet \ --source-ranges=PROXY_ONLY_SUBNET_RANGE1,PROXY_ONLY_SUBNET_RANGE2 \ --rules=tcp:80
Configura il NEG a livello di zona
Per i backend basati su Google Cloud, ti consigliamo di configurare più NEG di zona nella stessa regione in cui hai configurato la connettività ibrida.
Per questo esempio, configura un NEG a livello di zona (con endpoint di tipo GCE_VM_IP_PORT
)
nella regione REGION_A
. Innanzitutto crea le VM nella zona ZONE_A
. Quindi crea un NEG a livello di zona nella zona ZONE_A
e aggiungi al NEG gli endpoint di rete delle VM.
Per supportare l'alta disponibilità, configura un NEG di zona simile nella regione REGION_B
. Se i backend in un'area geografica
non sono disponibili, il traffico non viene eseguito nell'altra.
Crea VM
Console
Nella console Google Cloud, vai alla pagina Istanze VM.
Ripeti i passaggi da 3 a 8 per ogni VM, utilizzando le seguenti combinazioni di nome e zona.
- Nome: di
vm-a1
- Zona: ZONE_A nella regione REGION_A
- Subnet: SUBNET_A
- Nome: di
vm-b1
- Zona: ZONE_B nella regione REGION_B
- Subnet: SUBNET_B
- Nome: di
Fai clic su Crea istanza.
Imposta il nome come indicato nel passaggio precedente.
Per Regione, scegli come indicato nel passaggio precedente.
Per Zona, scegli come indicato nel passaggio precedente.
Nella sezione Disco di avvio, assicurati che il sistema operativo Debian e la versione 10 (buster) siano selezionati come opzioni del disco di avvio. Se necessario, fai clic su Scegli per cambiare l'immagine.
Nella sezione Opzioni avanzate, espandi Networking, quindi segui questi passaggi:
- Aggiungi i seguenti tag di rete:
allow-ssh
,allow-health-check
eallow-proxy-only-subnet
. - Nella sezione Interfacce di rete, fai clic su Aggiungi un'interfaccia di rete per apportare le seguenti modifiche, quindi fai clic su Fine:
- Rete: NETWORK
- Subnet: come indicato nel passaggio precedente.
- IP interno principale: Temporaneo (automatico)
- IP esterno: Temporaneo
Espandi Gestione. Nel campo Automazione, copia e incolla i seguenti contenuti dello script. I contenuti dello script sono identici per tutte le VM:
#! /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
- Aggiungi i seguenti tag di rete:
Fai clic su Crea.
gcloud
Crea le VM eseguendo questo comando, utilizzando queste combinazioni per il nome della VM e la relativa zona. I contenuti dello script sono identici per entrambe le VM.
gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --subnet=LB_SUBNET_NAME \ --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'
VM_NAME
divm-a1
- La zona
GCP_NEG_ZONE
comeZONE_A
nella regioneREGION_A
- La subnet
LB_SUBNET_NAME
comeSUBNET_A
- La zona
VM_NAME
divm-b1
- Zona
GCP_NEG_ZONE
comeZONE_B
nella regioneREGION_B
- Subnet
LB_SUBNET_NAME
comeSUBNET_B
- Zona
Crea il NEG a livello di zona
Console
Per creare un gruppo di endpoint di rete a livello di zona:
Nella console Google Cloud, vai alla pagina Gruppi di endpoint di rete.
Ripeti i passaggi da 3 a 8 per ogni NEG a livello di zona, utilizzando le seguenti combinazioni di nome e zona:
- Nome:
neg-1
- Zona: ZONE_A nella regione REGION_A
- Subnet: SUBNET_A
- Nome:
neg-2
- Zona: ZONE_B nella regione REGION_B
- Subnet: SUBNET_B
- Nome:
Fai clic su Crea gruppo di endpoint di rete.
Imposta il nome come indicato nel passaggio precedente.
Seleziona Tipo di gruppo di endpoint di rete: Gruppo di endpoint di rete (a livello di zona).
Seleziona la Rete: NETWORK
Seleziona la Subnet come indicato nel passaggio precedente.
Seleziona la Zona come indicato nel passaggio precedente.
Inserisci la porta predefinita:
80
.Fai clic su Crea.
Aggiungi endpoint al NEG a livello di zona:
Nella console Google Cloud, vai alla pagina Gruppi di endpoint di rete.
Fai clic sul nome del gruppo di endpoint di rete creato nel passaggio precedente. Viene visualizzata la pagina Dettagli del gruppo di endpoint di rete.
Nella sezione Endpoint di rete in questo gruppo, fai clic su Aggiungi endpoint di rete. Viene visualizzata la pagina Aggiungi endpoint di rete.
Seleziona un'istanza VM per aggiungere i relativi indirizzi IP interni come endpoint di rete. Nella sezione Interfaccia di rete, vengono visualizzati il nome, la zona e la subnet della VM.
Inserisci l'indirizzo IP del nuovo endpoint di rete.
Seleziona il Tipo di porta.
- Se selezioni Predefinita, l'endpoint utilizza la porta predefinita
80
per tutti gli endpoint nel gruppo di endpoint di rete. Questo è sufficiente per il nostro esempio perché il server Apache gestisce le richieste sulla porta80
. - Se selezioni Personalizzato, inserisci il Numero porta dell'endpoint da utilizzare.
- Se selezioni Predefinita, l'endpoint utilizza la porta predefinita
Per aggiungere altri endpoint, fai clic su Aggiungi endpoint di rete e ripeti i passaggi precedenti.
Dopo aver aggiunto tutti gli endpoint, fai clic su Crea.
gcloud
Crea NEG a livello di zona (con
GCE_VM_IP_PORT
endpoint) utilizzando le combinazioni di nome, zona e subnet. Utilizza il comandogcloud compute network-endpoint-groups create
.gcloud compute network-endpoint-groups create GCP_NEG_NAME \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=GCP_NEG_ZONE \ --network=NETWORK \ --subnet=LB_SUBNET_NAME
- Nome:
neg-1
- Zona
GCP_NEG_ZONE
:ZONE_A
nella regioneREGION_A
- Subnet
LB_SUBNET_NAME
:SUBNET_A
- Zona
- Nome:
neg-2
- Zona
GCP_NEG_ZONE
:ZONE_B
nella regioneREGION_B
- Subnet
LB_SUBNET_NAME
:SUBNET_B
- Zona
Puoi specificare una porta utilizzando l'opzione
--default-port
durante la creazione del NEG oppure specificare un numero di porta per ogni endpoint, come mostrato nel passaggio successivo.- Nome:
Aggiungi endpoint a
neg1
eneg2
.gcloud compute network-endpoint-groups update neg1 \ --zone=ZONE_A \ --add-endpoint='instance=vm-a1,port=80'
gcloud compute network-endpoint-groups update neg2 \ --zone=ZONE_B \ --add-endpoint='instance=vm-b1,port=80'
Configura il NEG di connettività ibrida
Quando crei il NEG, utilizza una zona che minimizzi la distanza geografica tra Google Cloud e il tuo ambiente on-premise o un altro ambiente cloud. Ad esempio, se ospiti un servizio in un ambiente on-premise a Francoforte, in Germania, puoi specificare la zona Google Cloud europe-west3-a
quando crei il NEG.
Inoltre, se utilizzi Cloud Interconnect, la zona utilizzata per creare il NEG si trova nella stessa regione in cui è stato configurato il collegamento Cloud Interconnect.
I NEG ibridi supportano solo i controlli di integrità Envoy distribuiti.
Console
Per creare un gruppo di endpoint di rete con connettività ibrida:
Nella console Google Cloud, vai alla pagina Gruppi di endpoint di rete.
Fai clic su Crea gruppo di endpoint di rete.
Ripeti i passaggi da 4 a 9 per ogni NEG ibrido, utilizzando le seguenti combinazioni di nome e zona.
- Nome ON_PREM_NEG_NAME:
hybrid-1
- Zona: ON_PREM_NEG_ZONE1
- Subnet: SUBNET_A
- Nome ON_PREM_NEG_NAME:
hybrid-2
- Zona: ON_PREM_NEG_ZONE2
- Subnet: SUBNET_B
- Nome ON_PREM_NEG_NAME:
Imposta il nome come indicato nel passaggio precedente.
Seleziona Tipo di gruppo di endpoint di rete: Gruppo di endpoint di rete con connettività ibrida (a livello di zona).
Seleziona la Rete: NETWORK
Per Subnet, scegli come indicato nel passaggio precedente.
Per Zona, scegli come indicato nel passaggio precedente.
Inserisci la Porta predefinita.
Fai clic su Crea.
Aggiungi endpoint al NEG di connettività ibrida:
Nella console Google Cloud, vai alla pagina Gruppi di endpoint di rete.
Fai clic sul nome del gruppo di endpoint di rete creato nel passaggio precedente. Viene visualizzata la pagina Dettagli gruppo di endpoint di rete.
Nella sezione Endpoint di rete in questo gruppo, fai clic su Aggiungi endpoint di rete. Viene visualizzata la pagina Aggiungi endpoint di rete.
Inserisci l'indirizzo IP del nuovo endpoint di rete.
Seleziona il Tipo di porta.
- Se selezioni Predefinita, l'endpoint utilizza la porta predefinita per tutti gli endpoint nel gruppo di endpoint di rete.
- Se selezioni Personalizzato, puoi inserire un Numero di porta diverso da utilizzare per l'endpoint.
Per aggiungere altri endpoint, fai clic su Aggiungi endpoint di rete e ripeti i passaggi precedenti.
Dopo aver aggiunto tutti gli endpoint non Google Cloud, fai clic su Crea.
gcloud
Crea un NEG di connettività ibrida che utilizza le seguenti combinazioni di nomi. Utilizza il comando
gcloud compute network-endpoint-groups create
.gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ON_PREM_NEG_ZONE \ --network=NETWORK
- Nome
ON_PREM_NEG_NAME
:hybrid-1
- Zona
ON_PREM_NEG_ZONE
:ON_PREM_NEG_ZONE1
- Zona
- Nome
ON_PREM_NEG_NAME
:hybrid-2
- Zona
GCP_NEG_ZONE
:ON_PREM_NEG_ZONE2
- Zona
- Nome
Aggiungi l'endpoint VM di backend on-premise a
ON_PREM_NEG_NAME
:gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \ --zone=ON_PREM_NEG_ZONE \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
Puoi utilizzare questo comando per aggiungere gli endpoint di rete configurati in precedenza on-premise o nel tuo ambiente cloud.
Ripeti --add-endpoint
tutte le volte necessarie.
configura il bilanciatore del carico
Console
gcloud
Definisci il controllo di integrità HTTP con il comando
gcloud compute health-checks create http
.gcloud compute health-checks create http gil7-basic-check \ --use-serving-port \ --global
Crea il servizio di backend e abilita il logging con il comando
gcloud compute backend-services create
.gcloud compute backend-services create BACKEND_SERVICE \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --enable-logging \ --logging-sample-rate=1.0 \ --health-checks=gil7-basic-check \ --global-health-checks \ --global
Aggiungi backend al servizio di backend con il comando
gcloud compute backend-services add-backend
.gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=neg1 \ --network-endpoint-group-zone=ZONE_A \ --network-endpoint-group=neg2 \ --network-endpoint-group-zone=ZONE_B
Per maggiori dettagli sulla configurazione della modalità di bilanciamento, consulta la documentazione di gcloud CLI per il flag
--max-rate-per-endpoint
.Aggiungi i NEG ibridi come backend al servizio di backend.
gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=hybrid1 \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE1 \ --network-endpoint-group=hybrid2 \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE2 \
Per maggiori dettagli sulla configurazione della modalità di bilanciamento, consulta la documentazione di gcloud CLI per il parametro
--max-rate-per-endpoint
.Crea la mappa degli URL con il comando
gcloud compute url-maps create
.gcloud compute url-maps create gil7-map \ --default-service=BACKEND_SERVICE \ --global
Crea il proxy di destinazione.
Per HTTP:
Crea il proxy di destinazione con il comando
gcloud compute target-http-proxies create
.gcloud compute target-http-proxies create gil7-http-proxy \ --url-map=gil7-map \ --global
Per HTTPS:
Per creare un certificato gestito da Google, consulta la seguente documentazione:
- Crea un certificato gestito da Google emesso dalla tua istanza di Certificate Authority Service.
- Crea un certificato gestito da Google con autorizzazione DNS.
Dopo aver creato il certificato gestito da Google, collegalo al proxy di destinazione. Le mappe di certificati non sono supportate dai bilanciatori del carico delle applicazioni interni tra regioni.
Per creare un certificato autogestito, consulta la seguente documentazione:
Assegna i percorsi dei file ai nomi delle variabili.
export LB_CERT=PATH_TO_PEM_FORMATTED_FILE
export LB_PRIVATE_KEY=PATH_TO_PEM_LB_PRIVATE_FILE
Crea un certificato SSL per tutte le regioni utilizzando il comando
gcloud certificate-manager certificates create
.gcloud certificate-manager certificates create gilb-certificate \ --private-key-file=$LB_CERT \ --certificate-file=$LB_PRIVATE_KEY \ --scope=all-regions
Utilizza il certificato SSL per creare un proxy di destinazione con il comando
gcloud compute target-https-proxies create
gcloud compute target-https-proxies create gil7-https-proxy \ --url-map=gil7-map \ --certificate-manager-certificates=gilb-certificate \ --global
Crea due regole di forwarding, una con un VIP
IP_ADDRESS1
nella regioneREGION_A
e un'altra con un VIPIP_ADDRESS2
nella regioneREGION_B
. Per l'indirizzo IP della regola di forwarding, utilizza l'intervallo di indirizzi IPLB_SUBNET_RANGE1
oLB_SUBNET_RANGE2
. Se provi a utilizzare la subnet solo proxy, la creazione della regola di forwarding non va a buon fine.Per le reti personalizzate, devi fare riferimento alla subnet nella regola di forwarding. Tieni presente che si tratta della subnet della VM, non del proxy.
Per HTTP:
Utilizza il comando
gcloud compute forwarding-rules create
con i flag corretti.gcloud compute forwarding-rules create FWRULE_A \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_A \ --subnet-region=REGION_A \ --address=IP_ADDRESS1 \ --ports=80 \ --target-http-proxy=gil7-http-proxy \ --global
gcloud compute forwarding-rules create FWRULE_B \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_B \ --subnet-region=REGION_B \ --address=IP_ADDRESS2 \ --ports=80 \ --target-http-proxy=gil7-http-proxy \ --global
Per HTTPS:
Crea la regola di forwarding con il comando
gcloud compute forwarding-rules create
con i flag corretti.gcloud compute forwarding-rules create FWRULE_A \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_A \ --subnet-region=REGION_A \ --address=IP_ADDRESS1 \ --ports=443 \ --target-https-proxy=gil7-https-proxy \ --global
gcloud compute forwarding-rules create FWRULE_B \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_B \ --subnet-region=REGION_B \ --address=IP_ADDRESS2 \ --ports=443 \ --target-https-proxy=gil7-https-proxy \ --global
Connetti il tuo dominio al bilanciatore del carico
Dopo aver creato il bilanciatore del carico, prendi nota dell'indirizzo IP associato al bilanciatore del carico, ad esempio IP_ADDRESS1
e IP_ADDRESS2
.
Per puntare il tuo dominio al bilanciatore del carico, crea un record A
utilizzando Cloud DNS o il servizio di registrazione del dominio. Se hai aggiunto più domini al certificato SSL, devi aggiungere un record A
per ciascuno, tutti puntati all'indirizzo IP del bilanciatore del carico.
Testa il bilanciatore del carico
Crea un'istanza VM per testare la connettività
Crea una VM client:
gcloud compute instances create l7-ilb-client-a \ --image-family=debian-10 \ --image-project=debian-cloud \ --network=NETWORK \ --subnet=SUBNET_A \ --zone=ZONE_A \ --tags=allow-ssh
gcloud compute instances create l7-ilb-client-b \ --image-family=debian-10 \ --image-project=debian-cloud \ --network=NETWORK \ --subnet=SUBNET_B \ --zone=ZONE_B \ --tags=allow-ssh
Utilizza SSH per connetterti a ciascuna istanza client.
gcloud compute ssh l7-ilb-client-a \ --zone=ZONE_A
gcloud compute ssh l7-ilb-client-b \ --zone=ZONE_B
Verifica che l'indirizzo IP fornisca il nome host.
Verifica che la VM client possa raggiungere entrambi gli indirizzi IP. Il comando dovrebbe avere esito positivo e restituire il nome della VM di backend che ha pubblicato la richiesta:
curl IP_ADDRESS1
curl IP_ADDRESS2
Per i test HTTPS, sostituisci
curl
con:curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS1:443
curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS2:443
Il flag
-k
fa sì che curl ignori la convalida del certificato.(Facoltativo) Utilizza il record DNS configurato per risolvere l'indirizzo IP più vicino alla VM client. Ad esempio, DNS_ENTRY può essere
service.example.com
.curl DNS_ENTRY
Esegui 100 richieste
Esegui 100 richieste curl e conferma dalle risposte che il carico sia bilanciato.
Per HTTP:
Verifica che la VM client possa raggiungere entrambi gli indirizzi IP. Il comando dovrebbe avere esito positivo e restituire il nome della VM di backend che ha pubblicato la richiesta:
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS1)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS1: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS2)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
Per HTTPS:
Verifica che la VM client possa raggiungere entrambi gli indirizzi IP. Il comando dovrebbe avere esito positivo e restituire il nome della VM di backend che ha pubblicato la richiesta:
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS1:443)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS1: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS2:443)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
Testa il failover
Verifica il failover ai backend nell'area geografica
REGION_A
quando i backend inREGION_B
sono in stato non integro o non raggiungibili. Simuliamo questa operazione rimuovendo tutti i backend daREGION_B
:gcloud compute backend-services remove-backend BACKEND_SERVICE \ --balancing-mode=RATE \ --network-endpoint-group=neg2 \ --network-endpoint-group-zone=ZONE_B
Usa SSH per connetterti alla VM client in
REGION_B
.gcloud compute ssh l7-ilb-client-b \ --zone=ZONE_B
Invia richieste all'indirizzo IP con bilanciamento del carico nella regione
REGION_B
. L'output è simile al seguente:{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS2:443)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
Opzioni di configurazione aggiuntive
Questa sezione espande l'esempio di configurazione per fornire opzioni di configurazione alternative e aggiuntive. Tutte le attività sono facoltative. Puoi eseguirli in qualsiasi ordine.
Configura i criteri di routing DNS
Se i tuoi clienti si trovano in più regioni, ti consigliamo di rendere accessibile il bilanciatore del carico delle applicazioni interno tra regioni utilizzando i VIP in queste regioni. Questa configurazione per più regioni riduce al minimo la latenza e i costi di transito della rete. Inoltre, consente di configurare una soluzione di bilanciamento del carico globale e basata su DNS che offra resilienza contro le interruzioni regionali. Per maggiori informazioni, consulta Gestire i controlli di integrità e i criteri di routing DNS.
gcloud
Per creare una voce DNS con un TTL di 30 secondi, utilizza il comando gcloud dns record-sets create
.
gcloud dns record-sets create DNS_ENTRY --ttl="30" \ --type="A" --zone="service-zone" \ --routing-policy-type="GEO" \ --routing-policy-data="REGION_A=gil7-forwarding-rule-a@global;REGION_B=gil7-forwarding-rule-b@global" \ --enable-health-checking
Sostituisci quanto segue:
DNS_ENTRY
: nome DNS o di dominio del set di recordAd esempio,
service.example.com
REGION_A
eREGION_B
: le regioni in cui hai configurato il bilanciatore del carico
API
Crea il record DNS inviando una richiesta POST
al metodo ResourceRecordSets.create
.
Sostituisci PROJECT_ID con l'ID progetto.
POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/SERVICE_ZONE/rrsets { "name": "DNS_ENTRY", "type": "A", "ttl": 30, "routingPolicy": { "geo": { "items": [ { "location": "REGION_A", "healthCheckedTargets": { "internalLoadBalancers": [ { "loadBalancerType": "globalL7ilb", "ipAddress": "gil7-forwarding-rule-a", "port": "80", "ipProtocol": "tcp", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "project": "PROJECT_ID" } ] } }, { "location": "REGION_B", "healthCheckedTargets": { "internalLoadBalancers": [ { "loadBalancerType": "globalL7ilb", "ipAddress": "gil7-forwarding-rule-b", "port": "80", "ipProtocol": "tcp", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "project": "PROJECT_ID" } ] } } ] } } }
Abilita rilevamento outlier
Puoi abilitare il rilevamento di outlier sui servizi di backend globali per identificare i NEG serverless integri e ridurre il numero di richieste inviate ai NEG serverless in stato non integro.
Il rilevamento outlier viene abilitato sul servizio di backend tramite uno dei seguenti metodi:
- Il metodo
consecutiveErrors
(outlierDetection.consecutiveErrors
), in cui un codice di stato HTTP della serie5xx
viene classificato come errore. - Il metodo
consecutiveGatewayFailure
(outlierDetection.consecutiveGatewayFailure
), in cui solo i codici di stato HTTP502
,503
e504
vengono considerati come errori.
Segui i passaggi riportati di seguito per abilitare il rilevamento di outlier per un servizio di backend esistente. Tieni presente che, anche dopo aver abilitato il rilevamento di outlier, alcune richieste possono essere inviate al servizio in stato non integro e restituire un codice di stato 5xx
ai client. Per ridurre ulteriormente la percentuale di errori, puoi configurare valori più restrittivi per i parametri di rilevamento outlier. Per ulteriori informazioni, consulta il campo outlierDetection
.
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Fai clic sul nome del bilanciatore del carico di cui vuoi modificare il servizio di backend.
Nella pagina Dettagli del bilanciatore del carico, fai clic su
Modifica.Nella pagina Modifica bilanciatore del carico delle applicazioni interno tra regioni, fai clic su Configurazione backend.
Nella pagina Configurazione backend, fai clic su
Modifica per il servizio di backend che vuoi modificare.Scorri verso il basso ed espandi la sezione Configurazioni avanzate.
Nella sezione Rilevamento outlier, seleziona la casella di controllo Abilita.
Fai clic su
Modifica per configurare il rilevamento outlier.Verifica che le seguenti opzioni siano configurate con questi valori:
Proprietà Valore Errori consecutivi 5 Intervallo 1000 Tempo di espulsione base 30000 Percentuale di espulsione massima 50 Applicazione di errori consecutivi 100 In questo esempio, l'analisi di rilevamento dei valori anomali viene eseguita ogni secondo. Se il numero di codici di stato HTTP
5xx
consecutivi ricevuti da un proxy Envoy è pari o superiore a 5, l'endpoint di backend viene espulso dal pool di bilanciamento del carico di quel proxy Envoy per 30 secondi. Se la percentuale di applicazione è impostata al 100%, il servizio di backend applica l'esclusione di endpoint non integri dai pool di bilanciamento del carico di quei proxy Envoy specifici ogni volta che viene eseguita l'analisi del rilevamento dei outlier. Se le condizioni di espulsione sono soddisfatte, è possibile escludere fino al 50% degli endpoint di backend dal pool di bilanciamento del carico.Fai clic su Salva.
Per aggiornare il servizio di backend, fai clic su Aggiorna.
Per aggiornare il bilanciatore del carico, nella pagina Modifica il bilanciatore del carico delle applicazioni interno tra regioni, fai clic su Aggiorna.
gcloud
Esporta il servizio di backend in un file YAML.
gcloud compute backend-services export BACKEND_SERVICE_NAME \ --destination=BACKEND_SERVICE_NAME.yaml --global
Sostituisci
BACKEND_SERVICE_NAME
con il nome del servizio di backend.Modifica la configurazione YAML del servizio di backend per aggiungere i campi per il rilevamento outlier, come evidenziato nella seguente configurazione YAML.
In questo esempio, l'analisi di rilevamento dei valori anomali viene eseguita ogni secondo. Se il numero di codici di stato HTTP
5xx
consecutivi ricevuti da un proxy Envoy è pari o superiore a 5, l'endpoint di backend viene espulso dal pool di bilanciamento del carico di quel proxy Envoy per 30 secondi. Se la percentuale di applicazione è impostata al 100%, il servizio di backend applica l'esclusione di endpoint non integri dai pool di bilanciamento del carico di quei proxy Envoy specifici ogni volta che viene eseguita l'analisi del rilevamento dei outlier. Se le condizioni di espulsione sono soddisfatte, è possibile escludere fino al 50% degli endpoint di backend dal pool di bilanciamento del carico.name: BACKEND_SERVICE_NAME backends: - balancingMode: UTILIZATION capacityScaler: 1.0 group: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/networkEndpointGroups/SERVERLESS_NEG_NAME - balancingMode: UTILIZATION capacityScaler: 1.0 group: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/networkEndpointGroups/SERVERLESS_NEG_NAME_2 outlierDetection: baseEjectionTime: nanos: 0 seconds: 30 consecutiveErrors: 5 enforcingConsecutiveErrors: 100 interval: nanos: 0 seconds: 1 maxEjectionPercent: 50 port: 80 selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME sessionAffinity: NONE timeoutSec: 30 ...
Sostituisci quanto segue:
BACKEND_SERVICE_NAME
: il nome del servizio di backendPROJECT_ID
: l'ID del progettoREGION_A
eREGION_B
: le regioni in cui è stato configurato il bilanciatore del carico.SERVERLESS_NEG_NAME
: il nome del primo NEG serverlessSERVERLESS_NEG_NAME_2
: il nome del secondo NEG serverless
Aggiorna il servizio di backend importando l'ultima configurazione.
gcloud compute backend-services import BACKEND_SERVICE_NAME \ --source=BACKEND_SERVICE_NAME.yaml --global
Il rilevamento outlier è ora abilitato nel servizio di backend.
Passaggi successivi
- Panoramica del bilanciatore del carico delle applicazioni interno.
- Subnet solo proxy per bilanciatori del carico basati su Envoy.
- Gestire i certificati.
- Esegui la pulizia di una configurazione del bilanciamento del carico.