Cette page explique comment connecter une instance Cloud Data Fusion privée à une instance Cloud SQL privée qui héberge une base de données MySQL. Une configuration similaire fonctionne pour les instances Postgres et SQL Server. Des connexions publiques sont possibles.
Recommandé: Pour des raisons de sécurité, utilisez des instances privées de Cloud SQL et Cloud Data Fusion.
Créer des instances privées dans Cloud Data Fusion et Cloud SQL
Pour vous connecter à une instance Cloud SQL privée à partir d'une instance Cloud Data Fusion privée, vous devez utiliser un proxy de VM Compute Engine. Un proxy est requis, car le réseau Cloud SQL n'est pas directement appairé au réseau Cloud Data Fusion, et les pairs transitifs ne peuvent pas communiquer entre eux (consultez la présentation de l'appairage de réseaux VPC).
Pour créer les instances privées, procédez comme suit:
Si vous n'en avez pas encore, créez une instance Cloud Data Fusion privée. Notre offre comprend :
- Configurer un réseau VPC
- Attribuer une plage d'adresses IP
Créez une instance Cloud SQL privée sur le même réseau VPC que votre instance Cloud Data Fusion.
Une fois l'instance créée, accédez à la page Instances de Cloud SQL et développez la section Détails de l'instance. Dans la section Se connecter à cette instance, copiez l'adresse IP et le nom de la connexion.
Créer une VM Compute Engine privée
Pour créer la VM, vous pouvez saisir les commandes suivantes dans Cloud Shell ou dans un autre environnement dans lequel le SDK Google Cloud est installé.
Les commandes créent une VM avec des adresses IP internes et publiques (--no-address
n'est pas spécifié dans l'exemple de commande de création de VM) afin que la VM puisse accéder à Container Registry pour obtenir l'image du proxy. Vous pouvez utiliser des adresses IP internes, mais vous devez également activer l'accès privé à Google pour le sous-réseau dans lequel se trouve la VM.
Exportez les variables d'environnement suivantes:
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 | grep cos-stable | awk 'FNR == 1 {print $1}') export SQL_PORT=DB_PORT # MySQL 3306 # PostgreSQL 5432 # SQLServer 1433
Remplacez les éléments suivants :
CUSTOMER_PROJECT
: nom de votre projetVM_REGION
: région où se trouve la VM Compute EngineCUSTOMER_VPC_NETWORK_NAME
: nom de votre réseauCUSTOMER_VPC_SUBNET_NAME
: nom de votre sous-réseauCOMPUTE_ENGINE_VM_NAME
: nom de la VM Compute EngineSQL_INSTANCE_CONNECTION_NAME
: nom de connexion de l'étape précédenteCLOUD_DATA_FUSION_IP_RANGE
: plage d'adresses IPDB_PORT
: numéro de port de la base de données Cloud SQL
Créez une règle de pare-feu pour autoriser le trafic entrant de Cloud Data Fusion à l'aide de la commande gcloud CLI suivante:
gcloud compute firewall-rules create allow-private-cdf \ --allow=tcp:22,tcp:${SQL_PORT} \ --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
Créez la VM à l'aide de la commande gcloud CLI suivante:
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
Obtenez l'adresse IP interne de la VM à l'aide de la commande gcloud CLI suivante:
export IP=`gcloud compute \ --project=${PROJECT} instances describe ${INSTANCE_NAME} \ --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
Transformez l'adresse IP interne de la VM en adresse IP statique à l'aide de la commande gcloud CLI suivante:
gcloud compute --project=${PROJECT} addresses create mysql-proxy \ --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
Obtenez l'adresse IP à utiliser dans la chaîne de connexion JDBC MySQL Cloud Data Fusion lorsque vous configurez la connexion:
echo ${IP}
Une fois la VM créée avec une adresse IP statique, utilisez cette adresse en tant qu'hôte ou saisissez-la dans la chaîne de connexion JDBC pour accéder à la base de données MySQL à partir de Cloud Data Fusion.
Accéder à MySQL depuis Cloud Data Fusion
Avant de pouvoir vous connecter à l'instance MySQL depuis l'instance Cloud Data Fusion, installez le pilote JDBC MySQL à partir du hub Cloud Data Fusion (ou directement à partir des téléchargements de la communauté MySQL).
Saisissez les informations de connexion pour votre base de données MySQL dans Cloud Data Fusion. Vous pouvez saisir les détails et tester la connexion sur la page Wrangler.
Facultatif: Autres moyens de se connecter à MySQL
Vous pouvez accéder à MySQL de différentes manières dans Cloud Data Fusion:
- Sur la page Studio, cliquez sur le plug-in source MySQL et saisissez les informations de connexion.
Sur la page Studio, utilisez plutôt le plug-in de la source de base de données, qui possède des propriétés similaires (Chaîne de connexion, Nom d'utilisateur, Mot de passe et Arguments de connexion).
Autres connexions
Bien qu'il soit recommandé de connecter des instances privées, les connexions suivantes sont possibles:
- Une instance Cloud Data Fusion publique vers une instance Cloud SQL publique (à l'aide d'un proxy Cloud SQL public ou en ajoutant la plage
0.0.0.0/0
dans un réseau autorisé) Consultez l'option de connexion IP publique pour Cloud SQL. - Une instance Cloud Data Fusion privée et une instance Cloud SQL publique (via un proxy Cloud SQL public dans un réseau autorisé).
Une instance Cloud Data Fusion publique et une instance Cloud SQL privée.