2

我正在测试以下配置。

  • 区域 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

4 回答 4

5

云代理默认使用 127.0.0.1,它接受连接。

要配置另一个 IP 地址,您必须在实例参数中设置它:

./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

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

于 2020-01-03T11:26:30.273 回答
0

您可以从 VM 连接到 Cloud SQL,因为您使用的是代理。如果您想连接到 Cloud SQL,那么您已在 Cloud SQL 的连接选项卡中将您的 VM 的 IP 地址列入白名单,请参阅此文档

于 2019-06-19T10:13:42.973 回答
0

您可以连接127.0.0.1但无法使用 VM 的私有 IP 地址连接的原因是代理未侦听私有 IP 地址。

Cloud SQL 代理侦听环回适配器的内部地址,即127.0.0.1. 这个地址只存在于计算机内部。

于 2019-06-19T23:03:55.790 回答
0

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

有关如何将 GCE 实例添加到 VPC 的说明,请参阅此页面,有关私有 IP 的环境要求的更多信息,请参阅此页面。

于 2019-06-19T18:19:33.120 回答