Accedere ai servizi pubblicati tramite i backend
Questa guida descrive come configurare un bilanciatore del carico delle applicazioni esterno globale con un backend Private Service Connect per accedere a un servizio che è pubblicato utilizzando Private Service Connect.
Per ulteriori informazioni, consulta Informazioni sui backend di Private Service Connect.
Ruoli
Il ruolo Amministratore del bilanciatore del carico Compute
(roles/compute.loadBalancerAdmin) contiene l'autorizzazione necessaria per eseguire
le attività descritte in questa guida.
Prima di iniziare
Se vuoi pubblicare il tuo servizio, consulta Pubblicare servizi utilizzando Private Service Connect.
Se stai connettendo un servizio pubblicato da una terza parte, chiedi al producer di servizi le seguenti informazioni:
L'URI del collegamento al servizio per il servizio a cui vuoi connetterti. Il collegamento al servizio ha il seguente formato:
projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAMEEventuali requisiti per i nomi DNS da utilizzare per inviare le richieste. Potresti dover utilizzare nomi DNS specifici nella configurazione della mappa URL o nella configurazione DNS.
Crea gruppo di endpoint di rete
Crea un NEG Private Service Connect che punti al collegamento al servizio per il servizio pubblicato a cui vuoi accedere. Se il servizio pubblicato è sottoposto a deployment in più regioni diverse, crea un NEG per ogni collegamento al servizio.
Ogni NEG Private Service Connect utilizza un indirizzo IP /32 in modo che il bilanciatore del carico possa comunicare con esso.
Console
Nella console Google Cloud , vai alla pagina Gruppi di endpoint di rete.
Fai clic su Crea gruppo di endpoint di rete.
Inserisci un Nome per il gruppo di endpoint di rete.
In Tipo di gruppo di endpoint di rete, seleziona Gruppo di endpoint di rete (Private Service Connect).
Seleziona il tipo di destinazione Servizio pubblicato.
In Servizio di destinazione, inserisci l'URI del collegamento al servizio.
Seleziona la Rete e la Subnet in cui creare il gruppo di endpoint di rete.
La subnet deve trovarsi nella stessa regione del servizio pubblicato.
Fai clic su Crea.
gcloud
gcloud compute network-endpoint-groups create NEG_NAME \
--network-endpoint-type=private-service-connect \
--psc-target-service=TARGET_SERVICE \
--region=REGION \
--network=NETWORK \
--subnet=SUBNET
Sostituisci quanto segue:
NEG_NAME: un nome per il gruppo di endpoint di rete.TARGET_SERVICE: il collegamento al servizio a cui vuoi connetterti.REGION: la regione in cui creare il gruppo di endpoint di rete. La regione deve essere la stessa del servizio di destinazione.NETWORK: la rete in cui creare il gruppo di endpoint di rete. Se omessa, viene utilizzata la rete predefinita.SUBNET: la subnet in cui creare il gruppo di endpoint di rete. La subnet deve trovarsi nella stessa regione del servizio di destinazione. Se fornisci la rete, devi fornire anche una subnet. Se ometti sia la rete sia la subnet, viene utilizzata la rete predefinita e la subnet predefinita nellaREGIONspecificata.
Prenota un indirizzo IP esterno per il bilanciatore del carico
Per prenotare un indirizzo IP esterno per il bilanciatore del carico, segui questi passaggi.
Console
Nella console Google Cloud , vai alla pagina Indirizzi IP.
Per prenotare un indirizzo IPv4, fai clic su Prenota indirizzo statico.
Assegna un Nome alla risorsa dell'indirizzo IP.
Imposta il Livello di rete su Premium.
Imposta la Versione IP su IPv4.
Imposta il Tipo su Globale.
Fai clic su Prenota.
gcloud
Prenota un indirizzo IPv4 esterno globale per il bilanciatore del carico.
gcloud compute addresses create ADDRESS_NAME \ --ip-version=IPV4 --globalSostituisci
ADDRESS_NAMEcon un nome per la risorsa dell'indirizzo IP.Esegui questo comando per visualizzare l'indirizzo IP prenotato:
gcloud compute addresses describe ADDRESS_NAME \ --format="get(address)" --global
Crea una risorsa del certificato SSL
Per creare un bilanciatore del carico HTTPS, devi aggiungere una risorsa del certificato SSL al frontend del bilanciatore del carico. Crea una risorsa del certificato SSL utilizzando un certificatoSSL gestito da Google o un certificatoSSL autogestito.
Certificati gestiti da Google. Ti consigliamo di utilizzare i certificati gestiti da Google perché Google Cloud ottiene, gestisce e rinnova questi certificati automaticamente. Per creare un certificato gestito da Google, devi disporre di un dominio e dei record DNS per quel dominio per eseguire il provisioning del certificato. Inoltre, devi aggiornare il record A DNS del dominio in modo che punti all'indirizzo IP del bilanciatore del carico creato nel passaggio precedente. Per istruzioni dettagliate, consulta Utilizzare i certificati gestiti da Google.
Certificati autogestiti. I certificati SSL autogestiti sono certificati che ottieni, di cui esegui il provisioning e che rinnovi autonomamente. I certificati autogestiti possono essere firmati da un'autorità di certificazione o possono essere autofirmati. Se sono firmati da un'autorità di certificazione, devi avere un dominio. Inoltre, devi aggiornare il record A DNS del dominio in modo che punti all'indirizzo IP del bilanciatore del carico creato nel passaggio precedente. Per istruzioni dettagliate, consulta Utilizzare i certificati SSL autogestiti.
Se non vuoi configurare un dominio in questo momento, puoi utilizzare un certificato SSL autofirmato per i test.
Queste istruzioni presuppongono che tu abbia già creato una risorsa del certificato SSL.
Configura il bilanciatore del carico
Configura un bilanciatore del carico delle applicazioni esterno globale con funzionalità di gestione avanzata del
traffico (schema di bilanciamento del carico impostato su
EXTERNAL_MANAGED) per connetterti a un servizio gestito.
Se ti stai connettendo a un servizio pubblicato sottoposto a deployment in più regioni, e hai creato più NEG Private Service Connect per connetterti a ogni collegamento al servizio, puoi aggiungere tutti i NEG al servizio di backend.
Sebbene il NEG Private Service Connect sia regionale, tutti gli altri componenti di bilanciamento del carico in questa configurazione sono globali.
Console
Seleziona il tipo di bilanciatore del carico
Nella console Google Cloud , vai alla pagina Bilanciamento del carico.
- Fai clic su Crea bilanciatore del carico.
- In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
- In Pubblico o interno, seleziona Pubblico (esterno) e fai clic su Avanti.
- In Deployment globale o in una regione singola, seleziona Ideale per workload globali e fai clic su Avanti.
- In Generazione del bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni esterno globale e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- Inserisci un Nome bilanciatore del carico.
- Lascia aperta la finestra per continuare.
Configurazione frontend
- Fai clic su Configurazione frontend.
- Fai clic su Aggiungi IP e porta frontend.
- Inserisci un Nome per il bilanciatore del carico.
- Nel campo Protocollo, seleziona HTTPS (include HTTP/2).
- Assicurati che la Porta sia impostata su
443per consentire il traffico HTTPS. In Indirizzo IP, seleziona l'indirizzo IP che hai prenotato.
Fai clic sull'elenco Certificato e seleziona il certificato che hai creato.
Fai clic su OK.
Fai clic su Fine.
Configurazione backend
Il gruppo di endpoint di rete Private Service Connect è un tipo di backend del bilanciatore del carico. Aggiungi tutti i NEG Private Service Connect per lo stesso servizio gestito al servizio di backend.
- Fai clic su Configurazione backend.
- Fai clic sull'elenco Servizi e bucket di backend e poi su Crea un servizio di backend.
- Inserisci un Nome per il servizio di backend.
- Imposta il Tipo di backend su Gruppo di endpoint di rete Private Service Connect.
- Nella sezione Backend , fai clic sull'elenco Gruppo di endpoint di rete Private Service Connect e seleziona il NEG Private Service Connect che hai creato. Fai clic su Fine.
Se hai creato più di un NEG Private Service Connect, fai clic su Aggiungi backend per selezionare un altro NEG.
Ripeti questo passaggio finché non avrai aggiunto tutti i NEG per questo servizio gestito al servizio di backend.
Fai clic su Crea.
Regole di routing
Poiché questa configurazione contiene un solo servizio di backend, la regola di routing predefinita è sufficiente e non devi apportare modifiche in questa sezione.
Esamina e finalizza
- Per esaminare la configurazione, fai clic su Esamina e finalizza.
- Fai clic su Crea.
gcloud
Crea un servizio di backend per il servizio gestito a cui vuoi connetterti.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --globalSostituisci
BACKEND_SERVICE_NAMEcon il nome del servizio di backend.Aggiungi il NEG Private Service Connect che punta al servizio di destinazione.
Se hai creato più NEG in regioni diverse per lo stesso servizio, ripeti questo passaggio per aggiungere tutti i NEG al servizio di backend.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-region=REGION \ --global
Sostituisci quanto segue:
BACKEND_SERVICE_NAME: il nome del servizio di backend.NEG_NAME: il nome del gruppo di endpoint di rete.REGION: la regione del gruppo di endpoint di rete.
Crea una mappa URL per il bilanciatore del carico.
Una mappa URL deve fare riferimento a un servizio di backend predefinito. Configura il servizio di backend che hai creato come servizio di backend predefinito.
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE_NAME \ --global
Sostituisci quanto segue:
URL_MAP_NAME: un nome per la mappa URL.BACKEND_SERVICE_NAME: il nome del servizio di backend predefinito del bilanciatore del carico. Il valore predefinito viene utilizzato quando nessuna regola host corrisponde al nome host richiesto.
Crea il proxy HTTPS di destinazione.
Utilizza la risorsa del certificato SSL che hai creato per creare un proxy HTTPS di destinazione.
gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP_NAME \ --ssl-certificates=CERTIFICATE
Sostituisci quanto segue:
PROXY_NAME: un nome per il proxy HTTPS di destinazione.URL_MAP_NAME: il nome della mappa URL.CERTIFICATE: il nome della risorsa del certificato.
Crea la regola di forwarding.
gcloud compute forwarding-rules create FWD_RULE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=ADDRESS_NAME \ --target-https-proxy=PROXY_NAME \ --ports=443 \ --globalSostituisci quanto segue:
FWD_RULE: un nome per la regola di forwarding.ADDRESS_NAME: la risorsa dell'indirizzo IP che hai prenotato per la regola di forwarding.PROXY_NAME: il nome del proxy HTTPS di destinazione.
Configura i record DNS
Se vuoi accedere al backend di Private Service Connect utilizzando un nome DNS, crea nomi DNS per ogni regola di forwarding esterna. Il record DNS deve corrispondere a un nome nella mappa URL. A meno che la mappa URL non riscriva i nomi, il record DNS deve corrispondere anche ai nomi previsti dal servizio del producer.
Se utilizzi Cloud DNS per gestire il DNS, consulta Aggiungere un record DNS.
Verifica la configurazione
Crea l'istanza VM.
gcloud compute instances create VM_NAME \ --network=NETWORK \ --image-project=debian-cloud --image-family=debian-11 \ --zone=ZONESostituisci quanto segue:
VM_NAME: un nome per la macchina virtuale.NETWORK: la rete per la VM.ZONE: la zona della VM.
Connettiti alla VM.
gcloud compute ssh VM_NAME --zone=ZONE
Utilizza
curlper verificare la configurazione. Questo comando imposta l'intestazioneHosted esegue il bypass della risoluzione DNS specificando un indirizzo IP definito dall'utente. Puoi omettere la porta se utilizzi la porta predefinita per il protocollo, ad esempio la porta 443 per HTTPS.Puoi saltare la convalida del certificato utilizzando il flag
-k. Potresti dover saltare la convalida se hai utilizzato un certificato autofirmato per configurare il proxy HTTPS di destinazione o se la VM non ha il certificato dell'autorità di certificazione che ha firmato il tuo certificato.curl [-k] -s 'https://HOST:443/RESOURCE_URI' \ -H 'Host: HOST' \ --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443Sostituisci quanto segue:
HOST: il nome host configurato nella mappa URL.RESOURCE_URI: il resto dell'URI della risorsa che vuoi utilizzare per la verifica.FWD_RULE_IP_ADDRESS: l'indirizzo IP assegnato alla regola di forwarding.
Problemi noti
Errori del controllo di integrità con i NEG globali
Esiste un problema noto con i NEG Private Service Connect consumer configurati per l'accesso globale. Un NEG Private Service Connect è configurato per l'accesso globale se è associato a un servizio di backend globale.
Se connetti un NEG Private Service Connect configurato per l'accesso globale a un bilanciatore del carico del producer e il producer di servizi disabilita l'accesso globale per quel bilanciatore del carico, i controlli di integrità non funzionano correttamente. Di conseguenza, il traffico potrebbe essere inviato a backend non integri e ignorato.
Se accedi a un servizio pubblicato utilizzando un NEG Private Service Connect configurato per l'accesso globale e il tuo backend è interessato da questo problema, esegui una delle seguenti operazioni:
- Se vuoi utilizzare l'accesso globale, chiedi al producer di servizi di abilitare l'accesso globale per il suo bilanciatore del carico.
- Se non vuoi utilizzare l'accesso globale, riconfigura il NEG Private Service Connect per l'accesso regionale. Per farlo, devi rimuovere il NEG Private Service Connect dal servizio di backend globale e poi collegarlo a un servizio di backend regionale.
La riconfigurazione del NEG Private Service Connect per l'accesso regionale interrompe temporaneamente il traffico di rete tramite il backend.
Risoluzione dei problemi
La creazione del backend è riuscita, ma la connettività non è stata stabilita
Se crei correttamente un backend per i servizi pubblicati, ma la connettività non viene stabilita, controlla lo stato della connessione del backend. Lo stato della connessione potrebbe indicare i passaggi da seguire per risolvere il problema.
Lo stato della connessione del backend è accettato, ma il traffico non viene instradato
Se un backend ha uno stato della connessione ACCEPTED, ma il traffico non riesce a raggiungere il servizio pubblicato, è possibile che il producer di servizi abbia aggiornato di recente il servizio di destinazione del collegamento al servizio. Durante un aggiornamento del servizio di destinazione, il traffico viene interrotto brevemente. Per informazioni sugli aggiornamenti recenti o in corso del servizio di destinazione o per verificare lo stato del servizio, contatta il producer di servizi.
La creazione del backend è riuscita, ma il producer rifiuta la connessione
Se ricevi un errore connection refused, in genere significa che il server di backend del producer non è in ascolto sulla porta a cui il client sta tentando di connettersi.
Chiedi al producer di servizi di verificare se il suo servizio è in ascolto sulla porta che hai specificato.
Se il servizio del producer è ospitato su un bilanciatore del carico di rete passthrough interno che utilizza più porte, specifica la porta del producer appropriata nella configurazione del NEG Private Service Connect. Consulta Configurazione della porta del producer.
Il backend presenta problemi di prestazioni o timeout di connessione
Se il backend presenta problemi di prestazioni o timeout di connessione intermittenti, potrebbe essere dovuto a pacchetti persi. Puoi esaminare i pacchetti persi controllando le metriche descritte nelle sezioni seguenti.
Pacchetti persi per il servizio pubblicato
La private_service_connect/consumer/dropped_sent_packets_count
metrica
tiene traccia dei pacchetti di un consumer Private Service Connect, come
un backend, a un servizio pubblicato che vengono persi perché il backend
ha superato il numero massimo di connessioni
al servizio.
Se un backend segnala valori per questa metrica, valuta le seguenti soluzioni:
- Crea backend aggiuntivi che si connettono al servizio pubblicato.
- Riduci il numero di connessioni tramite questo backend.
- Chiedi al producer di servizi di aumentare la capacità del servizio pubblicato, ad esempio aggiungendo altre istanze di macchine virtuali (VM) o endpoint di rete.
Pacchetti persi dai servizi pubblicati
La
private_service_connect/consumer/dropped_received_packets_count
metrica
tiene traccia dei pacchetti inviati da un servizio pubblicato a un
consumer Private Service Connect, come un backend, che vengono
persi perché Private Service Connect non riesce a trovare una
connessione corrispondente per i pacchetti di risposta.
Private Service Connect consente solo le connessioni avviate dalla rete VPC del consumer. Quando un consumer avvia una connessione, la connessione viene monitorata per abbinare i pacchetti di risposta del servizio pubblicato a una connessione esistente. Se Private Service Connect non riesce a trovare una corrispondenza per un pacchetto di risposta, il pacchetto viene perso.
Private Service Connect potrebbe non trovare una corrispondenza per un pacchetto di risposta se un servizio pubblicato invia pacchetti di risposta dopo il timeout di una connessione. Se visualizzi valori per questa metrica, contatta il producer di servizi. Potrebbe essere in grado di configurare il proprio servizio per evitare questo problema.