Problem
User when connecting Private CDF instance to Private PostgreSQL you see connection.
Connection to :5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
Solution(s)
Assuming private CDF instance is create as per instructions here and also private Cloud SQL or PostgreSQL is created as required.
Now that both the instances are setup create a private GCE VM (with only internal IP) using the following
gcloud
command,
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 SUBNET=<customer-vpc-subnet-name> export NAME=<gce-vm-name> export MYSQL_CONN=<mysql-instance-connection-name> # Create the VM gcloud beta compute --project=${PROJECT} instances create ${NAME} \ --zone=${ZONE} --machine-type=g1-small --subnet=${SUBNET} \ --no-address --metadata=startup-script="docker run -d \ -p 0.0.0.0:3306:3306 gcr.io/cloudsql-docker/gce-proxy:1.16 /cloud_sql_proxy \ -instances=${MYSQL_CONN}=tcp:0.0.0.0:3306" \ --maintenance-policy=MIGRATE --scopes=https://www.googleapis.com/auth/cloud-platform \ --image=cos-69-10895-385-0 --image-project=cos-cloud # Get the VM internal IP export IP=`gcloud compute instances describe ${NAME} \ --zone ${ZONE} | grep "networkIP" | awk '{print $2}'` # Promote the VM internal IP to static IP gcloud compute addresses create proxy --addresses ${IP} \ --region ${REGION} --subnet ${SUBNET} # Note down the IP to be used in CDF MySQL or PostGreSQL JDBC # connection string echo ${IP}
Once the VM is created with a static IP now use this as the host for the mysql or postgresql database to be accessed from Cloud Data Fusion.