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.
Recommandation: Pour des raisons de sécurité, utilisez aux instances privées de Cloud SQL et de 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 depuis une instance une instance Cloud Data Fusion, vous utilisez une VM Compute Engine proxy. Un proxy est requise, car le réseau Cloud SQL n'est pas directement appairé avec le réseau Cloud Data Fusion, et les pairs transitifs ne peuvent pas communiquer avec (consultez la page Présentation de l'appairage de réseaux VPC).
Pour créer les instances privées, procédez comme suit :
Si vous ne l'avez pas encore fait, créez une instance Cloud Data Fusion privée Compute Engine. Par exemple :
- 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 Cloud SQL. et développez la section Détails de l'instance. Dans la fenêtre Connect to this instance, copiez l'adresse IP et le nom de connexion.
Créer une VM Compute Engine privée
Pour créer la VM, vous pouvez saisir les commandes suivantes dans Cloud Shell ou 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 qu'elle puisse accéder au 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 où 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 --filter=family:cos-stable --format='value(selfLink.scope())' --limit=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 dans laquelle La VM Compute Engine se trouveCUSTOMER_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 la connexion de l'étape précédenteCLOUD_DATA_FUSION_IP_RANGE
: plage d'adresses IPDB_PORT
: numéro de port du Base de données Cloud SQL
Créez une règle de pare-feu pour autoriser le trafic entrant 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}'`
Convertissez l'adresse IP interne de la VM en adresse IP statique à l'aide du code suivant : Commande gcloud CLI:
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 l'adresse IP comme hôte ou saisissez-la La chaîne de connexion JDBC pour accéder à la base de données MySQL depuis Cloud Data Fusion.
Accéder à MySQL depuis Cloud Data Fusion
Avant de pouvoir vous connecter à l'instance MySQL depuis Cloud Data Fusion , installez le pilote JDBC MySQL à partir de Cloud Data Fusion Hub (ou directement depuis téléchargements de la communauté MySQL).
Saisissez les informations de connexion de votre base de données MySQL dans Cloud Data Fusion. Vous pouvez saisir les informations et tester la connexion sur la page Wrangler.
Facultatif : Autres façons 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 de source MySQL, puis saisissez les informations de connexion.
Sur la page Studio, utilisez plutôt le plug-in source de base de données, qui contient des propriétés similaires (Chaîne de connexion, Nom d'utilisateur, Mot de passe et Arguments de connexion).
Autres connexions
Bien que la connexion d'instances privées soit recommandée, les connexions suivantes sont possibles :
- Une instance Cloud Data Fusion publique à une instance Cloud SQL publique (à l'aide d'un proxy Cloud SQL public ou en ajoutant la plage
0.0.0.0/0
à la liste d'autorisation d'un réseau autorisé). Consultez le option de connexion IP publique pour Cloud SQL. - Une instance Cloud Data Fusion privée et un service Cloud SQL public (à l'aide d'un proxy Cloud SQL public sur une réseau).
Une instance Cloud Data Fusion publique et une instance Cloud SQL privée Compute Engine.