En esta página, se describe cómo conectarse 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, la salida ocurre cuando creas una canalización que lee o escribe en un servicio de SaaS, como Salesforce, o un servicio de nube pública, como Amazon S3.
El control de salida define barreras de seguridad 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 correctamente 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 con la Internet pública cuando desarrollas una canalización:
Cuando diseñas tu canalización en esta situación, Cloud Data Fusion enruta el tráfico de salida a través de tu proyecto de cliente en la vista previa de Cloud Data Fusion 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 se exportan a una VPC del proyecto de usuario mediante el Intercambio de tráfico entre 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 un SaaS o una nube de terceros a través de la Internet pública. Administra esta VM en tu proyecto de cliente. Puedes configurarla 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 información sobre la configuración del control de salida en los entornos de diseño y ejecución, consulta Controla la salida en una instancia privada.
Antes de comenzar
Puedes conectarte a una fuente pública desde una instancia privada en Cloud Data Fusion 6.4 o versiones posteriores. Para usar una de esas versiones, puedes crear una instancia privada de Cloud Data Fusion o actualizar una instancia existente a la versión 6.4.0.
Cuando creas una conexión de intercambio de tráfico entre redes de VPC Para tu instancia, selecciona Exportar rutas.
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 al acceso a cualquier fuente de datos a través de la Internet pública cuando diseñas una canalización en vista previa o Wrangler.
En esta guía, se usa una sola VM, pero para las aplicaciones esenciales, te recomendamos que crees VM con balanceo de cargas. Para obtener más información, consulta Configura VM de alta disponibilidad.
Crea una puerta de enlace de 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.
Crea una instancia de VM de puerta de enlace y reglas de firewall
Console
Ve a la página Instancias de VM.
Haz clic en Crear instancia. Se recomienda usar una VM sin IP externa.
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.
Habilita el reenvío de IP para la instancia en la misma red que la instancia de Cloud Data Fusion.
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 la página Ejecuta secuencias de comandos de inicio.
Para obtener el rango de IP asignado de la instancia de Cloud Data Fusion, ve a la página Detalles de la instancia de Cloud Data Fusion.
gcloud
Para crear la VM de puerta de enlace y las reglas de firewall, ejecuta la siguiente secuencia de comandos en Google Cloud CLI:
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=$VPC_NETWORK --action=ALLOW --rules=tcp:80 --source-ranges=CDF_IP_RANGE --target-tags=http-server gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-https --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:443 --source-ranges=CDF_IP_RANGE --target-tags=https-server
Reemplaza lo siguiente:
- CDF_PROJECT: Es el identificador único personalizable de tu proyecto.
- GATEWAY_VM: Es el nombre de la VM que deseas configurar.
- ZONE: la zona de tu VM
- SUBNET: Es la subred.
- VPC_NETWORK: El nombre de tu VM.
- COMPUTE_ENGINE_SA: Es el nombre de tu servicio de Compute Engine. cuenta
- CDF_IP_RANGE: El rango de IP que se asigna a la instancia de Cloud Data Fusion
Usa una VPC compartida
Si usas una VPC compartida para conectar tu instancia privada de Cloud Data Fusion a las fuentes en la Internet pública, crea una VM de puerta de enlace en el proyecto host donde El intercambio de tráfico entre redes de VPC se configura en el proyecto de usuario.
Crea una ruta personalizada
Crea una ruta personalizada para conectarte a la instancia de VM de la puerta de enlace que creaste.
Console
Para crear tu ruta en la consola de Google Cloud, consulta Agrega una ruta estática.
Cuando configures la ruta, haz lo siguiente:
- Establece la Prioridad en
1001
o más. Establece el destino en el rango de IP asignado a la instancia de Cloud Data Fusion. - Usa el mismo proyecto y VPC que la instancia privada de Cloud Data Fusion.
- Asegúrate de que la configuración del intercambio de tráfico entre redes de VPC permita exportar rutas, de modo que la VPC del proyecto de usuario de Cloud Data Fusion importe esta ruta personalizada mediante el intercambio de tráfico entre redes de VPC.
gcloud
Para crear tu ruta en gcloud CLI, 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 lo siguiente:
- ROUTE: Es el nombre de la ruta personalizada.
Verifica la configuración
Después de realizar los pasos anteriores, verifica que puedas acceder al bucket de S3 (o cualquier otro servicio de SaaS o de nube pública) en Preview y Wrangler.
Configura una puerta de enlace con alta disponibilidad
Recomendado: Para aplicaciones de servicio crítico, 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:
- Puerto 80 (HTTP) y 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 para permitir el tráfico de TCP, ICMP y UDP de direcciones IP de sondeo 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=CDF_IP_RANGE \ --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=CDF_IP_RANGE \ --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
Reemplaza lo siguiente:
- PROJECT_ID: Es el identificador único personalizable de tu proyecto.
- VPC_NETWORK: El nombre de tu red de VPC
- CDF_IP_RANGE: el rango de direcciones IP asignado a Cloud Data Fusion.
Crea una plantilla de instancia de VM de la puerta de enlace
Console
Cuando creas una plantilla de instancias en Console, haz lo siguiente:
- Créala 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.
- Habilita 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 la página Ejecuta secuencias de comandos de inicio.
Para obtener el rango de IP asignado de 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 esta instancia de VM de puerta de enlace, por lo que puedes usar el puerto 22
para tu 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
Crear 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) desde el 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 Redes de VPC.
En la pestaña Rutas, haz clic en Crear ruta.
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
Obtén errores de tiempo de espera de conexión en vista previa o Wrangler
Cuando configuras controles de salida, es posible que recibas un error Connection Timeout
.
Para solucionar el problema, verifica que se hayan implementado las siguientes opciones de configuración:
- El intercambio de tráfico entre redes de VPC entre el proyecto de usuario y el proyecto de cliente está presente.
- El intercambio de tráfico entre redes de VPC tiene habilitadas las rutas de exportación.
- No falta la ruta personalizada a la VM o el ILB de la puerta de enlace.
- No faltan las reglas de firewall que permiten el tráfico de
HTTP
yHTTPS
.
Las verificaciones de estado del grupo de instancias no se realizaron de forma correcta
Comprueba 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 mientras se ejecuta en Dataproc
Para acceder a la Internet pública en el momento de la ejecución, habilita Cloud NAT en la misma región y red que el clúster de Dataproc.
¿Qué sigue?
- Aprende a controlar la salida en una instancia privada de Cloud Data Fusion solo para un conjunto específico de dominios.
- Obtén más información sobre las herramientas de redes en Cloud Data Fusion.