2015-06-17 6 views
11

Naprawdę próbowałem, nawet ponownie zainstalować MongoDB.MongoDB bind_ip nie będzie działać, dopóki nie zostanie ustawione na 0.0.0.0

I to samo do MongoDB bind_ip error: bind() failed errno:99 Cannot assign requested address for socket

To działa, jeśli ustawić bind_ip do: 0.0.0.0 czy 127.0.0.1

$ sudo service mongod start 
mongod start/running, process 30040 
$ sudo service mongod restart 
mongod stop/waiting 
mongod start/running, process 29704 
$ mongo --port 19708 
MongoDB shell version: 3.0.3 
connecting to: 127.0.0.1:19708/test 
> 

To nie będzie działać, jeśli ustawiony bing_ip do: 127.0.0.1,192.118.96.10,42.112.36.110

$ sudo service mongod start 
mongod start/running, process 29969 
$ sudo service mongod restart 
stop: Unknown instance: 
mongod start/running, process 29766 
$ mongo --port 19708 
MongoDB shell version: 3.0.3 
connecting to: 127.0.0.1:19708/test 
2015-06-17T06:32:34.625+0000 W NETWORK Failed to connect to 127.0.0.1:19708 
reason: errno:111 Connection refused 
2015-06-17T06:32:34.627+0000 E QUERY 
Error: couldn't connect to server 127.0.0.1:19708 (127.0.0.1), connection attempt failed 
at connect (src/mongo/shell/mongo.js:181:14) 
at (connect):1:6 at src/mongo/shell/mongo.js:181 
exception: connect failed 

lokacje:

$ which mongod 
/usr/bin/mongod 
$ which mongo 
/usr/bin/mongo 

konfiguracje w /etc/mongod.conf

dbpath=/var/lib/mongodb 

logpath=/var/log/mongodb/mongod.log 

logappend=true 

port = 19708 

# ips, eg: 
# private ip for mongodb server: 192.118.96.10 
# public ip for remote app server: 42.112.36.110 

bind_ip = 127.0.0.1,192.118.96.10,42.112.36.110 

auth = true 

z góry dzięki.

Odpowiedz

15

Edit: nie wiem pogoda ja po prostu nie tak z moją odpowiedź, lub jeśli zachowanie bind_ip została zmieniona, ale jest można wiązać na wiele, różnych adresów IP

bind_ip:127.0.0.1,10.0.0.1,8.8.8.8 

So najprawdopodobniej jeden z adresów IP, do których mongoda został przypisany do wiązania, nie istniał na danej maszynie.


Można powiązać mongod tylko do jednego adresu IP, z 0.0.0.0 jest aliasem dla „słuchać na wszystkich dostępnych interfejsów sieciowych”.

Więc albo użyć

bind_ip=127.0.0.1 

słuchać pętli powrotnej interfejsu lub

bind_ip=<someIP> 

słuchać tego IP tylko lub

bind_ip=0.0.0.0 

słuchać all dostępnych adresów IP w systemie.

Jeśli chcesz posłuchać kilku konkretnych adresów IP, bardzo prawdopodobne jest, że Twój projekt systemu jest w jakiś sposób wkręcony.

+0

Jest ogólnie zły pomysł, aby akceptować połączenia z 0.0.0.0 –

+0

@DushanSavich śmiem obiekt. W przypadku dużych klastrów, w których dynamicznie przydzielane adresy IP mogą być preferowanym narzędziem (na przykład konfigurowanie maszyn za pomocą DHCP, BootP i Kickstart), rozsądne może być wysłuchanie adresu 0.0.0.0, ponieważ adres IP systemu byłby nieokreślone podczas pisania konfiguracji. Chociaż zgadzam się, ważne jest, aby zachować ostrożność podczas słuchania w wersji 0.0.0.0, nie mogę zgodzić się z tym, że jest to złe samo w sobie. –

+0

Nie zgodziłbym się również. Chcę, aby moje zdalne maszyny do tworzenia sieci VPN mogły łączyć się w interfejsie VPN, i chcę, aby także lokalny host również się połączył. Nie chcę, aby słuchał w internetowym interfejsie. Czy moja (wprawdzie bardzo kompaktowa) konstrukcja systemu jest wkręcona? –

0

Hej Używam wersji powłoki MongoDB: 3.2.6.

bindIP = 127.0.0.1,192.168.0.50 
bindIP = [127.0.0.1,192.168.0.50] 
bind_ip = 192.168.6.38 

nie działa, mam edytowany mongod.conf poleceniem

sudo -i gedit /etc/mongod.conf file 

i zmienił bind_ip = 0.0.0.0 do bind_ip = 192.168.6.38 to działa dobrze ....

10

Miałem ten sam problem tylko z powodu głupiego błędu.

Został skomentowany problem z linią i przestrzenią.

Co zrobiłem źle

# network interfaces 
net: 
    port: 27017 
#bindIp: 127.0.0.1 
bindIp: privateIp 

zamiast

net: 
    port: 27017 
    bindIp: 10.1.2.4 

dla wiążą się wielokrotności ips

bindIp: [127.0.0.1,10.128.0.2] 

Mam nadzieję, że odpowiedź jest pomocna dla kogoś.

+0

Wdrażam MongoDB na Ubuntu 14.04 LTS. bindIp: [127.0.0.1, 10.128.0.2] działa dla mnie. Dzięki! –

0

Dokumentacja powiedział

„Można łączyć listę rozdzielonych przecinkami wartości związać mongod do wielu adresów IP.”

Tak, to nie jest prawda ...

1

Godzinami bić głową o ścianę z tym problemem. W końcu, patrząc na logi i szukanie w Google tego, co znalazłem, gdzieś mnie gdzieś dostał (wszystko, co otrzymałem, gdy szukałem go "mongo bindIp multipl" (itd.) Było obciążeniem stron takich jak ta, z odpowiedziami, które nie pomogły). Pierwszy blok w /etc/mongod.conf że pracował dla mnie było:

# network interfaces 
net: 
    port: 27017 
    bindIp: 127.0.0.1,172.16.1.2 

Bez spacji, bez cudzysłowów, nie wsporniki ... ale nawet z nim poprawne wznowienie MongoDB dał błąd, a potem odmówił zacząć. Spędziłem godziny próbując różnych innych konfiguracji, które były niepoprawne (co jest frustrujące, ponieważ poprawność tej linii faktycznie nie rozwiązała problemu i nie wiedziałem, że jest inny).

udało mi się go rozwiązać, usuwając plik gniazdka MongoDB:

rm /etc/mongodb-27017.sock 

Po tym, bieganie

systemctl restart mongod 

pracował bez błędów. Interesującą rzeczą (częścią tego, co sprawiło, że było to naprawdę frustrujące) było to, że podczas procesu prób i błędów, gdy ustawiłem bindIP z powrotem do 127.0.0.1 i wznowiłem mongoła, zadziałało, co sprawiło, że pomyślałem, że ta linia była w porządku, a problemy były z alternatywnymi wpisami/składnią, którą próbowałem. (Domyślam się, że coś w pliku z gniazdem odwołuje się do ips? Nie znam tego elementu kodu.)

Po usunięciu gniazda mogłem w ten sposób uzyskać powłokę mongo (opcje wymagane przy włączonej autoryzacji):

mongo -u admin -p password --authenticationDatabase "admin") 

który określa, że ​​prace, a także 127.0.0.1 połączyć z moim zdalnej aplikacji (w moim obecnym scenariuszu nodebb instancja testowanie mam konfigurowania).

2

Mongo 3.6.2 Społeczność

Rozwiązanie dla mnie było, aby edytować sekcję/etc/mongod.conf

# network interfaces 
net: 
    port: 27017 
    bindIp: 127.0.0.1,192.168.1.240 # No brackets, No spaces, only comma separated 

#security 

Następnie zapisz i to zrobić, aby ponownie uruchomić i sprawdzić usługę:

> service mongod restart 
> service mongod status 

Nie brak tu teraz sprawdzić, czy ktoś słucha:

> netstat -a |grep :27017 

tcp 0 0 yourhostname:27017 0.0.0.0:*  LISTEN 
tcp 0 0 localhost:27017  0.0.0.0:*  LISTEN 

Teraz połączyć za pośrednictwem swojego ulubionego Narzędzia Mongo lub linia poleceń.

Niektóre wyniki innego formatowania w /etc/mongod.conf

  • przecinkiem i spacją powoduje tylko pierwszy OD związania.
  • tylko kosmiczne wyniki separator tylko pierwszy OD wiążąc
  • [] Wyniki przestrzennego w niewydolności zacząć mongod
Powiązane problemy