2016-01-23 73 views
12

我在本地網絡中的機器1上安裝了mongo(Ubuntu 14.04.3 LTS server)。我也打開了端口27017this指導使用下面的命令中提到:無法連接到遠程服務器上的mongo

sudo iptables -A INPUT -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT 
sudo iptables -A OUTPUT -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT 

當前規則(iptables -L):

Chain INPUT (policy ACCEPT) 
target  prot opt source    destination 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:27017 state NEW,ESTABLISHED 

Chain FORWARD (policy ACCEPT) 
target  prot opt source    destination 

Chain OUTPUT (policy ACCEPT) 
target  prot opt source    destination 
ACCEPT  tcp -- anywhere    anywhere    tcp spt:27017 state ESTABLISHED 

但我不能夠連接到這個端口from machine2(in the same network):

$ mongo --host 192.168.0.108 
MongoDB shell version: 3.0.4 
connecting to: 192.168.0.108:27017/test 
2016-01-23T18:02:14.848+0530 W NETWORK Failed to connect to 192.168.0.108:27017, reason: errno:61 Connection refused 
2016-01-23T18:02:14.850+0530 E QUERY Error: couldn't connect to server 192.168.0.108:27017 (192.168.0.108), 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 

我也試着檢查端口是否打開:

$ nc -v 192.168.0.108 27017 
nc: connectx to 192.168.0.108 port 27017 (tcp) failed: Connection refused 

我不知道我在想什麼。當我第一次設置mongo時,一定是一些愚蠢的錯誤。請幫助。

更新(在當前的回答提出的質疑)

  1. 呀它的運行。我能夠連接到mongo形成同一臺機器,但不能從另一臺機器上連接。守護進程正在運行:$ service mongod status mongod start/running, process 31205和端口是27017 $ sudo netstat -tulpn |grep 27017 tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 31205/mongod
  2. 我將bind_ip更改爲0.0.0.0並重新啓動了mongo。同樣的錯誤即將到來。

蒙戈日誌

$ cat /var/log/mongodb/mongod.log 
2016-01-23T16:28:13.155+0530 I CONTROL [initandlisten] MongoDB starting : pid=31205 port=27017 dbpath=/var/lib/mongodb 64-bit host=dexter 
2016-01-23T16:28:13.156+0530 I CONTROL [initandlisten] db version v3.2.1 
2016-01-23T16:28:13.156+0530 I CONTROL [initandlisten] git version: a14d55980c2cdc565d4704a7e3ad37e4e535c1b2 
2016-01-23T16:28:13.156+0530 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1f 6 Jan 2014 
2016-01-23T16:28:13.156+0530 I CONTROL [initandlisten] allocator: tcmalloc 
2016-01-23T16:28:13.156+0530 I CONTROL [initandlisten] modules: none 
2016-01-23T16:28:13.156+0530 I CONTROL [initandlisten] build environment: 
2016-01-23T16:28:13.156+0530 I CONTROL [initandlisten]  distmod: ubuntu1404 
2016-01-23T16:28:13.156+0530 I CONTROL [initandlisten]  distarch: x86_64 
2016-01-23T16:28:13.156+0530 I CONTROL [initandlisten]  target_arch: x86_64 
2016-01-23T16:28:13.156+0530 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } } 
2016-01-23T16:28:13.173+0530 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=1G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0), 
2016-01-23T16:28:14.444+0530 I CONTROL [initandlisten] 
2016-01-23T16:28:14.444+0530 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 
2016-01-23T16:28:14.444+0530 I CONTROL [initandlisten] **  We suggest setting it to 'never' 
2016-01-23T16:28:14.444+0530 I CONTROL [initandlisten] 
2016-01-23T16:28:14.444+0530 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 
2016-01-23T16:28:14.444+0530 I CONTROL [initandlisten] **  We suggest setting it to 'never' 
2016-01-23T16:28:14.444+0530 I CONTROL [initandlisten] 
2016-01-23T16:28:14.444+0530 I FTDC  [initandlisten] Initializing full-time diagnostic data capture with directory '/var/lib/mongodb/diagnostic.data' 
2016-01-23T16:28:14.444+0530 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker 
2016-01-23T16:28:14.949+0530 I NETWORK [initandlisten] waiting for connections on port 27017 
2016-01-23T16:38:37.046+0530 I NETWORK [initandlisten] connection accepted from 127.0.0.1:37032 #1 (1 connection now open) 
2016-01-23T16:39:31.447+0530 I NETWORK [conn1] end connection 127.0.0.1:37032 (0 connections now open) 
2016-01-23T16:49:24.240+0530 I NETWORK [initandlisten] connection accepted from 127.0.0.1:37033 #2 (1 connection now open) 
2016-01-23T16:49:38.249+0530 I NETWORK [conn2] end connection 127.0.0.1:37033 (0 connections now open) 
2016-01-23T16:51:51.707+0530 I NETWORK [initandlisten] connection accepted from 127.0.0.1:37034 #3 (1 connection now open) 
2016-01-23T16:51:55.785+0530 I NETWORK [conn3] end connection 127.0.0.1:37034 (0 connections now open) 
2016-01-23T17:32:15.546+0530 I NETWORK [initandlisten] connection accepted from 127.0.0.1:37036 #4 (1 connection now open) 
2016-01-23T17:32:21.180+0530 I NETWORK [conn4] end connection 127.0.0.1:37036 (0 connections now open) 
2016-01-23T18:11:57.885+0530 I NETWORK [initandlisten] connection accepted from 127.0.0.1:37037 #5 (1 connection now open) 
2016-01-23T18:29:55.365+0530 I NETWORK [conn5] end connection 127.0.0.1:37037 (0 connections now open) 
+0

