首页 > 解决方案 > 无法从 GCP App Engine 连接到 Mongo Atlas

问题描述

我正在尝试将 GCP App Engine 上运行的 nodejs 应用程序连接到 Mongo Atlas,但我收到网络错误。我已经设置了 VPC 对等互连并启用了无服务器 VPC 连接器,并在应用程序 yaml 中添加了 vpc_access_connector 属性,并将连接器的 IP 范围列入了 Atlas 中的白名单。我看到的确切错误是

> MongoNetworkError: failed to connect to server [testcluster-shard-00-00-fbyja.gcp.mongodb.net:27017] on first connect
> [MongoNetworkError: connection 4 to testcluster-shard-00-00-fbyja.gcp.mongodb.net:27017 closed]

我的代码是

var express = require("express");
var app = express();
require('dotenv').config();
var cors = require('cors');
const BodyParser = require('body-parser');
const MongoClient = require("mongodb").MongoClient;
const ObjectId = require('mongodb').ObjectID;
const CONNECTION_URL = process.env.DB_CONNECTION;

app.use(cors());
app.use(BodyParser.json());
app.use(BodyParser.urlencoded({extended: true}));

var database, collection;

app.listen(process.env.PORT, () => {
    MongoClient.connect(CONNECTION_URL, {useNewUrlParser: true}, (error, client) => {
        if(error){
            throw error;
        }
        database = client.db("test");
        collection = database.collection("test");
    })
});

标签: mongodbgoogle-app-enginemongodb-atlas

解决方案


不幸的是,您无法在 Atlas 中为 M0/M2/M5 配置对等连接

网络对等连接 您无法在 M0 免费层或 M2/M5 共享集群上配置设置网络对等连接。

此外,由于您使用的是 App Engine,因此您的应用程序位于 GCP 的负载平衡器之后,您将无法将一组稳定的静态 IP 列入白名单。

此时可能的解决方案:

  • 将您的 Atlas 集群升级到 M10 以访问对等互连功能。这可能会花费您约 60 美元/月
  • 如果它不是用于生产并且您不想为此投入资金,我建议您使用免费层实例来部署您的应用程序,然后将其 IP 列入 Atlas 集群层的白名单

推荐阅读