Conéctate a una fuente pública desde una instancia privada

En esta página, se describe cómo conectarte a aplicaciones de software como servicio (SaaS), como Salesforce, y servicios de nube de terceros, como Amazon S3, desde una instancia privada de Cloud Data Fusion cuando desarrollas una canalización.

En esta guía, se usan los términos salida y control de salida:

  • Salida hace referencia al tráfico de red que sale de Google Cloud a través de la Internet pública. Por lo general, esto sucede cuando creas una canalización que lee o escribe en un servicio SaaS como Salesforce, o en un servicio en la nube pública como Amazon S3.

  • El control de salida define los recursos para el tráfico de salida mediante una VM de proxy, que permite que el tráfico de salida a un conjunto de dominios preconfigurados se realice de forma correcta y que todos los demás fallen. Habilita un perímetro de seguridad más alto para el tráfico de salida y puede evitar la salida no deseada desde una instancia privada.

En el siguiente diagrama de arquitectura del sistema, se muestra cómo una instancia privada de Cloud Data Fusion se conecta a la Internet pública cuando desarrollas una canalización:

Diagrama de arquitectura de la instancia privada

Cuando diseñas la canalización en esta situación, Cloud Data Fusion enruta el tráfico de salida a través del proyecto de cliente en Cloud Data Fusion Preview o Wrangler. En este proceso, se usan los siguientes recursos:

  • Una ruta de red de VPC personalizada: Una red de VPC personalizada enruta el tráfico a través de una ruta personalizada importada a las VM de puerta de enlace, que exportan a una VPC del proyecto de usuario mediante el intercambio de tráfico de VPC.

  • Una VM de puerta de enlace: Una VM de puerta de enlace enruta el tráfico de salida de Google Cloud desde el proyecto de usuario de Cloud Data Fusion a una SaaS o una nube de terceros a través de la Internet pública. Administra esta VM en tu proyecto de cliente. Puedes configurarlo en un entorno de alta disponibilidad (HA) mediante un balanceador de cargas interno (ILB). Se recomienda que vuelvas a usar la VM para varias instancias privadas de Cloud Data Fusion dentro de la misma VPC.

Para obtener más información sobre cómo configurar el control de salida en los entornos de ejecución y diseño, consulta Controla la salida en una instancia privada.

Antes de comenzar

Configura la conexión a Internet

En los siguientes pasos, se describe cómo acceder a un bucket de Amazon S3 desde una instancia privada de Cloud Data Fusion en Wrangler. Los mismos pasos se aplican para acceder a cualquier fuente de datos a través de la Internet pública cuando diseñas una canalización en Vista previa o Wrangler.

Solo se usa una VM en esta guía, pero para aplicaciones esenciales, te recomendamos que crees VM con balanceo de cargas. Para obtener más información, consulta Configura la VM de alta disponibilidad.

Crea una puerta de enlace NAT

Crea una puerta de enlace de Cloud NAT en la misma región y red de VPC que tu instancia privada de Cloud Data Fusion.

Ir a la página de Cloud NAT

Crear una instancia de VM de puerta de enlace y reglas de firewall

Console

  1. Ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haga clic en Crear instancia. (se recomienda usar una VM sin IP externa).

  3. Usa la misma VPC que tiene configurado el intercambio de tráfico entre redes con la instancia privada de Cloud Data Fusion. Para obtener más información sobre el intercambio de tráfico entre redes de VPC en esta situación, consulta Antes de comenzar.

  4. Habilita el reenvío de IP para la instancia en la misma red que la instancia de Cloud Data Fusion.

  5. En el campo Secuencia de comandos de inicio, ingresa la siguiente secuencia de comandos:

    #! /bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE
    echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf
    iptables-save
    

    Para obtener más información, consulta Ejecuta secuencias de comandos de inicio.

    Para obtener el rango de IP asignado a la instancia de Cloud Data Fusion, ve a la página Detalles de la instancia de Cloud Data Fusion.

    Interfaz de etapa de pruebas de salida

gcloud

Para crear las reglas de firewall y la VM de puerta de enlace, ejecuta la siguiente secuencia de comandos en la herramienta de línea de comandos de gcloud:

export CDF_PROJECT=CDF_PROJECT
export GATEWAY_VM=GATEWAY_VM_NAME
export ZONE=VM_ZONE
export SUBNET=SUBNET
export VPC_NETWORK=VPC_NETWORK
export COMPUTE_ENGINE_SA=COMPUTE_ENGINE_SA

