Connettiti a un cluster dall'esterno del relativo VPC

Questa pagina esamina diversi modi per connettersi a un cluster AlloyDB per PostgreSQL dall'esterno del VPC (Virtual Private Cloud) configurato. Presuppone che tu abbia già creato un cluster AlloyDB.

Informazioni sulle connessioni esterne

Il tuo cluster AlloyDB è composto da un numero di nodi all'interno di un Google Cloud VPC. Quando crei un cluster, configuri anche l'accesso privato ai servizi tra uno dei tuoi VPC e il VPC gestito da Google contenente il nuovo cluster. Questa connessione in peering ti consente di utilizzare indirizzi IP privati per accedere alle risorse nel VPC del cluster come se facessero parte del tuo VPC, utilizzando indirizzi IP privati.

Esistono situazioni in cui l'applicazione deve connettersi al cluster dall'esterno di questo VPC connesso:

  • La tua applicazione viene eseguita altrove nell'ecosistema Google Cloud , al di fuori del VPC a cui ti sei connesso al cluster tramite l'accesso privato ai servizi.

  • La tua applicazione viene eseguita su un VPC che esiste al di fuori della rete di Google.

  • La tua applicazione viene eseguita "on-premise", su una macchina che si trova altrove su internet pubblico.

In tutti questi casi, devi configurare un servizio aggiuntivo per abilitare questo tipo di connessione esterna al tuo cluster AlloyDB.

Riepilogo delle soluzioni di connessione esterna

A seconda delle tue esigenze, consigliamo due soluzioni generali per stabilire connessioni esterne:

Le sezioni successive descrivono in dettaglio queste soluzioni di connessione esterna.

Connettiti tramite una VM intermediaria

Per stabilire una connessione a un cluster AlloyDB dall'esterno del relativo VPC utilizzando strumenti open source e un numero minimo di risorse aggiuntive, esegui un servizio proxy su una VM intermedia configurata all'interno di quel VPC. Puoi configurare una nuova VM per questo scopo o utilizzare una VM già in esecuzione nel VPC del cluster AlloyDB.

In quanto soluzione autogestita, l'utilizzo di una VM intermediaria in genere costa meno e ha un tempo di configurazione più rapido rispetto all'utilizzo di unaConnettività di reterk Connectivity. Ha anche degli svantaggi: la disponibilità, la sicurezza e la velocità effettiva dei dati della connessione dipendono dalla VM intermediaria, che devi gestire nell'ambito del tuo progetto.

Connettiti tramite IAP

Utilizzando Identity-Aware Proxy (IAP), puoi connetterti in modo sicuro al cluster senza dover esporre l'indirizzo IP pubblico della VM intermediaria. Utilizzi una combinazione di regole firewall e Identity and Access Management (IAM) per limitare l'accesso tramite questo percorso. Ciò rende IAP una buona soluzione per utilizzi non di produzione come lo sviluppo e la prototipazione.

Per configurare l'accesso IAP al cluster:

  1. Installa Google Cloud CLI sul client esterno.

  2. Prepara il progetto per l'inoltro TCP di IAP.

    Quando definisci la nuova regola firewall, consenti il traffico TCP in entrata alla porta 22 (SSH). Se utilizzi la rete predefinita del tuo progetto con la regola default-allow-ssh precompilata attivata, non devi definire una regola aggiuntiva.

  3. Configura il port forwarding tra il client esterno e la VM intermedia utilizzando SSH tramite IAP.

    gcloud compute ssh my-vm \
           --tunnel-through-iap \
           --zone=ZONE_ID \
           --ssh-flag="-L PORT_NUMBER:ALLOYDB_IP_ADDRESS:5432"

    Sostituisci quanto segue:

    • ZONE_ID: l'ID della zona in cui si trova il cluster, ad esempio us-central1-a.
    • ALLOYDB_IP_ADDRESS: l'indirizzo IP dell'istanza AlloyDB a cui vuoi connetterti.
    • PORT_NUMBER: il numero di porta della VM.
  4. Testa la connessione utilizzando psql sul client esterno, facendolo connettere alla porta locale che hai specificato nel passaggio precedente. Ad esempio, per connetterti come ruolo utente postgres alla porta 5432:

    psql -h localhost -p 5432 -U USERNAME

    Sostituisci quanto segue:

    • USERNAME: l'utente PostgreSQL a cui vuoi connetterti all'istanza, ad esempio l'utente predefinito postgres.

