从具有 public 和私有 IP 的 VM 连接到云 SQL 实例 - 如何确保为连接选择正确的网络接口?
Connecting to a Cloud SQL instance from VM with public and private IPs - how to ensure the right network interface is chosen for the connection?
我要设置的内容:
- Cloud SQL 具有私有 IP 的实例,Postgresql 数据库
- 具有 public IP 的 VM,但在与 SQL 实例相同的 VPC 网络上也有一个私有 IP(VM、SQL 实例和 VPC 都在同一地区)
- VM 有一个具有足够 Cloud SQL client/viewer 权限的服务帐户
- 可以从 VM 连接到 SQL 个实例。
会发生什么?
- 任何实际使用连接的尝试,例如 psql 客户端或 db-migrate,都会挂起 - 例如
psql --host 10.78.0.3 -U gcp-network-issue-demo-staging-db-user gcp-network-issue-demo-staging-database
不会提示输入密码,只需坐在那里。
- 如果我从设置中删除 VM 的 public IP 地址,它可以正常连接。但是,我需要一个 public 可访问的 VM 以便其他服务连接到它..
我假设 psql 连接尝试通过错误的网络接口或其他东西(这可能只是我对网络内容的无知)- 我怎样才能让它工作?我错过了什么?
PS:这基本上是与 相同的问题,但那里的评论者似乎想要一个与 Terraform 相关的问题和一个与连接问题相关的问题。
部分截图:
虚拟机 IP:
数据库 IP:
VM 的网络配置:
数据库实例的私有 IP 配置:
这是专用网络的设置:
不明白为什么DB实例的私有IP(10.78.0.3
)不是私有网络范围内的IP(10.2.0.0
-10.2.0.24
,对吧?)..?是我的问题吗?
回答你的问题:
I don't understand why the private IP of the DB instance (10.78.0.3) is not an IP from the range of the private network (10.2.0.0-10.2.0.24, right?)..?
云 SQL 实例从 allocated range. When you setup a private services access 分配了一个 IP 地址,在您的 VPC gcp-network-issue-demo-staging-network 和 使用分配范围 10.78.0.0/16 的服务生产者 VPC 网络
此外,查看您的 VM 网络配置,我看到 VM 在两个不同的 VPC 中有两个网卡(default 和 gcp-network-issue-demo-staging-network).你的情况只能使用一个网卡。
下一步,请确保您的 VM 仅使用您用于创建 private connection 的 VPC 网络。完成后,您应该能够使用以下命令连接到云 SQL 实例 IP:
telnet 10.78.0.3 3306
我要设置的内容:
- Cloud SQL 具有私有 IP 的实例,Postgresql 数据库
- 具有 public IP 的 VM,但在与 SQL 实例相同的 VPC 网络上也有一个私有 IP(VM、SQL 实例和 VPC 都在同一地区)
- VM 有一个具有足够 Cloud SQL client/viewer 权限的服务帐户
- 可以从 VM 连接到 SQL 个实例。
会发生什么?
- 任何实际使用连接的尝试,例如 psql 客户端或 db-migrate,都会挂起 - 例如
psql --host 10.78.0.3 -U gcp-network-issue-demo-staging-db-user gcp-network-issue-demo-staging-database
不会提示输入密码,只需坐在那里。 - 如果我从设置中删除 VM 的 public IP 地址,它可以正常连接。但是,我需要一个 public 可访问的 VM 以便其他服务连接到它..
我假设 psql 连接尝试通过错误的网络接口或其他东西(这可能只是我对网络内容的无知)- 我怎样才能让它工作?我错过了什么?
PS:这基本上是与
部分截图:
虚拟机 IP:
数据库 IP:
VM 的网络配置:
数据库实例的私有 IP 配置:
这是专用网络的设置:
不明白为什么DB实例的私有IP(10.78.0.3
)不是私有网络范围内的IP(10.2.0.0
-10.2.0.24
,对吧?)..?是我的问题吗?
回答你的问题:
I don't understand why the private IP of the DB instance (10.78.0.3) is not an IP from the range of the private network (10.2.0.0-10.2.0.24, right?)..?
云 SQL 实例从 allocated range. When you setup a private services access 分配了一个 IP 地址,在您的 VPC gcp-network-issue-demo-staging-network 和 使用分配范围 10.78.0.0/16 的服务生产者 VPC 网络
此外,查看您的 VM 网络配置,我看到 VM 在两个不同的 VPC 中有两个网卡(default 和 gcp-network-issue-demo-staging-network).你的情况只能使用一个网卡。
下一步,请确保您的 VM 仅使用您用于创建 private connection 的 VPC 网络。完成后,您应该能够使用以下命令连接到云 SQL 实例 IP:
telnet 10.78.0.3 3306