подключиться к кластеру documnetDB на моем vp c с nodeJS - PullRequest
1 голос
/ 24 марта 2020

Я пытаюсь подключиться к кластеру 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)); 
  }) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...