【发布时间】:2018-11-02 03:47:49
【问题描述】:
我一直在尝试使用专用 IP 连接设置 Google Cloud SQL,其中 它绑定的IP范围是手动分配的,没有成功。一世 不知道这是否是实现中的错误,因为它仍处于测试阶段,如果 文档中缺少某些内容,或者我只是做错了什么。 (命令行会话在底部,用于快速总结我的工作 看到。)
最初,我将其设置为自动分配 IP 范围。这一切都奏效了 很好,只是它选择了 172.17.0.0/24,这是其中一个网络 由我的 GCE 实例上的 docker 管理,所以我无法从那里连接(但是 可以在另一台没有 docker 的机器上)。所以我试着去看看手册 分配路线。
首先,我拆除了所有已在其上创建的关联网络对象
我的代表。有两个 VPC 对等互连,cloudsql-postgres-googleapis-com 和
servicenetworking-googleapis-com,我删除了,然后我确认了
与它们关联的路由条目也消失了。
然后,我按照https://cloud.google.com/vpc/docs/configure-private-services-access#allocating-range 的指示创建了 10.10.0.0/16,因为我希望它在我的default 网络中,即
自动模式,所以我只限于下半部分(目前很清楚)。
那时,我回到了 Cloud SQL 实例创建页面,因为它
应该为我做剩下的事情。我选中了“私有 IP”框,然后选择了
default网络。
当时我没有做笔记,所以我的记忆可能有缺陷, 特别是因为我在后来的尝试中的经验一直不同, 但我记得看到的是在网络选择下拉列表下方,它说 “此实例将使用现有的托管服务连接”。我以为 这意味着它将使用我创建的地址范围,并继续使用 实例创建,但实例再次登陆 172.17.0.0/24 网络。
大约第三次返回,该消息之前的位置,它有一个选择框 列出我的地址范围。再一次,我的记忆力很差,所以我不知道我是否 看到或点击了“连接”按钮,但最终结果是一样的。
在第四次尝试时,我确实注意到了“连接”按钮,并确保单击 它,并等待它说它成功了。它做了什么,有点:它取代了 下拉菜单和按钮与我之前看到的关于使用 现有的连接。再一次,实例是在错误的网络上创建的。
我尝试了第五次,这一次创建了一个新的地址范围,其中包含一个新的
name -- google-managed-services-default -- 这是
当我第一次开始时,自动分配已将其归还(以及
私人服务访问文档建议)。但即使有这个名字,而且明确地
选择它,我仍然在错误的网络上找到了实例。
确实,我现在看到点击“连接”后,我可以去查看路线和 看到创建的路由是到 172.17.0.0/24。
如果我从命令行执行所有操作,似乎也会发生同样的事情:
$ gcloud beta compute addresses list
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS
google-managed-services-default 10.11.0.0/16 INTERNAL VPC_PEERING default RESERVED
$ gcloud beta services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=google-managed-services-default \
--network=default \
--project=...
$ gcloud beta services vpc-peerings list --network=default
---
network: projects/.../global/networks/default
peering: servicenetworking-googleapis-com
reservedPeeringRanges:
- google-managed-services-default
---
network: projects/.../global/networks/default
peering: cloudsql-postgres-googleapis-com
reservedPeeringRanges:
- google-managed-services-default
$ gcloud beta compute routes list
NAME NETWORK DEST_RANGE NEXT_HOP PRIORITY
peering-route-ad7b64a0841426ea default 172.17.0.0/24 cloudsql-postgres-googleapis-com 1000
所以现在我不确定还能尝试什么。是否有一些我不想清除的状态?路由应该如何连接到地址范围?当我只要求一个时,为什么它会创建两个对等?如果我要手动创建一条到正确地址范围的路由,我认为这不会起作用,因为 Postgres 端点仍然位于错误的地址。
(是的,我可以重新配置 docker,但我不想这样做。)
【问题讨论】:
-
在一位成功在 AWS 上运行同样的事情的朋友的推荐下,我尝试将它连接到
default以外的 VPC,并且成功了:我得到了 10.x.0.0 /16 网络我想要。它没有让我选择地址范围(我只创建了一个),但说它将使用现有的地址范围,并提供与我的问题相同的消息。有趣的是,在运行vpc-peerings connect之后,cloudsql-postgres-googleapis-com对等互连还不存在,这与default网络不同;在创建数据库之前它没有出现。也许这就是问题的一部分? -
另一个实验:为另一个 VPC 创建一个新的地址范围,
vpc-peerings connect最终将它连接到第一个地址范围,尽管我明确告诉它使用新的地址范围。所以看起来它只是使用第一个创建的,不管它被告知什么。
标签: google-cloud-platform google-cloud-sql