Conectarse a un clúster desde fuera de su VPC

En esta página se analizan las diferentes formas de conectarse a un clúster de AlloyDB para PostgreSQL desde fuera de su nube privada virtual (VPC) configurada. Se da por supuesto que ya has creado un clúster de AlloyDB.

Acerca de las conexiones externas

Tu clúster de AlloyDB consta de varios nodos en unaGoogle Cloud VPC. Cuando creas un clúster, también configuras el acceso privado a los servicios entre una de tus VPCs y la VPC gestionada por Google que contiene tu nuevo clúster. Esta conexión de peering te permite usar direcciones IP privadas para acceder a los recursos de la VPC del clúster como si formaran parte de tu propia VPC, mediante direcciones IP privadas.

Hay situaciones en las que tu aplicación debe conectarse a tu clúster desde fuera de esta VPC conectada:

  • Tu aplicación se ejecuta en otro lugar del ecosistema de Google Cloud , fuera de la VPC a la que te has conectado a tu clúster mediante el acceso a servicios privados.

  • Tu aplicación se ejecuta en una VPC que está fuera de la red de Google.

  • Tu aplicación se ejecuta "en las instalaciones", en una máquina ubicada en otro lugar de Internet público.

En todos estos casos, debes configurar un servicio adicional para habilitar este tipo de conexión externa a tu clúster de AlloyDB.

Resumen de las soluciones de conexión externa

Te recomendamos dos soluciones generales para establecer conexiones externas, en función de tus necesidades:

En las siguientes secciones se describen estas soluciones de conexión externa en detalle.

Conectarse a través de una VM intermediaria

Para establecer una conexión con un clúster de AlloyDB desde fuera de su VPC mediante herramientas de código abierto y un mínimo de recursos adicionales, ejecuta un servicio proxy en una VM intermediaria configurada en esa VPC. Puedes configurar una máquina virtual para este fin o usar una que ya se esté ejecutando en la VPC de tu clúster de AlloyDB.

Como solución autogestionada, el uso de una máquina virtual intermediaria suele costar menos y tiene un tiempo de configuración más rápido que usar un producto de conectividad de red. También tiene inconvenientes: la disponibilidad, la seguridad y el rendimiento de los datos de la conexión dependen de la VM intermediaria, que debes mantener como parte de tu proyecto.

Conectarse a través de IAP

Con Identity-Aware Proxy (IAP), puedes conectarte de forma segura a tu clúster sin tener que exponer la dirección IP pública de la VM intermediaria. Para limitar el acceso a través de esta ruta, se usa una combinación de reglas de firewall y gestión de identidades y accesos (IAM). Por eso, las compras en la aplicación son una buena solución para usos no productivos, como el desarrollo y la creación de prototipos.

Para configurar el acceso de IAP a tu clúster, sigue estos pasos:

  1. Instala Google Cloud CLI en tu cliente externo.

  2. Prepara tu proyecto para el reenvío de TCP de IAP.

    Al definir la nueva regla de cortafuegos, permite el tráfico TCP de entrada al puerto 22 (SSH). Si usas la red predeterminada de tu proyecto con la regla default-allow-ssh predefinida habilitada, no tienes que definir ninguna regla adicional.

  3. Configura el reenvío de puertos entre tu cliente externo y la VM intermediaria mediante SSH a través de IAP.

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

    Haz los cambios siguientes:

    • ZONE_ID: el ID de la zona en la que se encuentra el clúster. Por ejemplo, us-central1-a.
    • ALLOYDB_IP_ADDRESS: la dirección IP de la instancia de AlloyDB a la que quieres conectarte.
    • PORT_NUMBER: el número de puerto de tu VM.
  4. Prueba tu conexión con psql en tu cliente externo y haz que se conecte al puerto local que has especificado en el paso anterior. Por ejemplo, para conectarte como rol de usuario postgres al puerto 5432:

    psql -h localhost -p 5432 -U USERNAME

    Haz los cambios siguientes:

    • USERNAME: el usuario de PostgreSQL al que quieres conectarte a la instancia. Por ejemplo, el usuario predeterminado postgres.

