是否可以通过Host Compute Engine VM的内部或外部IP连接到Cloud SQL代理?

时间:2019-06-19 09:52:56

标签: google-cloud-platform google-cloud-sql cloud-sql-proxy

我正在测试以下配置。

  • X区域A区域中的Cloud SQL(tetsql-1)
  • 同一Region X Zone A中的Compute Engine VM(TestVM-1)。操作系统为Centos 7
  • Compute Engine VM在非默认端口(9090)上运行云SQL代理

通过上述配置,我可以使用以下命令从TestVM-1登录到testsql-1:

  `mysql -h 127.0.0.1 --port 9090 -u testuser -D testDB -p`

但是,我无法在上述命令中使用TestVM-1的内部IP。它给出了一个错误。

另一个观察结果是我可以做telnet 127.0.0.1 9090,但是当我尝试telnet <VM -Internal-IP> 9090时,返回连接拒绝错误。

有人知道这是否是预期的行为吗?如果可以预期,为什么会这样?

4 个答案:

答案 0 :(得分:2)

默认情况下,云代理使用127.0.0.1接受连接。

要配置另一个IP地址,您必须在instances参数中进行设置:

./cloud_sql_proxy -instances=<myCloudSQLproject:myCloudSQLzone:mycloudsqlinstance>=tcp:<IP_Address>:<PORT>

类似这样的东西:

./cloud_sql_proxy -instances=project_xxx:us-central1:database_yyy=tcp:10.203.23.12:9090

此配置还允许从其他主机连接到该云代理。

答案 1 :(得分:0)

因为您正在使用proxy,所以您可以从VM连接到Cloud SQL。如果您想连接到Cloud SQL,则已在Cloud SQL的“连接”标签中将虚拟机的IP地址列入了白名单,请参阅此documentation

答案 2 :(得分:0)

这是预期的行为。只能通过Virtual Private Cloud (VPC)访问私有IP。为了连接资源(例如GCE实例),它也必须位于该VPC上。

有关如何将GCE实例添加到VPC的说明,请参见此page,有关私有IP的环境要求请参见此page

答案 3 :(得分:0)

可以连接到127.0.0.1但不能使用VM的专用IP地址进行连接的原因是,代理服务器未在侦听专用IP地址。

Cloud SQL代理侦听回送适配器的内部地址127.0.0.1。此地址仅存在于计算机内部。