我在尝试从头开始设置MongoDB副本集时感到非常沮丧。这是我第一次运行MongoDB(2.4.6),我不确定这是不是我理解力差或文档不好。以下是我正在使用的内容:
- VPC中的Amazon EC2 Ubuntu 12.04 LTS实例 -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 #this是仲裁者,但我现在不关心这个
我在NodeA中的conf
logpath=/var/log/mongodb/mongodb.log
fork = true
replSet = rs0
bind_ip = mongodb0
logappend=true
我在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
}
我还在副本上运行了mongo进程。当我初始化时,它也称自己为Primary。
在NodeB上 - 我在NodeA的所有流量上运行了TCPDUMP。当我初学时 - 什么都没有出现。正如我所提到的,没有防火墙规则,我甚至为了它而添加了允许来自NodeA的所有内容。
我做错了什么?!?!?!?!?!?
答案 0 :(得分:0)
1)确保每个服务器的/ etc / hosts文件中都有host-> ip名称。
例如你的/ etc / hosts文件 具有
123.123.123.123 hostname
我假设123.123.123.123是您的服务器IP,主机名是您为每个成员执行此操作的mongo副本集成员的名称,并且您必须为每个服务器添加此名称。
2)确保mongo节点能够使用终端进行通信,您可以对此进行测试。
3)确保您的系统能够与您访问成员的每个副本集成员进行通信。(基本上是mongod.conf文件)