mongodb - 无法从 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");
})
});
解决方案
不幸的是,您无法在 Atlas 中为 M0/M2/M5 配置对等连接。
网络对等连接 您无法在 M0 免费层或 M2/M5 共享集群上配置设置网络对等连接。
此外,由于您使用的是 App Engine,因此您的应用程序位于 GCP 的负载平衡器之后,您将无法将一组稳定的静态 IP 列入白名单。
此时可能的解决方案:
- 将您的 Atlas 集群升级到 M10 以访问对等互连功能。这可能会花费您约 60 美元/月
- 如果它不是用于生产并且您不想为此投入资金,我建议您使用免费层实例来部署您的应用程序,然后将其 IP 列入 Atlas 集群层的白名单