是否可以在某處添加mongod服務器日誌?最初的100行就足夠了。 – nobody

+0

@nobody更新了蒙戈日誌 –

+0

希望你已經從日誌中得到線索。 – nobody

回答

5

的問題是bindIp沒有改變。從我身邊重新啓動mongo時出現了一些問題。

習慣應該是驗證bindIp是否實際改變了。 (使用sudo netstat -tulpn | grep 27017

0

確保你有你的MACHINE1其偵聽端口27017我們得到了同樣的錯誤,發現後臺程序沒有運行運行的守護進程。

+0

是的,它的運行。我能夠連接到mongo形成同一臺機器,但不能從另一臺機器上連接。該守護進程正在運行: '$服務mongod的狀態 mongod的開始/運行,過程31205' ,端口爲27017 '$ sudo的netstat的-tulpn | grep的27017 TCP 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 31205/mongod' –

11

確保MongoDB的守護進程正在運行,並偵聽0.0.0.0,而不是127.0.0.1端口

例如,我的本地MongoDB的,它有這個配置:

[[email protected] ~]$ cat /etc/mongod.conf 
## 
### Basic Defaults 
## 

# Comma separated list of ip addresses to listen on (all local ips by default) 
bind_ip = 127.0.0.1 

# Specify port number (27017 by default) 
#port = 27017 

爲MongoDB的服務器監聽遠程連接,你可以改變

# Comma separated list of ip addresses to listen on (all local ips by default) 
bind_ip = 0.0.0.0 
+0

我改變了'bind_ip'並重新啓動了mongo。同樣的錯誤即將到來。 –

+0

防火牆是否打開?什麼Linux發行版使用?是SELINUX啓用?有沒有在MongoDB日誌中的任何信息? – vodolaz095

+0

防火牆打開了什麼意思?我對防火牆瞭解不多。我只是在'iptables'中添加了規則。發行版:'$貓的/ etc/*釋放 DISTRIB_ID = Ubuntu的 DISTRIB_RELEASE = 14.04 DISTRIB_CODENAME =信賴 DISTRIB_DESCRIPTION = 「Ubuntu的LTS 14.04.3」 NAME = 「Ubuntu的」 VERSION = 「14.04.3 LTS,忠實的塔爾羊」 ID = Ubuntu的 ID_LIKE = Debian的 PRETTY_NAME = 「Ubuntu的LTS 14.04.3」 VERSION_ID = 「14.04」' 中沒有任何日誌 –