【问题标题】:How do you connect to MongoDB Atlas from Google Cloud Run when using VPC and peer networking?使用 VPC 和对等网络时,如何从 Google Cloud Run 连接到 MongoDB Atlas?
【发布时间】:2020-12-07 21:27:28
【问题描述】:

我正在尝试使用 VPC 和对等网络从 Google Cloud Run 连接到 MongoDB,但我似乎无法建立连接。目标是能够从 Cloud Run 连接到 Atlas,同时只允许特定的 IP 范围。

我的设置是:

  • 在 Google Cloud 上运行的 MongoDB Atlas。
  • Google Cloud Run 容器在与 MongoDB 地图集相同的区域上运行 NodeJS 服务器(尽管据我所知,这并不重要)。

我已采取以下步骤:

  1. 按照https://cloud.google.com/vpc/docs/using-vpc 的说明在 Google Cloud 端创建 VPC。

  2. 在我的 VPC 和 MongoDB Atlas VPC 之间设置网络对等互连:https://docs.atlas.mongodb.com/security-vpc-peering/

  3. 使用连接器设置无服务器 VPC 访问:https://cloud.google.com/vpc/docs/configure-serverless-vpc-access

  4. 使用上面的连接器重新部署云运行容器:https://cloud.google.com/run/docs/configuring/connecting-vpc

  5. 将步骤 3 中的 CIDR 范围添加到 MongoDB 图集的白名单中,并删除了之前的开放范围 0.0.0.0/0。

所有步骤都成功(绿点等),但是当我在第 5 步之后尝试连接时,连接失败。我错过了什么?

【问题讨论】:

  • 您介意解释一下 GCD 是什么吗? Cloud Run 很快将允许为出站连接定义静态 IP 地址,这样您就可以将某些 IP 列入白名单,并且它们将来自您的 Cloud Run 应用。
  • 什么是 GCD 并在问题中添加完整的失败消息,还可以尝试使用 --verbose 从 mongo shell 连接。
  • VPC 对等互连不可传递。这意味着您无法到达一个网络并被路由到另一个网络。您有网络 A(云运行)-> 网络 B(您的 VPC)-> 网络 C(MongoDB)。网络 A 不会被路由到网络 C。
  • @AhmetB-Google 抱歉,我拼错了。我的意思是 GCP,MongoDB 在 Google Cloud 上运行。那么这是否意味着目前还没有办法通过网络对等在 cloud run 和 mongodb atlas 之间建立连接?
  • @JohnHanley 感谢您的回复。所以: 1. 云运行的“连接器”只允许我连接到网络 B 上的主机(如果我在那里运行其他服务)。 2. 如果我实际上在网络 B(我的 VPC)上运行某些东西,例如App Engine,我可以通过 VPC 对等连接从它连接到网络 C,但现在对等连接对我没有任何作用。我理解正确吗?

标签: mongodb google-cloud-platform google-cloud-run mongodb-atlas


【解决方案1】:

解决了这个问题,所以回答了我自己的问题。事实证明问题中概述的方法确实有效。我错过了两件事:

  1. 您需要将 MongoDB 连接字符串更改为私有连接字符串。您可以通过单击 MongoDB 仪表板中“集群”下的“连接”来检索它。据我所知,MongoDB 对等网络指南中的任何地方都没有记录。

  2. 在 MongoDB Atlas 网络设置中将 VPC 本身的 CIDR 范围(步骤 1)和无服务器连接器的 CIDR 范围(步骤 3)列入白名单。

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 2019-10-10
    • 2021-06-06
    • 2021-03-04
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    相关资源
    最近更新 更多