Configurar el emparejamiento de VPC

Puedes usar el emparejamiento entre redes de VPC para que Datastream se comunique de forma privada con los recursos de tu red de nube privada virtual (VPC).

El emparejamiento de redes VPC es una conexión entre tu red VPC y la red privada de Datastream, que permite que Datastream se comunique con recursos internos mediante direcciones IP internas. Al usar la conectividad privada, se establece una conexión dedicada en la red de Datastream, lo que significa que ningún otro cliente puede compartirla.

La conexión de emparejamiento de redes de VPC entre tu red de VPC y la red de VPC de Datastream permite que Datastream se conecte a lo siguiente:

La conexión de emparejamiento entre redes de VPC entre tu red de VPC y la red de VPC de Datastream no permite que Datastream se conecte a lo siguiente:

Para establecer la conectividad entre Datastream y un recurso al que solo se puede acceder desde tu red de VPC, puedes usar una VM de traducción de direcciones de red (NAT) en tu red de VPC. Un caso de uso habitual de una VM de NAT es cuando Datastream necesita conectarse a una instancia de Cloud SQL.

En esta página se describe un ejemplo de configuración de una VM de NAT que permite a Datastream conectarse de forma privada a una instancia de Cloud SQL.

Diagrama de flujo de usuarios de Datastream

Requisitos previos del emparejamiento de VPC

Antes de crear una configuración de conectividad privada, debes seguir estos pasos para que Datastream pueda crear la conexión de emparejamiento de VPC con tu proyecto:

  • Tener una red de VPC que pueda emparejarse con la red privada de Datastream y que cumpla los requisitos descritos en la página Emparejamiento entre redes de VPC. Para obtener más información sobre cómo crear esta red, consulta el artículo Usar el emparejamiento entre redes de VPC.
  • Identifica un intervalo de IP disponible (con un bloque CIDR de /29) en la red de VPC. No puede ser un intervalo de IPs que ya exista como subred, un intervalo de IPs preasignado de acceso privado a servicios ni ninguna ruta (que no sea la ruta predeterminada 0.0.0.0) que incluya el intervalo de IPs. Datastream usa este intervalo de IPs para crear una subred que le permita comunicarse con la base de datos de origen. En la siguiente tabla se describen los intervalos de IP válidos.
Intervalo Descripción
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Direcciones IP privadas RFC 1918
100.64.0.0/10 Espacio de direcciones compartido RFC 6598
192.0.0.0/24 Asignaciones de protocolo IETF RFC 6890
192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)
Documentación RFC 5737
192.88.99.0/24 Relé de IPv6 a IPv4 (obsoleto) RFC 7526
198.18.0.0/15 Pruebas de referencia RFC 2544
  • Comprueba que Google Cloud y el cortafuegos local permitan el tráfico del intervalo de IPs seleccionado. Si no es así, crea una regla de cortafuegos de entrada que permita el tráfico en el puerto de la base de datos de origen y asegúrate de que el intervalo de direcciones IPv4 de la regla de cortafuegos sea el mismo que el intervalo de direcciones IP asignado al crear el recurso de conectividad privada:

    gcloud compute firewall-rules create FIREWALL-RULE-NAME \
      --direction=INGRESS \
      --priority=PRIORITY \
      --network=PRIVATE_CONNECTIVITY_VPC \
      --project=VPC_PROJECT \
      --action=ALLOW \
      --rules=FIREWALL_RULES \
      --source-ranges=IP-RANGE
      

    Haz los cambios siguientes:

    • FIREWALL-RULE-NAME: nombre de la regla de cortafuegos que se va a crear.
    • PRIORITY: la prioridad de la regla, expresada como un número entero entre 0 y 65535 (ambos incluidos). El valor debe ser inferior al valor definido en la regla de bloqueo del tráfico, si existe. Los valores de prioridad más bajos implican una mayor precedencia.
    • PRIVATE_CONNECTIVITY_VPC: la red de VPC que puede emparejarse con la red privada de Datastream y que cumple los requisitos descritos en la página Emparejamiento de redes de VPC. Esta es la VPC que especificas al crear tu configuración de conectividad privada.
    • VPC_PROJECT: el proyecto de la red de VPC.
    • FIREWALL_RULES: lista de protocolos y puertos a los que se aplica la regla de cortafuegos (por ejemplo, tcp:80). La regla debe permitir el tráfico TCP a la dirección IP y al puerto de la base de datos de origen o del proxy. Como la conectividad privada puede admitir varias bases de datos, la regla debe tener en cuenta el uso real de tu configuración.
    • IP-RANGE: el intervalo de direcciones IP que usa Datastream para comunicarse con la base de datos de origen. Es el mismo intervalo que indicas en el campo Asignar un intervalo de IPs cuando creas tu configuración de conectividad privada.

      También puede que tengas que crear una regla de cortafuegos de salida idéntica para permitir que el tráfico vuelva a Datastream.

  • Se asignan a un rol que contiene el permiso compute.networks.list. Este permiso te otorga los permisos de gestión de identidades y accesos necesarios para enumerar las redes de VPC de tu proyecto. Para saber qué roles contienen este permiso, consulta la referencia de permisos de gestión de identidades y accesos.