gcloud beta compute --project=$CDF_PROJECT instances create $GATEWAY_VM --zone=$ZONE --machine-type=e2-medium --subnet=$SUBNET --network-tier=PREMIUM --metadata=startup-script=\#\!\ /bin/bash$'\n'echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward$'\n'iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf$'\n'iptables-save  --can-ip-forward --no-address --maintenance-policy=MIGRATE --service-account=$COMPUTE_ENGINE_SA --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --tags=http-server,https-server --image=debian-10-buster-v20210316 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=$GATEWAY_VM --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --reservation-affinity=any

gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-http --direction=INGRESS --priority=1000 --network= --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server

gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-https --direction=INGRESS --priority=1000 --network= --action=ALLOW --rules=tcp:443 --source-ranges=0.0.0.0/0 --target-tags=https-server
  • Reemplaza CDF_PROJECT por el identificador único personalizable de tu proyecto.
  • Reemplaza GATEWAY_VM por el nombre de la VM que deseas configurar.
  • Reemplaza ZONE por la zona de la VM.
  • Reemplaza SUBNET por la subred.
  • Reemplaza VPC_NETWORK por el nombre de tu VM.
  • Reemplaza COMPUTE_ENGINE_SA por el nombre de tu cuenta de servicio de Compute Engine.

Usa una VPC compartida

Si usas una VPC compartida para conectar tu instancia privada de Cloud Data Fusion a fuentes en la Internet pública, crea una VM de puerta de enlace en el proyecto host en el que el intercambio de tráfico entre redes de VPC se configura con el proyecto de usuario.

Crea una ruta personalizada

Crea una ruta personalizada para conectarte a la instancia de VM de puerta de enlace que creaste.

Console

Para crear tu ruta en Cloud Console, consulta Agrega una ruta estática.

Cuando configuras la ruta, sucede lo siguiente:

  • Establece la Prioridad como mayor o igual que 1001. Establece el destino en 0.0.0.0/0.
  • Usa el mismo proyecto y la misma VPC que la instancia privada de Cloud Data Fusion.
  • Asegúrate de que la configuración de intercambio de tráfico entre redes de VPC permita exportar rutas. Esto permite que la VPC del proyecto de usuario de Cloud Data Fusion importe esta ruta personalizada a través del intercambio de tráfico entre redes de VPC.

gcloud

Para crear tu ruta en la herramienta de gcloud, sigue estos pasos:

export ROUTE=ROUTE
gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \
    --network=$VPC_NETWORK --priority=1001 \
    --destination-range=0.0.0.0/0 \
    --next-hop-instance=$GATEWAY_VM \
    --next-hop-instance-zone=$ZONE

Reemplaza ROUTE por el nombre de la ruta personalizada.

Verificar tu configuración

Después de realizar los pasos anteriores, verifica que puedas acceder a los servicios del bucket de S3 (o a otros Saas o a la nube pública) en Preview y Wrangler.

Configura una puerta de enlace con alta disponibilidad

Recomendada: Para aplicaciones esenciales, te recomendamos que crees VM con balanceo de cargas.

Crea reglas de firewall para las verificaciones de estado

Crea reglas de firewall para permitir lo siguiente:

  • El puerto 80 (HTTP) y el puerto 443 (HTTPS) de todos los rangos de origen.
  • Tráfico de TCP, ICMP y UDP de direcciones IP de sondeo de verificación de estado Por ejemplo: 130.211.0.0/22,35.191.0.0/16.

Console

Crea reglas de firewall para permitir puertos de todos los rangos de origen y reglas de firewall que permitan el tráfico de TCP, ICMP y UDP desde direcciones IP de verificación de estado, como 130.211.0.0/22,35.191.0.0/16.

Consulta Crea verificaciones de estado.

gcloud

Crea una regla de firewall para las verificaciones de estado:

export CDF_PROJECT=PROJECT_ID
export VPC_NETWORK=VPC_NETWORK

gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-http \
    --direction=INGRESS --priority=1000  \
    --network=$VPC_NETWORK \
    --action=ALLOW --rules=tcp:80  \
    --source-ranges=0.0.0.0/0  \
    --target-tags=http-server

gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-https \
    --direction=INGRESS --priority=1000 --network=$VPC_NETWORK \
    --action=ALLOW --rules=tcp:443 --source-ranges=0.0.0.0/0 \
    --target-tags=https-server

gcloud compute --project=$CDF_PROJECT firewall-rules create allow-health-checks \
    --network=$VPC_NETWORK \
    --action=allow --direction=ingress \
    --target-tags=allow-health-checks \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --rules=tcp,udp,icmp

Crear plantillas de instancias de VM de puerta de enlace

Console

