Я установил mongoDB на виртуальную машину redhat на EC2.
Сервер работает идеально локально, я могу подключаться и выполнять команды и т. Д. Теперь я попытался подключиться удаленно с другой виртуальной машины на EC2, но я не могу подключиться, независимо от того, сколько я пытаюсь. Сначала я подумал, что это проблема групп безопасности, поэтому я попытался включить все порты из группы (обе виртуальные машины принадлежат к одним и тем же группам безопасности). Я также включил соединения в файле iptables (и да, перезапустил службу), но это все еще не работает ... Есть идеи, в чем может быть проблема?
я получаю ошибку:
MongoDB shell version: 2.0.2
connecting to: ec2-XXXX.eu-west-1.compute.amazonaws.com/test
Thu Jan 5 13:55:32 Error: couldn't connect to server ec2-XXXX.eu-west-1.compute.amazonaws.com shell/mongo.js:86
exception: connect failed
Заранее спасибо.
Что касается настройки "bind_ip", ну ... для нее нет значения по умолчанию, я имею в виду, что по умолчанию даже нет строки bind_ip в mongodb.conf. Я, вероятно, ожидал чего-то вроде bind_ip = 127.0.0.1, чтобы я мог его прокомментировать, но этого не было, поэтому я попытался с bind_ip = 0.0.0.0, но все равно он тоже не работает.
РЕШЕНО! всем, кто использует установку Redhat по умолчанию для EC2, вам необходимо выполнить эту команду:
система-конфигурация-брандмауэр-туи
Надеюсь, это поможет. Вам нужно явно указать mongodb прослушивать устройства, отличные от localhost. По умолчанию он работает только на localhost.
Из http://www.mongodb.org/display/DOCS/Security+and+Authentication:
Привязка IP-адреса По умолчанию сервер mongod будет прослушивать все доступные IP-адреса на машине. Вы можете ограничить это одним IP-адресом с помощью параметра конфигурации bind_ip для mongod.
Как правило, это будет 127.0.0.1, интерфейс обратной связи, чтобы mongod слушал только запросы с той же машины (localhost).
Чтобы включить прослушивание на всех интерфейсах, удалите параметр bind_ip из файла конфигурации сервера.
Обновить: Думаю, я сам запутался. Я думал, что поведение по умолчанию отличается от описанного выше. (Может быть, раньше?) В любом случае вы должны проверить свой файл конфигурации mongo, чтобы убедиться, что он настроен так, как вы ожидаете.
С сервером mongoDB версии 3.6.4 и Ubuntu 16.4.4 я решил эту проблему, установив секцию net в /etc/mongod.conf следующим образом:
net:
port: 27017
bindIpAll: true
# bindIp: 127.0.0.1
Рады видеть, что модификация межсетевого экрана решила проблемы. Не забывайте и другие рекомендации EC2 (сведения о файловой системе, обмен данными между регионами и другие) здесь:
http://www.mongodb.org/display/DOCS/Amazon+EC2
Также есть отличный технический документ о том, как масштабировать и развертывать на EC2:
Если вы используете aws, убедитесь, что группа безопасности разрешает порт 27017. Я потратил два часа своей жизни на выяснение этого.