【发布时间】:2013-10-22 14:22:24
【问题描述】:
尝试从头开始设置 MongoDB 副本集时,我感到非常沮丧。这是我第一次使用 MongoDB (2.4.6),我不确定是我缺乏理解还是文档不佳。这是我正在使用的:
-VPC 中的 Amazon EC2 Ubuntu 12.04 LTS 实例 -节点A 10.0.1.152 -NodeB 10.0.1.153
他们可以很好地相互交流。这些服务器是全新的,因此没有防火墙规则。我的主机文件:
10.0.1.152 mongodb0 10.0.1.153 mongodb1 10.0.1.226 mongodb2 #这是arbiter,不过我暂时不关心这个
我在 NodeA 中的配置
logpath=/var/log/mongodb/mongodb.log
fork = true
replSet = rs0
bind_ip = mongodb0
logappend=true
我在 NodeB 中的配置
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 的所有内容,只是为了它。
我做错了什么?!?!?!?!?!?
【问题讨论】:
-
那么,你首先启动了 NodeA??
-
根据您给出的解释: 1:如果您使用配置文件,请使用 -f 参数将其提供给 mongod,例如 mongod -f nodeA.cfg。 2:您启动了 nodeA 并尝试连接到我认为仍未运行的 nodeB。检查这个:docs.mongodb.org/manual/reference/replica-configuration 文档如何正确配置副本集并一致地配置实例的主机名(mongodb0/monodb0.iin)使用
-
特别是,请确保主机名不会评估为
127.0.0.1或::1。如果监听套接字绑定到环回适配器,则外部的 nothing 将能够连接到它。 -
我还没有机会查看环境,但我认为它可能与网络相关,需要对其进行评估。我想验证在 NodeA 和 NodeB 上的每个配置中,replSet 值应该相同吗?我启动并启动 NodeA,我是否只在 NodeB 上启动进程(没有 rs.initiate())?我把NodeB加到NodeA上,是不是正式流程?
-
请在此处发帖
mongodb.log
标签: mongodb amazon-ec2 replicaset