将 Elastic Beanstalk 上的 Web 服务器与 MongoDB Atlas 上的数据库服务器连接时出错

Posted

技术标签:

【中文标题】将 Elastic Beanstalk 上的 Web 服务器与 MongoDB Atlas 上的数据库服务器连接时出错【英文标题】:Error connecting web server on Elastic Beanstalk with database server on MongoDB Atlas 【发布时间】:2020-02-07 20:20:58 【问题描述】:

我正在尝试将我在 Elastic Beanstalk 上的 Web 服务器与我在 MongoDB Atlas 上的数据库服务器连接起来,但不知何故我收到以下错误

Listening at http://:::3001
Unable to connect to the mongodb instance. Error:   MongoNetworkError: failed to connect to server [<server>.mongodb.net:27017] on first connect [MongoNetworkError: connection 5 to <server>.mongodb.net:27017 closed]
    at Pool.<anonymous> (/var/app/current/node_modules/mongodb-core/lib/topologies/server.js:431:11)
    at Pool.emit (events.js:198:13)
    at connect (/var/app/current/node_modules/mongodb-core/lib/connection/pool.js:557:14)
    at callback (/var/app/current/node_modules/mongodb-core/lib/connection/connect.js:109:5)
    at runCommand (/var/app/current/node_modules/mongodb-core/lib/connection/connect.js:129:7)
    at Connection.errorHandler (/var/app/current/node_modules/mongodb-core/lib/connection/connect.js:321:5)
    at Object.onceWrapper (events.js:286:20)
    at Connection.emit (events.js:198:13)
    at TLSSocket.<anonymous> (/var/app/current/node_modules/mongodb-core/lib/connection/connection.js:350:12)
    at Object.onceWrapper (events.js:286:20)
    at TLSSocket.emit (events.js:198:13)
    at _handle.close (net.js:606:12)
    at TCP.done (_tls_wrap.js:388:7)
  name: 'MongoNetworkError',
  errorLabels: [ 'TransientTransactionError' ],
  [Symbol(mongoErrorContextSymbol)]:  
Listening at http://:::3001
(node:11482) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option  useUnifiedTopology: true  to the MongoClient constructor.
Listening at http://:::3001

我使用猫鼬如下

mongoose.connect('mongodb+srv://<UserName>:<Password>@<cluster>.mongodb.net/test?retryWrites=true&w=majority',
 useNewUrlParser: true, useUnifiedTopology: true )
.catch(function (reason) 
    console.log('Unable to connect to the mongodb instance. Error: ', reason);
);

问题不在 MongoDB Atlas 上的 IP 白名单中,因为我已经通过 ssh 连接到 elastic beanstalk 上的服务器,并从那里直接连接到 Atlas 上的 Mongo 服务器。问题出在代码中,尽管我似乎看不到它。

【问题讨论】:

【参考方案1】:

我有同样的问题。将 0.0.0.0/0 添加到您的 IP 白名单。

【讨论】:

以上是关于将 Elastic Beanstalk 上的 Web 服务器与 MongoDB Atlas 上的数据库服务器连接时出错的主要内容,如果未能解决你的问题,请参考以下文章

Elastic Beanstalk 工作层上的 Spring Boot

Elastic Beanstalk 上的 Docker + Django

将 MongoDB 与部署在 Elastic Beanstalk 上的 NodeJS 应用程序一起使用的推荐方法是啥?

将 Elastic Beanstalk 上的 Web 服务器与 MongoDB Atlas 上的数据库服务器连接时出错

替换 AWS Elastic BeanStalk 上的特定实例?

无法访问 jarfile - Elastic Beanstalk 上的 Docker