Cuando creas una plantilla de instancias en la consola, sucede lo siguiente:

  • Créalo en la misma VPC que la instancia de Cloud Data Fusion.
  • Recomendado: Usa una VM con una dirección IP privada.
  • Habilita los puertos HTTP/HTTPS.
  • Habilitar el reenvío de IP
  • En el campo Secuencia de comandos de inicio, ingresa la siguiente secuencia de comandos:

    #! /bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE
    echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf
    iptables-save
    

    Para obtener más información, consulta Ejecuta secuencias de comandos de inicio.

    Para obtener el rango de IP asignado a la instancia de Cloud Data Fusion, ve a la página Detalles de la instancia de Cloud Data Fusion.

gcloud

Crea una plantilla de instancias:

export TEMPLATE_NAME=TEMPLATE_NAME
export REGION=REGION
export SUBNET=SUBNET
export SERVICE_ACCOUNT=SERVICE_ACCOUNT

gcloud beta compute --project=$CDF_PROJECT instance-templates create $TEMPLATE_NAME \
--machine-type=e2-medium \
--subnet=projects/$CDF_PROJECT/regions/$REGION/subnetworks/$SUBNET \
--network-tier=PREMIUM --metadata=startup-script=sudo\ bash\ -c\ \"echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward\"$'\n'sudo\ iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'sudo\ bash\ -c\ \"echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf\"$'\n'sudo\ iptables-save \
--can-ip-forward --no-address --maintenance-policy=MIGRATE \
--service-account=$SERVICE_ACCOUNT \
--scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append \
--region=$REGION --tags=http-server,https-server,allow-health-checks \
--image=debian-10-buster-v20210316 \
--image-project=debian-cloud --boot-disk-size=10GB \
--boot-disk-type=pd-balanced \
--boot-disk-device-name=$TEMPLATE_NAME \
--no-shielded-secure-boot --no-shielded-vtpm \
--no-shielded-integrity-monitoring \
--reservation-affinity=any

Crea una verificación de estado

No se ejecuta ningún servicio en la instancia de VM de la puerta de enlace, por lo que puedes usar el puerto 22 para la verificación de estado.

Console

Consulta Crea verificaciones de estado.

gcloud

Crea una verificación de estado de la siguiente forma:

export HEATH_CHECK=HEALTH_CHECK_NAME

gcloud beta compute health-checks create tcp $HEATH_CHECK --project=$CDF_PROJECT \
--port=22 --proxy-header=NONE --no-enable-logging \
--check-interval=5 --timeout=5 \
--unhealthy-threshold=2 --healthy-threshold=2

Crea un grupo de instancias

Con la verificación de estado creada en el paso anterior, crea un grupo de instancias:

Console

Consulta Crea grupos de instancias administrados.

gcloud

Crea un grupo de instancias:

export INSTANCE_GROUP=INSTANCE_GROUP
gcloud beta compute --project=$CDF_PROJECT instance-groups managed create $INSTANCE_GROUP \
--base-instance-name=$INSTANCE_GROUP \
--template=$TEMPLATE_NAME --size=1 --zone=$ZONE \
--health-check=test --initial-delay=300

gcloud beta compute --project "$CDF_PROJECT" instance-groups managed set-autoscaling "$INSTANCE_GROUP" \
--zone "$ZONE" --cool-down-period "60" \
--max-num-replicas "10" --min-num-replicas "1" \
--target-cpu-utilization "0.6" --mode "on"

Crea un balanceador de cargas

Crea un balanceador de cargas de TCP (ILB) del grupo de instancias creado en el paso anterior.

Agrega la ruta personalizada al balanceador de cargas

Agrega la ruta personalizada al balanceador de cargas interno (ILB) en la misma VPC que la instancia de Cloud Data Fusion.

Console

Ve a la página Red de VPC.

Ve a la página Red de VPC

En la pestaña Rutas, haz clic en Crear ruta.

Agregar ruta personalizada

gcloud

Agrega la ruta personalizada al balanceador de cargas interno:

export ROUTE=ROUTE_NAME
export ILB_FRONTEND=<ip_of_ilb_frontend>
gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \
--network=$VPC_NETWORK --priority=1001 \
--destination-range=0.0.0.0/0 \
--next-hop-ilb=$ILB_FRONTEND \
--next-hop-ilb-region=$REGION

Soluciona problemas

Cómo obtener errores de tiempo de espera de conexión en la vista previa o en Wrangler

Cuando configuras controles de salida, es posible que recibas un error Connection Timeout.

Para solucionar el problema, compruebe que se hayan implementado las siguientes opciones de configuración:

Las verificaciones de estado del grupo de instancias no se realizaron de forma correcta

Verifica que las reglas de firewall para permitir el tráfico de TCP, ICMP y UDP del rango de origen 130.211.0.0/22,35.191.0.0/16 estén presentes.

La canalización falla durante la ejecución en Dataproc

Habilita Cloud NAT en la misma región y red que el clúster de Dataproc para acceder a Internet pública en el momento de la ejecución.

¿Qué sigue?