Requisitos previos de la VPC compartida

Si utilizas la VPC compartida, debes completar las siguientes acciones además de los pasos que se describen en la sección Requisitos previos de la VPC:

  1. En el proyecto de servicio:

    1. Habilita la API Datastream.
    2. Obtén la dirección de correo de la cuenta de servicio de flujo de datos. Las cuentas de servicio de Datastream se crean cuando haces una de las siguientes acciones:

      • Crea un recurso de Datastream, como un perfil de conexión o un flujo.
      • Crea una configuración de conectividad privada, selecciona tu VPC compartida y haz clic en Crear cuenta de servicio de Datastream. La cuenta de servicio se crea en el proyecto host.

      Para obtener la dirección de correo electrónico de la cuenta de servicio de Datastream, busca el número de proyecto en la página principal de la Google Cloud consola. La dirección de correo de la cuenta de servicio es service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com.

  2. En el proyecto del host:

    1. Concede el permiso de rol de compute.networkAdminGestión de Identidades y Accesos (IAM) a la cuenta de servicio de Datastream. Este rol solo es necesario cuando creas el peering de VPC. Una vez que se haya establecido la conexión, ya no necesitarás el rol.

      Si tu organización no permite conceder el permiso, crea un rol personalizado con los siguientes permisos mínimos para crear y eliminar recursos de conexión privada:

    Para obtener más información sobre los roles personalizados, consulta el artículo Crear y gestionar roles personalizados.

