如何将 Data Fusion 连接到 Cloud SQL Proxy
How to connect Data Fusion to Cloud SQL Proxy
我正在尝试使用私有 IP 将 Data Fusion 与 Cloud SQL MySQL 连接起来。我已经阅读了很多资源,它似乎是可能的(至少我仍然不相信这是不可能的)。我目前拥有的:
- 具有私有 IP 的 Data Fusion 私有实例。
- 云 SQL 用于 MySQL 具有私有 IP 的实例。
- 部署在虚拟机上的云 SQL 代理。
- 一切都连接到相同的默认 VPC 网络。
- 防火墙完全打开(IP 范围的入口、出口:0.0.0.0/0 和所有协议端口)
我可以从我的 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 实例的人,这里有一些资源在讨论它,
我已经成功地重新创建了环境,下面是详细步骤,也许您在此过程中错过了一个步骤:
- 在具有专用 Google 访问权限的 VPC 中创建子网 Configuring Private Google Access
- 创建附加到同一 VPC 的私有云数据融合实例
- 创建防火墙规则,允许分配的服务网络范围访问端口 3307
上的代理虚拟机
- 创建私有云SQL MySQL 连接到同一个 VPC 的实例
- 按照 Set up VPC Network Peering
中概述的步骤在 Cloud Data Fusion 和同一 VPC 之间创建了 VPC 对等互连
- 在步骤 1 的子网中部署了 VM
- 通过Install the Cloud SQL Auth proxy
中列出的步骤部署了云SQL代理
- 使用以下命令行执行云 SQL 代理(注意,0.0.0.0 允许绑定到所有 IP):
*./cloud_sql_proxy -instances=<Instance Connection Name>=tcp:0.0.0.0:3307
- 运行 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 的连接。
我正在尝试使用私有 IP 将 Data Fusion 与 Cloud SQL MySQL 连接起来。我已经阅读了很多资源,它似乎是可能的(至少我仍然不相信这是不可能的)。我目前拥有的:
- 具有私有 IP 的 Data Fusion 私有实例。
- 云 SQL 用于 MySQL 具有私有 IP 的实例。
- 部署在虚拟机上的云 SQL 代理。
- 一切都连接到相同的默认 VPC 网络。
- 防火墙完全打开(IP 范围的入口、出口:0.0.0.0/0 和所有协议端口)
我可以从我的 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 实例的人,这里有一些资源在讨论它,
我已经成功地重新创建了环境,下面是详细步骤,也许您在此过程中错过了一个步骤:
- 在具有专用 Google 访问权限的 VPC 中创建子网 Configuring Private Google Access
- 创建附加到同一 VPC 的私有云数据融合实例
- 创建防火墙规则,允许分配的服务网络范围访问端口 3307 上的代理虚拟机
- 创建私有云SQL MySQL 连接到同一个 VPC 的实例
- 按照 Set up VPC Network Peering 中概述的步骤在 Cloud Data Fusion 和同一 VPC 之间创建了 VPC 对等互连
- 在步骤 1 的子网中部署了 VM
- 通过Install the Cloud SQL Auth proxy 中列出的步骤部署了云SQL代理
- 使用以下命令行执行云 SQL 代理(注意,0.0.0.0 允许绑定到所有 IP):
*./cloud_sql_proxy -instances=<Instance Connection Name>=tcp:0.0.0.0:3307
- 运行 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 的连接。