无法从GCP App Engine连接到Mongo Atlas

时间:2020-05-06 01:57:57

标签: mongodb google-app-engine mongodb-atlas

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

> 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");
    })
});

2 个答案:

答案 0 :(得分:2)

很遗憾,您无法配置peering connection for M0/M2/M5 in Atlas

网络对等连接,您无法在M0免费层或M2 / M5共享群集上配置Set up a Network Peering Connection

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

此时可能的解决方案:

  • 将您的Atlas群集升级到M10,以访问对等功能。这可能会花费您〜60USD /月
  • 如果它不是用于生产的,并且您不想为此花钱,我建议您使用免费层实例来部署您的应用,然后将其IP列入阿特拉斯集群层的IP

答案 1 :(得分:0)

尽管您不能在Atlas中将GCP VPC网络对等用于Mo / M2 / M5集群。

您可以设置与VPC网络连接的Cloud NAT with a static IP。您可以将Cloud NAT的静态IP添加到Atlas IP白名单中。