Conectarse a través de un proxy SOCKS

Ejecutar un servicio SOCKS en la VM intermediaria proporciona una conexión flexible y escalable a tu clúster de AlloyDB, con cifrado de extremo a extremo proporcionado por el proxy de autenticación de AlloyDB. Con la configuración adecuada, puedes hacer que sea apto para cargas de trabajo de producción.

Esta solución incluye los siguientes pasos:

  1. Instala, configura y ejecuta un servidor SOCKS en la VM intermediaria. Un ejemplo es Dante, una solución de código abierto popular.

    Configura el servidor para que se enlace a la interfaz de red ens4 de la VM para las conexiones externas e internas. Especifica el puerto que quieras para las conexiones internas.

  2. Configura el cortafuegos de tu VPC para permitir el tráfico TCP desde la dirección IP o el intervalo de direcciones IP adecuados al puerto configurado del servidor SOCKS.

  3. Instala AlloyDB Auth Proxy en el cliente externo.

  4. Ejecuta el proxy de autenticación de AlloyDB en tu cliente externo, con la variable de entorno ALL_PROXY definida en la dirección IP de la VM intermediaria y especificando el puerto que usa el servidor SOCKS.

    En este ejemplo se configura el proxy de autenticación de AlloyDB para conectarse a la base de datos en my-main-instance a través de un servidor SOCKS que se ejecuta en 198.51.100.1 en el puerto 1080:

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

    Si te conectas desde una VPC emparejada, puedes usar la dirección IP interna de la VM intermediaria. De lo contrario, usa su dirección IP externa.

  5. Prueba tu conexión con psql en tu cliente externo, haciéndolo conectar al puerto en el que escucha el proxy de autenticación de AlloyDB. Por ejemplo, para conectarte como rol de usuario postgres al puerto 5432:

    psql -h IP_ADDRESS -p PORT_NUMBER -U USERNAME

Conectarse a través de un agrupador de PostgreSQL

Si necesitas instalar y ejecutar el proxy de autenticación de AlloyDB en la VM intermediaria, en lugar de en un cliente externo, puedes habilitar conexiones seguras con él emparejándolo con un proxy compatible con protocolos, también conocido como agrupador. Entre los gestores de conexiones de código abierto más populares para PostgreSQL se incluyen Pgpool-II y PgBouncer.

En esta solución, ejecutas tanto el proxy de autenticación de AlloyDB como el agrupador en la VM intermediaria. Tu cliente o aplicación podrá conectarse de forma segura directamente al pooler a través de SSL, sin necesidad de ejecutar ningún servicio adicional. El gestor de conexiones se encarga de enviar las consultas de PostgreSQL a tu clúster de AlloyDB a través del proxy de autenticación.

Como cada instancia de un clúster de AlloyDB tiene una dirección IP interna independiente, cada servicio de proxy solo puede comunicarse con una instancia específica: la instancia principal, la de reserva o un grupo de lectura. Por lo tanto, debes ejecutar un servicio de agrupador independiente, con un certificado SSL configurado correctamente, para cada instancia del clúster.

Conectarse a través de Cloud VPN o Cloud Interconnect

Para el trabajo de producción que requiera alta disponibilidad, recomendamos usar un producto de Google Cloud Network Connectivity: Cloud VPN o Cloud Interconnect, según las necesidades de tu servicio externo y la topología de la red. A continuación, configure Cloud Router para que anuncie las rutas adecuadas.

Aunque usar un producto de conectividad de red es un proceso más complejo que configurar una VM intermediaria, este enfoque traslada las responsabilidades del tiempo de actividad y la disponibilidad de Google a ti. En concreto, las VPN de alta disponibilidad ofrecen un acuerdo de nivel de servicio del 99,99 %, por lo que son adecuadas para entornos de producción.

Las soluciones de conectividad de red también te liberan de la necesidad de mantener una VM independiente y segura como parte de tu aplicación, lo que evita los riesgos de un único punto de fallo inherentes a ese enfoque.

Para obtener más información sobre estas soluciones, consulta el artículo Elegir un producto de conectividad de red.

Siguientes pasos