Я пытаюсь подключиться к кластеру documnetDB на моем vp c из моего nodeJS Express проекта с использованием туннелирования s sh. и получаю эту ошибку:
Mongoose connection disconnected
db.js:69
MongooseTimeoutError {message: "Server selection timed out after 15000 ms", name: "MongooseTimeoutError", reason: MongoNetworkError: getaddrinfo ENOTFOUND xxxxx-xxx…, stack: "MongooseTimeoutError: Server selection timed out a…", Symbol(mongoErrorContextSymbol): Object}
db.js:38
message:"Server selection timed out after 15000 ms"
name:"MongooseTimeoutError"
reason:MongoNetworkError: getaddrinfo ENOTFOUND xxxx-xxxx-xx-xx-xx-xx-xxx.xxxxxxx.us-east-2.docdb.amazonaws.com xxxx-xxxx-xx-xx-xx-xx-xxx.xxxxxxx.us-east-2.docdb.amazonaws.com
stack:"MongooseTimeoutError: Server selection timed out after 15000 ms\n at new MongooseTimeoutError
Перед кодом несколько вещей: я использую пакет с именем s sh -tunnel. Я отключил TLS для простоты. Мне удается подключиться через компас MongoDB с точно такими же параметрами. Я попал сюда
Меня беспокоит тот факт, что из-за ошибки dstHost я пытаюсь подключиться к отсутствующим некоторым адресам, которые я указал в конфигурации s sh -туннеля, например, вместо xxxx-xxxx -xx-xx-xx-xx-xxx.cluster-xxxxxxx.us-east-2.docdb.amazon aws .com мы получаем xxxx-xxxx-xx-xx-xx-xx-xxx.xxxxxxx.us-east -2.docdb.amazon aws .com Вот строки кода:
const config = require('./config');
const mongoose = require('mongoose');
const fs = require('fs');
const tunnel = require('tunnel-ssh');
const tunnelConfig = {
username:'xxx-xxxx',
// agent: process.env.SSH_AUTH_SOCK,
host:'xxx-x-xx-xx-x.us-east-2.compute.amazonaws.com',
privateKey: fs.readFileSync('./documentDBKeyPrivate.pem'),
port:22,
dstHost:'xxxxx-xxxx-xx-xx-xx-xx-xx.xxxxx-xxxxxxxx.us-east-2.docdb.amazonaws.com',
dstPort:27017,
localHost:'localhost',
localPort: 27018
};
let dbURI;
if(process.env.NODE_ENV === 'DEV') {
dbURI = config.DB_CONN_STRING_DEV;
const sshTunnel = tunnel(tunnelConfig, (error, tnl) => {
if (error) {
console.log("SSH connection error: " + error);
}
// Create the database connection
mongoose.connect(dbURI,
{
useNewUrlParser: true,
useUnifiedTopology: true,
serverSelectionTimeoutMS: 15000,
poolSize: 10,
}).catch(err => console.log(err));
})