En esta página, se describe cómo conectar una instancia privada de Cloud Data Fusion a una instancia privada de Cloud SQL que aloja una base de datos MySQL. Una configuración similar funciona para instancias de Postgres y SQL Server. Se pueden realizar conexiones públicas.
Recomendado: Por motivos de seguridad, usa instancias privadas de Cloud SQL y Cloud Data Fusion.
Crea instancias privadas en Cloud Data Fusion y Cloud SQL
Para conectarte a una instancia privada de Cloud SQL desde una En la instancia de Cloud Data Fusion, usarás una VM de proxy de Compute Engine. Un proxy es necesario porque la red de Cloud SQL no intercambia el tráfico directamente la red de Cloud Data Fusion y los pares transitivos no pueden comunicarse entre sí (consulta la Descripción general del intercambio de tráfico entre redes de VPC).
Para crear las instancias privadas, sigue estos pasos:
Si aún no tienes una, crea una cuenta privada de Cloud Data Fusion . Esto incluye lo siguiente:
- Configura una red de VPC
- Asignación de un rango de IP
Crea una instancia privada de Cloud SQL en la misma red de VPC que tu instancia de Cloud Data Fusion.
Después de crear la instancia, ve a Instancias de Cloud SQL y expande los Detalles de la instancia. En la sección Conectarse a esta instancia, copia la IP y el nombre de la conexión.
Crea una VM privada de Compute Engine
Para crear la VM, puedes ingresar los siguientes comandos en Cloud Shell o en otro entorno en el que esté instalado el SDK de Google Cloud.
Los comandos crean una VM con direcciones IP internas y públicas
(--no-address
no se especifica en el comando de creación de la VM de muestra) para que la
La VM puede acceder a Container Registry para obtener la imagen de proxy. Puedes usar bases de datos internas
pero también debes
Habilitar el Acceso privado a Google
la subred en la que está ubicada la VM.
Exporta las siguientes variables de entorno:
export PROJECT=CUSTOMER_PROJECT export REGION=VM_REGION export ZONE=`gcloud compute zones list --filter="name=${REGION}" --limit 1 --uri --project=${PROJECT}| sed 's/.*\///'` export NETWORK=CUSTOMER_VPC_NETWORK_NAME export SUBNET=CUSTOMER_VPC_SUBNET_NAME export INSTANCE_NAME=COMPUTE_ENGINE_VM_NAME export SQL_CONN=SQL_INSTANCE_CONNECTION_NAME export CDF_IP_RANGE=CLOUD_DATA_FUSION_IP_RANGE export VM_IMAGE=$(gcloud compute images list --project=$PROJECT --filter=family:cos-stable --format='value(selfLink.scope())' --limit=1) export SQL_PORT=DB_PORT # MySQL 3306 # PostgreSQL 5432 # SQLServer 1433
Reemplaza lo siguiente:
CUSTOMER_PROJECT
: El nombre del proyectoVM_REGION
: Es la región en la que Se ubica la VM de Compute EngineCUSTOMER_VPC_NETWORK_NAME
: Es el nombre de tu red.CUSTOMER_VPC_SUBNET_NAME
: Es el nombre de tu subred.COMPUTE_ENGINE_VM_NAME
: Es el nombre del VM de Compute EngineSQL_INSTANCE_CONNECTION_NAME
: La conexión del paso anteriorCLOUD_DATA_FUSION_IP_RANGE
: Es la dirección IP. rangoDB_PORT
: Es el número de puerto de la Base de datos de Cloud SQL
Crea una regla de firewall para permitir el tráfico de entrada de Cloud Data Fusion con el siguiente comando de la CLI de gcloud:
gcloud compute firewall-rules create allow-private-cdf \ --allow=tcp:22,tcp:${SQL_PORT} \ --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
Crea la VM con el siguiente comando de gcloud CLI:
gcloud compute --project=${PROJECT} instances create ${INSTANCE_NAME} \ --zone=${ZONE} \ --machine-type=g1-small \ --subnet=${SUBNET} \ --metadata=startup-script="docker run -d -p 0.0.0.0:${SQL_PORT}:${SQL_PORT} gcr.io/cloudsql-docker/gce-proxy:latest /cloud_sql_proxy -instances=${SQL_CONN}=tcp:0.0.0.0:${SQL_PORT}" \ --maintenance-policy=MIGRATE \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --image=${VM_IMAGE} \ --image-project=cos-cloud
Obtén la IP interna de la VM con el siguiente comando de gcloud CLI:
export IP=`gcloud compute \ --project=${PROJECT} instances describe ${INSTANCE_NAME} \ --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
Promover la IP interna de la VM a una IP estática con la siguiente información Comando de gcloud CLI:
gcloud compute --project=${PROJECT} addresses create mysql-proxy \ --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
Obtén la IP que se usará en la cadena de conexión de JDBC de MySQL en Cloud Data Fusion cuando configures la conexión:
echo ${IP}
Después de crear la VM con una IP estática, usa la IP como host o ingrésala en la cadena de conexión de JDBC para acceder a la base de datos de MySQL desde Cloud Data Fusion.
Accede a MySQL desde Cloud Data Fusion
Antes de conectarte a la instancia de MySQL desde Cloud Data Fusion instala el controlador MySQL JDBC desde Cloud Data Fusion Hub (o directamente desde Descargas de la comunidad de MySQL).
Ingresa los detalles de la conexión de la base de datos de MySQL en Cloud Data Fusion. Puedes ingresar los detalles y probar la conexión en la página de Wrangler.
Opcional: Otras formas de conectarse a MySQL
En Cloud Data Fusion, puedes acceder a MySQL de las siguientes maneras:
- En la página de Studio, haz clic en el complemento de origen de MySQL y, luego, ingresa los detalles de la conexión.
En la página de Studio, usa el complemento de origen de Database, que tiene propiedades similares (Cadena de conexión, Nombre de usuario, Contraseña y Argumentos de conexión).
Otras conexiones
Aunque se recomienda conectar instancias privadas, las siguientes conexiones posibles:
- Una instancia pública de Cloud Data Fusion a un servicio público de Cloud SQL
(mediante un proxy público de Cloud SQL o una lista de entidades permitidas
rango
0.0.0.0/0
en una red autorizada). Consulta la opción de conexión de IP pública para Cloud SQL. - Una instancia privada de Cloud Data Fusion y Cloud SQL público (a través de un proxy público de Cloud SQL en un red).
Una instancia pública de Cloud Data Fusion y una instancia privada de Cloud SQL instancia.