mongodb cluster:使用keyFile进行身份验证后,会报告shard的套接字异常

时间:2014-01-20 03:00:00

标签: mongodb authentication sharding

我使用mongodb --keyfile参数来配置经过身份验证的mongodb群集。是的,我首先在没有身份验证的情况下将admin用户添加到admin db,然后,我用--keyFile.Yes重新启动mongodb,之后,验证生效。但是当我尝试addUser()或show dbs或show collections或db.collection.find()时,它报告错误: mongos> db.system.users.find()

error: {
        "$err" : "socket exception [CONNECT_ERROR] for shard4/192.168.10.10:10004,192.168.10.12:10004",
        "code" : 11002,
        "shard" : "config"
}

有时,它是shared1,有时是shard2或shard3 ......

我检查了每个碎片荒地(我有3个碎片,每个碎片有3个复制集),所有碎片成员的健康状态为1,即确定。

那么,任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我检查了/var/data/master/log.log上的日志,它说: 密钥文件的权限太开放。这意味着,我不应该给这样一个文件太高的权限。所以,我为每个mongodb集群成员运行以下命令:

sudo chmod 700 /var/data/keyfile

我再次检查了日志,解决了权限问题,但仍然存在socked异常错误。

但是我可以成功ping到这些配置服务器网络端口,它证明实际上这些配置服务器工作正常。

那么,为什么这些配置服务器无法连接?最后我得到原因:这是因为我首先启动mongos进程然后启动3个配置服务器的mongod实例。当mongos启动时,它正在尝试连接到配置服务器,但配置服务器之后启动,所以,它无法到达它们。只有当我首先启动这3个配置服务器然后启动mongos实例时,问题就解决了!