En esta página, se describe cómo configurar una base de datos de origen de MongoDB Atlas para que funcione con Datastream mediante el intercambio de tráfico entre nubes privadas virtuales. Ten en cuenta que el procedimiento descrito no es una solución de alta disponibilidad. Si el nodo de MongoDB falla en la prueba del perfil de conexión, debes ejecutar de forma manual la secuencia de comandos de inicio a la que se hace referencia más adelante en esta página en la máquina virtual (VM) de traducción de direcciones de red (NAT).
Debido a que el intercambio de tráfico entre nubes privadas virtuales no es transitivo, debes configurar una puerta de enlace de NAT con una VM de Compute Engine para enrutar el tráfico de Datastream a MongoDB Atlas.
Configura un usuario de la base de datos de MongoDB
Para usar Datastream con una instancia de MongoDB Atlas, primero debes crear un usuario de la base de datos y otorgarle privilegios de acceso:
- En el panel de MongoDB Atlas, en Seguridad, haz clic en Acceso a la base de datos.
- Haz clic en Usuario de base de datos nuevo y selecciona el método de autenticación de contraseña para tu usuario.
- Ingresa el nombre de usuario y la contraseña de tu usuario de Datastream.
- En Privilegios de usuario de la base de datos, selecciona Otorgar privilegios de usuario específicos.
- En Privilegios específicos, agrega la siguiente función:
readAnyDatabase
- Haz clic en Agregar usuario.
Configura tu red de nube privada virtual
Identifica la red de nube privada virtual en tu Google Cloud proyecto para intercambiar tráfico con
Datastream y MongoDB Atlas. En esta página, se supone que usas la VPC predeterminada y su subred, por ejemplo, la subred predeterminada en la región us-central1.
- Asegúrate de que la red que identificaste no tenga rangos de direcciones IP superpuestos con tus redes de Datastream o MongoDB Atlas.
- Crea una configuración de conectividad privada
para intercambiar tráfico de Datastream con tu red de nube privada virtual:
- Asegúrate de seleccionar Intercambio de tráfico entre VPC en el menú desplegable Método de conectividad privada.
- Selecciona tu red de VPC
default. - Proporciona un rango de direcciones IP sin usar, por ejemplo,
10.0.0.0/29, para que lo use Datastream. - Toma nota del rango de IP asignado para tu regla de firewall de entrada.
- Configura una conexión de intercambio de tráfico de red en MongoDB Atlas para intercambiar tráfico de tu red de nube privada virtual con tu red de MongoDB Atlas. Para obtener más información,
consulta Configura una conexión de intercambio de tráfico de red en la
documentación de MongoDB:
- Proporciona el ID de tu Google Cloud proyecto y el nombre de tu VPC predeterminada en MongoDB Atlas.
- Anota el ID del proyecto y el nombre de la VPC que te proporciona MongoDB Atlas para completar el intercambio de tráfico en el lado de la Google Cloud side.
- Después de crear la conexión, en tu proyecto de MongoDB Atlas, ve a la pestaña Acceso a la red > Intercambio de tráfico entre VPC y toma nota del bloque de enrutamiento entre dominios sin clase (CIDR) para tu regla de firewall de salida.
Crea una VM de NAT
En la Google Cloud consola de, ve a la página Instancias de VM.
Haz clic en Crear instancia.
En el campo Nombre , ingresa un nombre para la VM, por ejemplo,
mongo-nat-gateway.En el campo Región , selecciona una región dentro de tu VPC predeterminada, por ejemplo,
us-central1.En el menú de navegación, haz clic en Herramientas de redes.
En el campo Etiquetas de red, agrega una etiqueta, como
mongo-nat-vm. Las reglas de firewall usan esta etiqueta.En Reenvío de IP, selecciona la casilla de verificación Habilitar.
En Interfaces de red, selecciona tu VPC predeterminada y su subred, por ejemplo
defaultenus-central1.En el menú de navegación, haz clic en Opciones avanzadas.
En la sección Automatización, pega la siguiente secuencia de comandos en el campo Secuencia de comandos de inicio. Reemplaza PRIVATE_SRV_RECORD por el registro SRV privado de tu clúster de MongoDB Atlas, por ejemplo,
my-cluster-pri.abcde.mongodb.net.#!/bin/bash # --- Startup script for MongoDB Atlas NAT gateway --- # This script has two main functions: # 1. Resolves the IP address of a MongoDB Atlas node from its SRV record. # 2. Configures iptables to forward traffic to the resolved MongoDB IP. # -------------------------------------------------------------------------- # --- Part 1: Resolve MongoDB node IP address --- # # EDIT THIS LINE to match your Mongo Atlas private SRV record # export SRV_RECORD=PRIVATE_SRV_RECORD echo "Resolving SRV record for: $SRV_RECORD" # Function to install DNS utilities if needed install_dns_tools() { echo "'dig' not found. Attempting to install DNS utilities..." if command -v apt-get &> /dev/null; then # Wait for any existing apt processes to finish before trying to install packages. # This is common on VM startup where the system might be running automatic updates. echo "Checking for and waiting on existing apt-get processes..." while fuser /var/lib/apt/lists/lock /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend >/dev/null 2>&1; do echo "Another apt process is running. Waiting 10 seconds..." sleep 10 done echo "Apt lock is free. Proceeding with installation." apt-get update && apt-get install -y dnsutils else echo "Error: Could not find apt-get to install DNS utilities." exit 1 fi # Verify that dig is now available if ! command -v dig &> /dev/null; then echo "Error: Failed to install DNS utilities." exit 1 fi } # Check if 'dig' is installed. If not, install it. if ! command -v dig &> /dev/null; then install_dns_tools fi echo "Using 'dig' for DNS resolution." # The `+short` option provides a concise output. # We use `awk` to grab the 4th column (the hostname) and `head` to get the first one. NODE_HOSTNAME=$(dig +short SRV "_mongodb._tcp.${SRV_RECORD}" | awk '{print $4}' | head -n 1) if [ -n "$NODE_HOSTNAME" ]; then NODE_IP=$(dig +short A "$NODE_HOSTNAME") fi # Check if the SRV lookup was successful and we got a hostname. if [ -z "$NODE_HOSTNAME" ]; then echo "Error: Could not resolve SRV record. Check the hostname and your network connection." exit 1 fi echo "Found node hostname: $NODE_HOSTNAME" # Check if the A record lookup was successful. if [ -z "$NODE_IP" ]; then echo "Error: Could not resolve the IP address for node: $NODE_HOSTNAME" exit 1 fi # 3. Print the final result of the lookup. echo "Successfully resolved IP address of a node: $NODE_IP" # --- Part 2: Configure iptables for NAT --- # Substitute the resolved IP address into the DB_ADDR variable. export DB_ADDR=$NODE_IP export DB_PORT=27017 # 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 MongoDB 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 echo "Startup script completed successfully. iptables rules are configured and saved."
Haz clic en Crear para iniciar la VM.
Después de que se ejecute la VM, anota su dirección IP interna, por ejemplo,
10.128.0.2.
Crea reglas de firewall de entrada y salida
Debes crear dos reglas de firewall en tu red de VPC.
Crea una regla de firewall de entrada con estas características:
- Nombre: INGRESS_RULE_NAME
- Dirección: entrada
- Acción: permitir
- Parámetro de destino: la etiqueta de destino
mongo-nat-vm - Parámetro de origen: el rango de direcciones IP que usa la configuración de conectividad privada de Datastream, por ejemplo,
10.0.0.0/29 - Protocolo: TCP
- Puerto:
27017
Crea una regla de firewall de salida con estas características:
- Nombre: EGRESS_RULE_NAME
- Dirección: salida
- Acción: permitir
- Parámetro de destino: la etiqueta de destino
mongo-nat-vm - Parámetro de destino: el bloque CIDR de MongoDB Atlas, por ejemplo,
192.168.240.0/21 - Protocolo: TCP
- Puerto:
27017
Configura las listas de entidades permitidas de IP en MongoDB Atlas
Permite la dirección IP interna de la VM de NAT en la configuración de seguridad de MongoDB Atlas:
- Accede a tu cuenta de MongoDB Atlas.
- En el menú de navegación, haz clic en Seguridad y, luego, en Acceso a la red.
- Haz clic en Agregar dirección IP.
- En el campo Entrada de la lista de acceso, ingresa la dirección IP interna de la instancia de VM de NAT que creaste en tu red de VPC.
- Haz clic en Confirmar y espera a que el estado cambie a Activo.
Crea el perfil de conexión
Crea un perfil de conexión de Datastream para tu base de datos.
Ve a la página Perfiles de conexión en la Google Cloud consola de.
Haz clic en Crear perfil y selecciona MongoDB.
En el campo Nombre de host, ingresa la dirección IP interna de la instancia de VM de NAT que creaste en tu red de VPC.
En el campo Puerto, ingresa
27017.Ingresa el nombre de usuario y la contraseña de tu usuario de la base de datos.
Agrega las etiquetas
tlsytls_allow_invalid_hostnamesy establece sus valores entrue. Para obtener más información sobre cómo configurar etiquetas, consulta Crea un perfil de conexión para una base de datos de MongoDB database.Selecciona Conectividad privada como método de conectividad.
Selecciona la configuración de conectividad privada que creaste.
Haz clic en Crear para guardar el perfil de conexión.
Ejecuta una prueba para verificar la conexión a tu base de datos.