2

我有一些当前具有公共 IP 的 Cloud SQL 实例。如果我将某些具有安全意识的人更改为拥有私有 IP,这会让他们感到高兴。

我正在按照此处记录的说明进行操作:https ://cloud.google.com/sql/docs/mysql/private-ip

这些说明的摘要:

  1. 确保您的共享 VPC 主机启用了 servicenetworking.googleapis.com
  2. 确保您的项目启用了 servicenetworking.googleapis.com
  3. 为您的新私有 IP 分配一个 IP 地址范围
  4. 配置 VPC 网络对等互连 ( https://cloud.google.com/sql/docs/mysql/configure-private-services-access )
  5. 创建没有公网 IP 的云 sql 实例
  6. 期望新实例的私有 IP 在分配的范围内

我已经通过第 4 步完成了这些,我看到了:

不活动。 等待 servicenetworking.googleapis.com 创建连接

我对该页面的解释是我已经完成了我的工作,现在轮到谷歌了——但那是几天前的事了。我是否有做一些事情来提示谷歌创建连接?

我认为我专注于正确的地方,因为如果我尝试使用我的私有 IP,gcloud 会告诉我去创建我正在等待的网络:

❯ gcloud --project=my-project-name beta \
  sql instances patch foo \
  --network=my-network-name --no-assign-ip

The following message will be used for the patch API method.
{"name": "foo", "project": "my-project-name", "settings": {"ipConfiguration": {"ipv4Enabled": false, "privateNetwork": "https://compute.googleapis.com/compute/v1/projects/my-project-name/global/networks/my-network-name"}}}
Patching Cloud SQL instance...failed.

ERROR: (gcloud.beta.sql.instances.patch) [INTERNAL_ERROR] Failed to create subnetwork. Please create Service Networking connection with service 'servicenetworking.googleapis.com' from consumer project '11111111111' network 'my-network-name' again.
4

1 回答 1

0

通常,私有服务访问是作为 VPC 网络与 Cloud SQL 实例所在的 Google 服务 VPC 网络之间的 VPC 对等连接来实现的。正如@JohnHanley 指出的那样,应该在几分钟内创建 VPC 对等,因此预计您不必等待更多时间。

要检查 Stackdriver 上的对等互连创建,您可以使用以下高级过滤器:

jsonPayload.event_subtype="compute.networks.addPeering"

也就是说,由于尚未创建对等互连,因此您在尝试修补 SQL 实例时观察到的错误是有道理的。应该是“Peer VPC network is connected”而不是“Inactive”</p>

总而言之,在您的场景中,Cloud SQL 实例无法在上述网络上获取 IP,因为它无法访问它。

在这个特定的点上,我建议您专注于 Peering 创建。正如您提到的,您尝试重新创建它并且状态保持不变,您的项目中可能存在某些东西阻止建立对等互连。

我还建议您检查对等限制配额以防已达到:

gcloud 计算网络对等互连列表 --network='你的网络'

此外,最好查看VPC Peering Restrictions

话虽如此,如果您在创建 VPC 对等互连时仍然遇到同样的问题,则可能需要进行内部调查,我建议您使用此链接报告此问题

我希望这有帮助。

于 2020-03-26T00:53:35.500 回答