replica set初始化失败

时间:2022-06-01 21:24:20
想组一个replica set集群在rs.initiate(config)的时候总报错,求高手指点!

第一次是用一台机器起3个mongod组成replica set,配置如下:
./mongod --shardsvr --replSet shard1 --dbpath /data/shard1/r1 --port 10011 --logpath /data/log/shard1_1.log --logappend --auth --fork
./mongod --shardsvr --replSet shard1 --dbpath /data/shard1/r2 --port 10012 --logpath /data/log/shard1_2.log --logappend --auth --fork
./mongod --shardsvr --replSet shard1 --dbpath /data/shard1/r3 --port 10013 --logpath /data/log/shard1_3.log --logappend --auth --fork
./mongo -port 10011
> config={_id: 'shard1', members: [{_id: 0, host: '192.168.200.37:10011'},{_id: 1, host: '192.168.200.37:10012'},{_id: 2, host: '192.168.200.37:10013'}]}
> rs.initiate(config)
{
        "ok" : 0,
        "errmsg" : "couldn't initiate : need all members up to initiate, not ok : 192.168.200.37:10011"
}

第二次用两台机器2个mongod组成replica set,配置如下:
192.168.200.37上执行
./mongod --shardsvr --replSet shard1 --dbpath /data/mongo/shard1/r1 --port 10011 --logpath /data/mongo/log/shard1_1.log --logappend --auth --fork
192.168.200.39上执行
./mongod --shardsvr --replSet shard1 --dbpath /data1/mongo/shard1/r1 --port 10011 --logpath /data1/mongo/log/shard1_1.log --logappend --auth --fork
./mongo -port 10011
>config={_id: 'shard1', members: [{_id: 0, host: '192.168.200.37:10011'},{_id: 1, host: '192.168.200.39:10011'}]}
> rs.initiate(config)
{
        "ok" : 0,
        "errmsg" : "couldn't initiate : need all members up to initiate, not ok : 192.168.200.39:10011"
}

/sbin/service iptables stop后也不行,求高手指点!

4 个解决方案

#1


你运行初始化命令的那台机器能用mongo shell连接上复制集里所有的机器吗?比如对复制集1,在要运行初始化命令的机器上运行下面命令试试:

mongo 192.168.200.37:10011
mongo 192.168.200.37:10012
mongo 192.168.200.37:10013

如果不行的话,看看错误信息和对应的mongod的日志

#2


感谢u011235983的回答,问题已经解决了,问题出在keyFile上,只要加上keyFile就可以了。我看网上有很多实例没有加keyFile也行,可能是不同版本的问题,我用的mongodb版本是2.4.6。

#3


keyfile只是一个验证的手段,当然,在replica set里面的keyfile必须要一致即可。

#4


引用 2 楼 yhc223 的回复:
感谢u011235983的回答,问题已经解决了,问题出在keyFile上,只要加上keyFile就可以了。我看网上有很多实例没有加keyFile也行,可能是不同版本的问题,我用的mongodb版本是2.4.6。



是在mongod --keyFile path 这样么?
为什么我mongod反而运行出错了呢。。

#1


你运行初始化命令的那台机器能用mongo shell连接上复制集里所有的机器吗?比如对复制集1,在要运行初始化命令的机器上运行下面命令试试:

mongo 192.168.200.37:10011
mongo 192.168.200.37:10012
mongo 192.168.200.37:10013

如果不行的话,看看错误信息和对应的mongod的日志

#2


感谢u011235983的回答,问题已经解决了,问题出在keyFile上,只要加上keyFile就可以了。我看网上有很多实例没有加keyFile也行,可能是不同版本的问题,我用的mongodb版本是2.4.6。

#3


keyfile只是一个验证的手段,当然,在replica set里面的keyfile必须要一致即可。

#4


引用 2 楼 yhc223 的回复:
感谢u011235983的回答,问题已经解决了,问题出在keyFile上,只要加上keyFile就可以了。我看网上有很多实例没有加keyFile也行,可能是不同版本的问题,我用的mongodb版本是2.4.6。



是在mongod --keyFile path 这样么?
为什么我mongod反而运行出错了呢。。