簡體   English   中英

連接到 AWS DocumentDB 時出現連接錯誤

[英]connection error while connecting to AWS DocumentDB

從 node.js 連接到 AWS DocumentDB 時出現以下錯誤

連接錯誤:{ [MongoNetworkError: connection 1 to docdb-2019-01-28-06-57-37.cluster-cqy6h2ypc0dj.us-east-1.docdb.amazonaws.com:27017 timed out] name: 'MongoNetworkError', errorLabels: [ 'TransientTransactionError' ] }

這是我的 node.js 文件

應用程序.js

var mongoose = require('mongoose');
mongoose.connect('mongodb://abhishek:abhishek@docdb-2019-01-28-06-57-37.cluster-cqy6h2ypc0dj.us-east-1.docdb.amazonaws.com:27017/?ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0', {
    useNewUrlParser: true
});
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
    console.log("connected...");
});

默認情況下,aws documentdb 設計為僅從同一 VPC 連接。 因此,要從同一 vpc 中的 ec2 連接 nodejs 應用程序。 您需要擁有 pem 文件,因為在創建 db 實例時默認啟用 SSL。

第 1 步: $ wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem在所需目錄中

第 2 步:使用指向 pem 文件的選項更改貓鼬連接

mongoose.connect(database.url, {
    useNewUrlParser: true,
    ssl: true,
    sslValidate: false,
    sslCA: fs.readFileSync('./rds-combined-ca-bundle.pem')})
.then(() => console.log('Connection to DB successful'))
.catch((err) => console.error(err,'Error'));

這里使用的是貓鼬 5.4.0

要從 VPC 外部連接,請嘗試遵循以下來自 aws 的文檔: https ://docs.aws.amazon.com/documentdb/latest/developerguide/connect-from-outside-a-vpc.html

就我個人而言,我只嘗試從 VPC 連接,並且效果很好。

更新 =====:>

要從 VPC 外的 Robo 3T 連接,請點擊鏈接 - AWS DocumentDB with Robo 3T (Robomongo)

在 VPC 外部使用 AWS DocumentDB 例如您的開發服務器 EC2 或從本地計算機將出現連接錯誤,除非您使用 ssh 隧道或端口轉發

以及簡單的隧道

  1. 在你的本地使用這個命令

    ssh -i "ec2Access.pem" -L 27017:sample-cluster.node.us-east-1.docdb.amazonaws.com:27017 ubuntu@EC2-Host -N

  2. 在應用程序配置中使用

    { uri: 'mongodb://:@127.0.0.1:27017/Db', useNewUrlParser: true, useUnifiedTopology:true, directConnection: true }

只要確保你可以從這個隧道 ec2 和數據庫連接

如果您決定在 ec2 安全組中使用端口轉發步驟 0-[p 添加具有自定義 TCP 和端口 27017 的入站角色,所有流量 1- go 到您的 ec2 實例並安裝 Haproxy

$ sudo apt install haproxy

2- 編輯 Haproxy 配置

$ sudo nano haproxy.cfg

3-在結束文件添加

listen mongo
bind 0.0.0.0:27017
timeout connect 10s
timeout client 1m
timeout server 1m
mode TCP
server AWSmongo <database-host-url>:27017

4- 現在重啟 HaProxy

$ sudo service HaPoxy restart

5- 現在您可以使用訪問您的數據庫

{uri: 'mongodb://<database-user>:<database-pass>@<EC2-IP>:27017/<db>'}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM