
Я уже некоторое время борюсь с mongo bind IP, думаю, пришло время позвать на помощь. Я использую hostonly network 192.168.56.0/24
. У меня 4 ящика. 3 ящика для mongo 192.168.56.111,192.168.56.112,192.168.56.113
. и один ящик для приложения 192.168.56.114
.
Итак, для mongo bind параметр такой:bind_ip =127.0.0.1,192.168.56.114,192.168.56.113,192.168.56.112,192.168.56.111,10.0.2.1
2015-08-22T12:35:44.547+0000 E NETWORK [initandlisten] listen(): bind() failed errno:99 Cannot assign requested address for socket: 192.168.56.114:27017
2015-08-22T12:35:44.553+0000 I JOURNAL [initandlisten] journal dir=/var/lib/mongodb/journal
2015-08-22T12:35:44.554+0000 I JOURNAL [initandlisten] recover : no journal files present, no recovery needed
2015-08-22T12:35:44.623+0000 I JOURNAL [durability] Durability thread started
2015-08-22T12:35:44.624+0000 I JOURNAL [journal writer] Journal writer thread started
2015-08-22T12:35:44.624+0000 I CONTROL [initandlisten] MongoDB starting : pid=3519 port=27017 dbpath=/var/lib/mongodb 64-bit host=vagrant-ubuntu-trusty-64
2015-08-22T12:35:44.625+0000 I CONTROL [initandlisten] db version v3.0.5
2015-08-22T12:35:44.625+0000 I CONTROL [initandlisten] git version: 8bc4ae20708dbb493cb09338d9e7be6698e4a3a3
2015-08-22T12:35:44.625+0000 I CONTROL [initandlisten] build info: Linux ip-10-183-35-50 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
2015-08-22T12:35:44.625+0000 I CONTROL [initandlisten] allocator: tcmalloc
2015-08-22T12:35:44.626+0000 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1,192.168.56.114,192.168.56.113,192.168.56.112,192.168.56.111,10.0.2.15", port: 27017 }, storage: { dbPath: "/var/lib/mongodb" }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2015-08-22T12:35:44.631+0000 I CONTROL [initandlisten] now exiting
2015-08-22T12:35:44.631+0000 I NETWORK [initandlisten] shutdown: going to close listening sockets...
2015-08-22T12:35:44.632+0000 I NETWORK [initandlisten] removing socket file: /tmp/mongodb-27017.sock
2015-08-22T12:35:44.632+0000 I NETWORK [initandlisten] shutdown: going to flush diaglog...
2015-08-22T12:35:44.632+0000 I NETWORK [initandlisten] shutdown: going to close sockets...
2015-08-22T12:35:44.632+0000 I STORAGE [initandlisten] shutdown: waiting for fs preallocator...
2015-08-22T12:35:44.632+0000 I STORAGE [initandlisten] shutdown: final commit...
2015-08-22T12:35:44.635+0000 I JOURNAL [initandlisten] journalCleanup...
2015-08-22T12:35:44.635+0000 I JOURNAL [initandlisten] removeJournalFiles
2015-08-22T12:35:44.636+0000 I JOURNAL [initandlisten] Terminating durability thread ...
2015-08-22T12:35:44.735+0000 I JOURNAL [journal writer] Journal writer thread stopped
2015-08-22T12:35:44.736+0000 I JOURNAL [durability] Durability thread stopped
2015-08-22T12:35:44.736+0000 I STORAGE [initandlisten] shutdown: closing all files...
2015-08-22T12:35:44.736+0000 I STORAGE [initandlisten] closeAllFiles() finished
2015-08-22T12:35:44.737+0000 I STORAGE [initandlisten] shutdown: removing fs lock...
2015-08-22T12:35:44.737+0000 I CONTROL [initandlisten] dbexit: rc: 48
Я действительно не вижу, что не так с другими IP-адресами. Кроме loopback, собственного IP-адреса и 0.0.0.0/0, любой другой IP-адрес не позволяет запустить MongoDB.
решение1
Директиваbind_ip
предназначен для указания IP-адресовв той же системек которому MongoDB прослушивает соединения,нетIP-адреса, с которых он принимает соединения.
Установите этот параметр, чтобы настроить процесс mongod или mongos для привязки и прослушивания подключений от приложений по этому адресу. Вы можете прикрепить экземпляры mongod или mongos к любому интерфейсу; однако, если вы прикрепляете процесс к общедоступному интерфейсу, реализуйте надлежащие ограничения аутентификации или брандмауэра для защиты целостности вашей базы данных.
Поэтому он должен либо отсутствовать (рекомендуется), либо содержать 127.0.0.1 для приема только локальных подключений, либо IP-адрес локального сетевого интерфейса.
Если вы хотите ограничить количество IP-адресов, которые могут подключаться к MongoDB, вам придется использовать брандмауэр.