2013-10-14 64 views
2

我非常沮喪地嘗試從頭開始設置MongoDB副本集。這是我第一次使用MongoDB(2.4.6),我不確定這是否是我缺乏理解能力或糟糕的文檔。這裏就是我的工作:MongoDB副本集安裝問題

-Amazon EC2 Ubuntu的LTS 12.04實例在VPC -NodeA 10.0.1.152 -NodeB 10.0.1.153

他們可以彼此溝通的罰款。這些服務器是全新的,因此沒有防火牆規則。我的主機文件:

10.0.1.152 mongodb0 10.0.1.153 mongodb1 10.0.1.226 mongodb2#這是仲裁者,但我不NodeA上

logpath=/var/log/mongodb/mongodb.log 
fork = true 
replSet = rs0 
bind_ip = mongodb0 
logappend=true 
此刻在乎這

我的conf

我NodeB中的conf

logpath=/var/log/mongodb/mongodb.log 
fork = true 
replSet = rs0 
bind_ip = mongodb1 
logappend=true 

nodeA上,我啓動過程:

mongod --host mongodb0.iin 
rs.initiate() 
rs.conf() 
rs.add("mongo1.iin:27017") 

這裏是錯誤消息:

{ 
     "errmsg" : "exception: need most members up to reconfigure, not ok : mongodb1.iin:27017", 
     "code" : 13144, 
     "ok" : 0 
} 

我也跑在副本蒙戈過程。當我初始化時,它也自稱爲Primary。

在NodeB上 - 我對來自NodeA的所有流量運行了TCPDUMP。當我初始化時 - 沒有任何東西出現。正如我所提到的,沒有防火牆規則,我甚至爲了它而添加了允許NodeA的所有內容。

我做錯了什麼?!?!?!?!?!?

+0

所以,首先你開始NodeA上? – Jhanvi

+0

按照您給出的解釋: 1:如果您使用配置文件,請使用-f參數(如mongod -f nodeA.cfg)將它指定給mongod。 2:您啓動了nodeA並試圖連接到nodeB,我認爲它仍未運行。請查看:http://docs.mongodb.org/manual/reference/replica-configuration/ documentation如何正確配置replicaset並且一致地配置實例的主機名(mongodb0/monodb0.iin)使用 – attish

+0

特別是make確定主機名不會評估爲「127.0.0.1」或「:: 1」。如果偵聽套接字綁定到回送適配器,*外部的任何*都不能連接到它。 – mnemosyn

回答

0

1)確保host-> ip名稱在每個服務器的/ etc/hosts文件中可用。

例如你的/ etc/hosts文件有

123.123.123.123 hostname 

我假設123.123.123.123是你的服務器IP和主機名是你給MONGO副本集成員的每一位成員,你的名字必須做到這一點,併爲每個服務器,你必須添加這個。

2)確保mongo節點能夠使用終端互相通信,您可以測試它。

3)確保您的系統能夠與副本中的每個成員從您正在訪問的成員設置的通信。(基本上mongod.conf文件)