У меня есть сервер Ubuntu, который пытается подключиться к удаленному серверу MongoDB. Когда я пытаюсь подключиться к удаленному серверу MongoDB с помощью следующего метода:
mongo -u user -p pass yourdb.com:27017
Он возвращает следующую ошибку:
2018-06-04T20:41:36.667-0400 W NETWORK [thread1] Failed to connect
to 35.170.208.181:27017 after 5000ms milliseconds, giving up.
2018-06-04T20:41:36.667-0400 E QUERY [thread1] Error: couldn't
connect to server yourdb.com:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:251:13
@(connect):1:6
exception: connect failed
BindIP в /etc/mongod.conf установлен в 0.0.0.0
net:
port: 27017
bindIp: 0.0.0.0
Когда я использую sudo iptables -L -n | grep 27017
, Я получаю следующий результат:
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp
dpt:27017
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp
spt:27017 state ESTABLISHED
Я могу получить доступ к удаленной базе данных с других серверов и моего собственного локального компьютера, поэтому кажется, что брандмауэр на этом компьютере не настроен должным образом.
На удаленном сервере MongoDB открыты порты групп безопасности для взаимодействия с этим сервером, так что это тоже не проблема.
Мы много часов искали ресурсы, поэтому нуждались в помощи. Спасибо!
РЕДАКТИРОВАТЬ
Пытался использовать telnet для тестирования удаленного экземпляра mongo с экземпляра сервера, и он отвечает:
telnet: Unable to connect to remote host: Connection timed out
Если есть сомнения в том, открыто ли это TCP-соединение на порту 27017, самое время использовать утилиту TCPDUMP. Это позволяет вам видеть фактический трафик, чтобы увидеть, завершилось ли рукопожатие TCP или нет.
Используйте синтаксис вроде tcpdump -ni eth0 port 27017
Предполагая, что вы можете подключиться к серверу через другие порты, либо маршрутизатор / брандмауэр сбрасывает трафик где-то посередине, либо сервер неправильно обрабатывает ответ. TCPDUMP помогает объяснить это, и вы можете сосредоточиться на файлах журнала или других возможных причинах.