Connessione tramite un proxy SOCKS

L'esecuzione di un servizio SOCKS sulla VM intermedia fornisce una connessione flessibile e scalabile al cluster AlloyDB, con crittografia end-to-end fornita dal proxy di autenticazione AlloyDB. Con la configurazione appropriata, puoi renderlo adatto ai carichi di lavoro di produzione.

Questa soluzione include i seguenti passaggi:

  1. Installa, configura ed esegui un server SOCKS sulla VM intermediaria. Un esempio è Dante, una soluzione open source molto diffusa.

    Configura il server in modo che si associ all'interfaccia di rete ens4 della VM per le connessioni esterne e interne. Specifica la porta che vuoi per le connessioni interne.

  2. Configura il firewall del VPC per consentire il traffico TCP dall'indirizzo IP o dall'intervallo appropriato alla porta configurata del server SOCKS.

  3. Installa il proxy di autenticazione AlloyDB sul client esterno.

  4. Esegui il proxy di autenticazione AlloyDB sul client esterno, con la variabile di ambiente ALL_PROXY impostata sull'indirizzo IP della VM intermediaria e specificando la porta utilizzata dal server SOCKS.

    Questo esempio configura il proxy di autenticazione AlloyDB per connettersi al database all'indirizzo my-main-instance, tramite un server SOCKS in esecuzione all'indirizzo 198.51.100.1 sulla porta 1080:

    ALL_PROXY=socks5://198.51.100.1:1080 ./alloydb-auth-proxy \
    /projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

    Se ti connetti da un VPC con peering, puoi utilizzare l'indirizzo IP interno della VM intermediaria; in caso contrario, utilizza il suo indirizzo IP esterno.

  5. Testa la connessione utilizzando psql sul client esterno, facendolo connettere alla porta su cui è in ascolto il proxy di autenticazione AlloyDB. Ad esempio, per connetterti come ruolo utente postgres alla porta 5432:

    psql -h IP_ADDRESS -p PORT_NUMBER -U USERNAME

Connettersi tramite un pooler PostgreSQL

Se devi installare ed eseguire il proxy di autenticazione AlloyDB sulla VM intermedia, anziché su un client esterno, puoi abilitare le connessioni sicure associandolo a un proxy compatibile con il protocollo, noto anche come pooler. I pooler open source più diffusi per PostgreSQL includono Pgpool-II e PgBouncer.

In questa soluzione, esegui sia il proxy di autenticazione AlloyDB sia il pooler sulla VM intermediaria. Il client o l'applicazione possono quindi connettersi in modo sicuro direttamente al pooler tramite SSL, senza la necessità di eseguire servizi aggiuntivi. Il pooler si occupa di passare le query PostgreSQL al tuo cluster AlloyDB tramite Auth Proxy.

Poiché ogni istanza all'interno di un cluster AlloyDB ha un indirizzo IP interno separato, ogni servizio proxy può comunicare con una sola istanza specifica: l'istanza primaria, quella di standby o un pool di lettura. Pertanto, devi eseguire un servizio di pooling separato, con un certificato SSL configurato in modo appropriato, per ogni istanza del cluster.

Connettiti tramite Cloud VPN o Cloud Interconnect

Per il lavoro di produzione che richiede alta disponibilità, consigliamo l'utilizzo di un prodotto Google Cloud Network Connectivity: Cloud VPN o Cloud Interconnect, a seconda delle esigenze del servizio esterno e della topologia di rete. Poi configuri Cloud Router per annunciare le route appropriate.

L'utilizzo di un prodotto Connettività di rete è un processo più complesso rispetto alla configurazione di una VM intermedia, ma questo approccio trasferisce a Google gli oneri di uptime e disponibilità. In particolare, la VPN ad alta disponibilità offre uno SLA del 99,99%, il che la rende adatta agli ambienti di produzione.

Le soluzioni di connettività di rete ti liberano anche dalla necessità di gestire una VM sicura separata come parte della tua applicazione, evitando i rischi di singolo punto di errore inerenti a questo approccio.

Per iniziare a scoprire di più su queste soluzioni, consulta Scegliere una Connettività di rete Connectivity.

Passaggi successivi