如何将 Data Fusion 连接到 Cloud SQL Proxy

How to connect Data Fusion to Cloud SQL Proxy

我正在尝试使用私有 IP 将 Data Fusion 与 Cloud SQL MySQL 连接起来。我已经阅读了很多资源,它似乎是可能的(至少我仍然不相信这是不可能的)。我目前拥有的:

我可以从我的 VM 实例连接到 MySQL 数据库,使用以下命令 mysql -u root –host 127.0.0.1 –port 3306。尝试在 Cloud Fusion 中使用相同的参数时,我无法建立连接。应该做什么,我可以检查什么以确保所有这些设置正确。

编辑

我最初接受了 Ajai 的回答,但后来因为无法在新项目中建立连接而取消接受。可能有一个元素,需要在某处完成的事情,这里遗漏了。

到目前为止,您的方法似乎是正确的。私有 CDF 实例与私有 CloudSQL MYSQL 实例之间连接的唯一方法是通过 CloudSQL 代理。

但是,在采用这种方法时需要检查一些事项,

虚拟机设置

  • 创建私有 GCE VM(无外部 IP)
  • 拥有所有范围(允许完全访问所有 Cloud API)
  • 将操作系统更改为“容器化优化 OS”。这预装了 docker
  • 有以下作为自动化启动脚本,
docker pull gcr.io/cloudsql-docker/gce-proxy:1.16

docker run -d \
  -p 0.0.0.0:3306:3306 \
  gcr.io/cloudsql-docker/gce-proxy:1.16 /cloud_sql_proxy \
  -instances=<cloudsql-connection-name>=tcp:0.0.0.0:3306

最后一步应该启动代理和 运行 特定的 docker 图像。可以在此处找到更详细的文档(https://cloud.google.com/sql/docs/mysql/connect-docker)

CloudSQL 驱动程序

还有一件事要注意,基于 MySQL 版本,5.1.39 驱动程序可能无法一直工作。请检查 CloudSQL MySQl 特定驱动程序

的集线器

如果 none 这些建议对您有用,我会尝试更新答案。

了解问题的其他资源

对于任何想了解为什么私有 CDF 实例不能直接连接到私有 CloudSQL MySQL 实例的人,这里有一些资源在讨论它,

我已经成功地重新创建了环境,下面是详细步骤,也许您在此过程中错过了一个步骤:

  1. 在具有专用 Google 访问权限的 VPC 中创建子网 Configuring Private Google Access
  2. 创建附加到同一 VPC 的私有云数据融合实例
  3. 创建防火墙规则,允许分配的服务网络范围访问端口 3307
  4. 上的代理虚拟机
  5. 创建私有云SQL MySQL 连接到同一个 VPC 的实例
  6. 按照 Set up VPC Network Peering
  7. 中概述的步骤在 Cloud Data Fusion 和同一 VPC 之间创建了 VPC 对等互连
  8. 在步骤 1 的子网中部署了 VM
  9. 通过Install the Cloud SQL Auth proxy
  10. 中列出的步骤部署了云SQL代理
  11. 使用以下命令行执行云 SQL 代理(注意,0.0.0.0 允许绑定到所有 IP):
    *./cloud_sql_proxy -instances=<Instance Connection Name>=tcp:0.0.0.0:3307
  1. 运行 CDF控制台测试: Successful Connection

验证以上内容后,您可以将云SQL 代理自动化为linux 服务或启动脚本。

P.S。感谢您引用我们的文章!

编辑:

如果您想使用 docker 版本的代理,请按照 Ajai 的回答使用以下步骤代替步骤 7 和 8:

sudo docker run -d \
  -p 0.0.0.0:3307:3307 \
  gcr.io/cloudsql-docker/gce-proxy:latest /cloud_sql_proxy \
  -instances=<instance connection name>=tcp:0.0.0.0:3307

编辑 2

关于代理需要指出的两个关键点是您可能已经拥有 3306 绑定到同一实例上的 MySQL。使用像 3307(或其他号码)这样的端口可以减少这种可能性。请注意,对于到云 SQL 本身的 出站 连接,云 SQL 代理确实使用 3307 How the Cloud SQL Auth proxy works.

第二件事是设置监听0.0.0.0;如上所述,这绑定到所有 IP,允许代理侦听所有传入连接,而不是仅来自 127.0.0.1 的连接。