无法从 GCP App Engine 连接到 Mongo Atlas
Unable to Connect to Mongo Atlas from GCP App Engine
我正在尝试将 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");
})
});
很遗憾,您无法配置 peering connection for M0/M2/M5 in Atlas。
Network Peering Connections You cannot configure Set up a Network Peering Connection on M0 Free Tier or M2/M5 shared clusters.
此外,由于您使用的是 App Engine,因此您的应用程序位于 GCP 的负载平衡器之后,您将无法将一组稳定的静态 IP 列入白名单。
此时可能的解决方案:
- 将您的 Atlas 集群升级到 M10 以访问对等功能。这可能会花费您 ~60 美元/月
- 如果它不是用于生产并且您不想为此投入资金,我建议您使用免费层实例来部署您的应用程序,然后将其 IP 列入 Atlas clustier 层的白名单
虽然您不能对 Atlas 中的 Mo/M2/M5 集群使用 GCP VPC 网络对等互连。
您可以设置一个与 VPC 网络连接的 Cloud NAT with a static IP。您可以将 Cloud NAT 的静态 IP 添加到 Atlas IP 白名单。
我正在尝试将 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");
})
});
很遗憾,您无法配置 peering connection for M0/M2/M5 in Atlas。
Network Peering Connections You cannot configure Set up a Network Peering Connection on M0 Free Tier or M2/M5 shared clusters.
此外,由于您使用的是 App Engine,因此您的应用程序位于 GCP 的负载平衡器之后,您将无法将一组稳定的静态 IP 列入白名单。
此时可能的解决方案:
- 将您的 Atlas 集群升级到 M10 以访问对等功能。这可能会花费您 ~60 美元/月
- 如果它不是用于生产并且您不想为此投入资金,我建议您使用免费层实例来部署您的应用程序,然后将其 IP 列入 Atlas clustier 层的白名单
虽然您不能对 Atlas 中的 Mo/M2/M5 集群使用 GCP VPC 网络对等互连。
您可以设置一个与 VPC 网络连接的 Cloud NAT with a static IP。您可以将 Cloud NAT 的静态 IP 添加到 Atlas IP 白名单。