是否可以通过主机计算引擎 VM 的内部或外部 IP 连接到云 SQL 代理?

Is it possible to connect to Cloud SQL Proxy via Host Compute Engine VM's Internal or External IP?

我正在测试以下配置。

通过以上配置,我可以使用以下命令从 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 returns 连接被拒绝错误。

有谁知道这是否是预期的行为?如果这是预期的,为什么会这样?

您可以从 VM 连接到云 SQL,因为您使用的是 proxy. If you would like to connect to your Cloud SQL then you have whitelist the IP address of your VM in Cloud SQL's connections tab, please refer to this documentation

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

有关专用 IP 的环境要求的更多信息,请参阅此 page for instructions on how to add a GCE instance to a VPC, and see this page

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

云 SQL 代理侦听环回适配器的内部地址 127.0.0.1。该地址只存在于电脑内部。

云代理默认使用 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

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