2

尝试从头开始设置 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 #这是仲裁者,但我暂时不关心这个

我在 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 的所有内容。

我究竟做错了什么?!?!?!?!?!?

4

1 回答 1

0

1) 确保主机-> ip 名称在每个服务器的 /etc/hosts 文件中可用。

例如你的 /etc/hosts 文件有

123.123.123.123 hostname

我假设 123.123.123.123 是您的服务器 ip,主机名是您为 mongo 副本集成员指定的名称,每个成员必须执行此操作,并且您必须为每个服务器添加此名称。

2) 确保 mongo 节点能够使用终端相互通信,您可以对此进行测试。

3)确保您的系统能够与您访问成员的副本集的每个成员进行通信。(基本上是 mongod.conf 文件)

于 2017-07-26T07:16:22.193 回答