У меня есть ящик с узлом / express веб-сервером и ящик, запущенный пн go. Я пытаюсь заставить их подключаться через частную сеть вместо 0.0.0.0. Они могут пинговать друг друга по своим частным IP-адресам. Мой /etc/mongod.conf
имеет:
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,10.xxx.xxx.xxx
Когда я sh подключен к своему серверу веб-сервера, я могу успешно подключиться к базе данных, поэтому я считаю, что моя конфигурация mon go и брандмауэр настроены правильно. Из командной строки я использую это (и вводя пароль, когда он запрашивает):
mongo mongodb://[myUser]@[10.xxx.xxx.xxx]:27017/[myDbName]?authSource=admin
На моем express сервере я подключаюсь так:
const mongoUrl = `mongodb://${process.env.MONGO_HOST}:${process.env.MONGO_PORT}/${process.env.MONGO_DBNAME}?authSource=admin`;
let opts = {
useNewUrlParser: true
};
if (process.env.MONGO_PASS) {
Object.assign(opts, {
auth: {
user: process.env.MONGO_USER,
password: process.env.MONGO_PASS
},
});
}
logger.info("Attempting to connect to db:", { mongoUrl });
mongoose.connect(mongoUrl, opts, handleConnectionErr);
Когда Я запускаю это на веб-сервере, предоставляя те же значения переменных, что и для другой команды, я получаю эту ошибку:
error: Error connecting to database: MongoNetworkError: failed to connect to server [10.xxx.xxx.xxx:27017] on first connect [MongoNetworkError: connect EHOSTUNREACH 10.xxx.xxx.xxx:27017]
Чего мне не хватает?
Правки:
- Ничего не записывается на мой сервер go
/var/logs/mongodb/mongod.log
во время запроса на подключение - Я пробовал другие комбинации
mongoose.connect
, используя только URL, просто объект параметров или комбинацию обоих. Без улучшений - На самом деле на третьем сервере у меня есть еще одно приложение узла, которое подключается к той же базе данных и успешно делает это с помощью драйвера nodejs mongodb - так что я подозреваю, что это либо связано с моим бокс-сетом вверх или с пн goose