Configurar una VM de NAT

  1. Identifica la dirección IP de la instancia de Cloud SQL a la que debe conectarse Datastream.

  2. Identifica tu red de VPC. Esta es la red de VPC que está conectada a la red de VPC de Datastream mediante el emparejamiento entre redes de VPC.

  3. Si aún no lo has hecho, crea una configuración de conectividad privada en Datastream. De esta forma, se crea la conexión de emparejamiento de redes de VPC que conecta tu red de VPC y la red de VPC de Datastream. Anota el intervalo de direcciones IP que usa la configuración de conectividad privada de Datastream.

  4. Elige un tipo de máquina para la VM de NAT que crearás en el siguiente paso. Google Cloud impone un límite de ancho de banda de salida máximo por instancia para los paquetes enrutados por los saltos siguientes de una red de VPC según el tipo de máquina de la instancia de VM. Para obtener más información, consulta los artículos Salida a destinos enrutables en una red de VPC y Ancho de banda de salida máximo por instancia.

  5. Crea la VM de NAT en tu red de VPC. Si tu red de VPC es una red de VPC compartida, puedes crear la VM de NAT en el proyecto del host o en cualquier proyecto de servicio, siempre que la interfaz de red de la VM de NAT esté en la red de VPC compartida.

    • Para minimizar el tiempo de ida y vuelta de la red, crea la VM de NAT en la misma región que Datastream.
    • En este ejemplo se presupone que la VM de NAT tiene una sola interfaz de red.
    • Ejecuta la secuencia de comandos en una distribución de Linux (por ejemplo, Debian 12).
    • Usa la siguiente secuencia de comandos de inicio. La secuencia de comandos de inicio la ejecuta root cada vez que se inicia la VM. Esta secuencia de comandos incluye comentarios que explican qué hace cada línea. En la secuencia de comandos, sustituye CLOUD_SQL_INSTANCE_IP por la dirección IP de la instancia de Cloud SQL y DATABASE_PORT por el puerto de destino que utiliza el software de la base de datos.
    #! /bin/bash
    
    export DB_ADDR=CLOUD_SQL_INSTANCE_IP
    export DB_PORT=DATABASE_PORT
    
    # Enable the VM to receive packets whose destinations do
    # not match any running process local to the VM
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # Ask the Metadata server for the IP address of the VM nic0
    # network interface:
    md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance"
    vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)"
    
    # Clear any existing iptables NAT table entries (all chains):
    iptables -t nat -F
    
    # Create a NAT table entry in the prerouting chain, matching
    # any packets with destination database port, changing the destination
    # IP address of the packet to the SQL instance IP address:
    iptables -t nat -A PREROUTING \
         -p tcp --dport $DB_PORT \
         -j DNAT \
         --to-destination $DB_ADDR
    
    # Create a NAT table entry in the postrouting chain, matching
    # any packets with destination database port, changing the source IP
    # address of the packet to the NAT VM's primary internal IPv4 address:
    iptables -t nat -A POSTROUTING \
         -p tcp --dport $DB_PORT \
         -j SNAT \
         --to-source $vm_nic_ip
    
    # Save iptables configuration:
    iptables-save
  6. Crea una regla de cortafuegos de entrada (o una regla de una política de cortafuegos de red global, una política de cortafuegos de red regional o una política de cortafuegos jerárquica) con estas características:

    • Dirección: entrada
    • Acción: permitir
    • Parámetro de destino: al menos la VM de NAT
    • Parámetro de origen: intervalo de direcciones IP que usa la configuración de conectividad privada de Datastream
    • Protocolo: TCP
    • Puerto: debe incluir al menos el DATABASE_PORT
  7. La regla de cortafuegos de salida implícita permite que la VM de NAT envíe paquetes a cualquier destino. Si tu red de VPC usa reglas de cortafuegos de denegación de salida, es posible que tengas que crear una regla de cortafuegos de permiso de salida para permitir que la VM de NAT envíe paquetes a la instancia de Cloud SQL. Si es necesaria una regla de salida permitida, utiliza estos parámetros:

    • Dirección: salida
    • Acción: permitir
    • Parámetro de destino: al menos la VM de NAT
    • Parámetro de destino: la dirección IP de la instancia de Cloud SQL
    • Protocolo: TCP
    • Puerto: debe incluir al menos el DATABASE_PORT
  8. Asegúrate de haber configurado tu instancia de Cloud SQL para que acepte conexiones de la dirección IPv4 interna principal que usa la interfaz de red de tu VM de NAT. Para obtener instrucciones, consulta Autorizar con redes autorizadas en la documentación de Cloud SQL.

  9. Crea un perfil de conexión en Datastream. En los detalles de la conexión del perfil, especifica la dirección IPv4 interna principal de la VM de NAT que has creado. Introduce el puerto de la base de datos de origen en el campo de puerto del perfil de conexión.

Configurar un par de VMs de NAT y un balanceador de carga de red de paso a través interno

Para mejorar la fiabilidad de una solución de máquina virtual NAT, considera la siguiente arquitectura, que usa un par de máquinas virtuales NAT y un balanceador de carga de red interno de tipo pasarela:

  1. Crea dos VMs de NAT en zonas diferentes de la misma región. Sigue las instrucciones para configurar una VM de NAT para crear cada VM y colócala en su propio grupo de instancias no gestionado zonal.

    También puedes crear un grupo de instancias gestionado regional. En la plantilla del grupo de instancias gestionado, incluye una secuencia de comandos de inicio como la del ejemplo de la sección Configurar una VM NAT.

  2. Crea un balanceador de carga de red de paso a través interno cuyo servicio de backend use el grupo o los grupos de instancias del paso anterior como backends. Para ver un ejemplo de balanceador de carga de red de paso a través interno, consulta Configurar un balanceador de carga de red de paso a través interno con backends de grupos de instancias de máquina virtual.

    Al configurar la comprobación del estado del balanceador de carga, puedes usar una comprobación del estado TCP que utilice un puerto TCP de destino que coincida con el DATABASE_PORT. Los paquetes de comprobación del estado se enrutan a la CLOUD_SQL_INSTANCE_IP según la configuración de la VM de NAT. También puedes ejecutar un proceso local en la VM de NAT que responda a una comprobación de estado TCP o HTTP en un puerto personalizado.

  3. Crea reglas de cortafuegos y configura las redes autorizadas de Cloud SQL tal como se describe en las instrucciones para configurar una VM NAT. Asegúrate de que las redes autorizadas de Cloud SQL incluyan la dirección IPv4 interna principal de ambas VMs de NAT.

  4. Cuando cree un perfil de conexión de Datastream, especifique la dirección IP de la regla de reenvío del balanceador de carga de red interno de transferencia en los detalles de conexión del perfil.

Siguientes pasos