Nesta página, descrevemos como conectar uma instância privada do Cloud Data Fusion a uma instância privada do Cloud SQL que hospeda um banco de dados MySQL. Uma configuração semelhante funciona para instâncias do Postgres e do SQL Server. É possível estabelecer conexões públicas.
Recomendado: por motivos de segurança, use instâncias particulares do Cloud SQL e do Cloud Data Fusion.
Crie instâncias particulares no Cloud Data Fusion e no Cloud SQL.
Para se conectar a uma instância privada do Cloud SQL a partir de uma instância privada do Cloud Data Fusion, use uma VM de proxy do Compute Engine. Um proxy é necessário porque a rede do Cloud SQL não está em peering direto com a rede do Cloud Data Fusion, e os pares transitivos não podem se comunicar entre si. Consulte a Visão geral do peering de rede VPC.
Para criar as instâncias particulares, siga estas etapas:
Crie uma instância particular do Cloud Data Fusion se ainda não tiver uma. Isso inclui:
- Como configurar uma rede VPC
- Como alocar um intervalo de IP
Crie uma instância privada do Cloud SQL na mesma rede VPC que a instância do Cloud Data Fusion.
Depois que a instância for criada, acesse a página Instâncias do Cloud SQL e expanda os Detalhes da instância. Na seção Conectar-se a esta instância, copie o IP e o nome da conexão.
Criar uma VM particular do Compute Engine
Para criar a VM, digite os comandos a seguir no Cloud Shell ou em outro ambiente com o SDK Google Cloud instalado.
Os comandos criam uma VM com endereços IP internos e públicos (--no-address
não está especificado no comando de criação de VM de amostra) para que a VM possa acessar o Container Registry para receber a imagem do proxy. É possível usar IPs
internos, mas também é necessário
ativar o Acesso privado do Google para
a sub-rede em que a VM está localizada.
Exporte as seguintes variáveis de ambiente:
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
Substitua:
CUSTOMER_PROJECT
: o nome do projetoVM_REGION
: a região em que a VM do Compute Engine está localizadaCUSTOMER_VPC_NETWORK_NAME
: o nome da redeCUSTOMER_VPC_SUBNET_NAME
: o nome da sub-redeCOMPUTE_ENGINE_VM_NAME
: o nome da VM do Compute EngineSQL_INSTANCE_CONNECTION_NAME
: o nome da conexão da etapa anteriorCLOUD_DATA_FUSION_IP_RANGE
: o intervalo de endereços IPDB_PORT
: o número da porta do banco de dados do Cloud SQL
Crie uma regra de firewall para permitir o tráfego de entrada do Cloud Data Fusion com o seguinte comando da CLI gcloud:
gcloud compute firewall-rules create allow-private-cdf \ --allow=tcp:22,tcp:${SQL_PORT} \ --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
Crie a VM com o seguinte comando da CLI gcloud:
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
Encontre o IP interno da VM com o seguinte comando da CLI gcloud:
export IP=`gcloud compute \ --project=${PROJECT} instances describe ${INSTANCE_NAME} \ --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
Promova o IP interno da VM a um IP estático com o seguinte comando da CLI gcloud:
gcloud compute --project=${PROJECT} addresses create mysql-proxy \ --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
Verifique o IP a ser usado na string de conexão JDBC do MySQL do Cloud Data Fusion quando você configurar a conexão:
echo ${IP}
Depois que a VM for criada com um IP estático, use o IP como o host ou insira-o na string de conexão JDBC para acessar o banco de dados MySQL do Cloud Data Fusion.
Acessar o MySQL no Cloud Data Fusion
Antes de se conectar à instância do MySQL pela instância do Cloud Data Fusion, instale o driver JDBC do MySQL a partir do hub do Cloud Data Fusion (ou diretamente dos downloads da comunidade do MySQL).
Insira os detalhes da conexão do seu banco de dados MySQL no Cloud Data Fusion. Insira os detalhes e teste a conexão na página do Wrangler.
Opcional: outras maneiras de se conectar ao MySQL
É possível acessar o MySQL das seguintes maneiras no Cloud Data Fusion:
- Na página Studio, clique no plug-in de origem do MySQL e insira os detalhes da conexão.
Na página do Studio, use o plug-in de origem do Database, que tem propriedades semelhantes (Connection string, Username, Password e Connection Arguments).
Outras conexões
Embora a conexão de instâncias particulares seja recomendada, as seguintes conexões são possíveis:
- Uma instância pública do Cloud Data Fusion para uma instância pública do Cloud SQL
usando um proxy público do Cloud SQL ou colocando o intervalo
0.0.0.0/0
na lista de permissões em uma rede autorizada. Consulte a opção de conexão IP público do Cloud SQL. - Uma instância particular do Cloud Data Fusion e uma instância pública do Cloud SQL usando um proxy público do Cloud SQL em uma rede autorizada.
Uma instância pública do Cloud Data Fusion e uma instância privada do Cloud SQL.