我在mongo中设置了3个节点作为副本集。所有的通信都很好,但是当我启用授权时,我不知道如何仍然让他们通信。
我把它们都复制好了
在次要服务器上的mongod.conf中启用auth=true
我有以下问题:
"_id" : 2,
"name" : "50.17.?.?:27017",
"health" : 0,
"state" : 6,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : {
"t" : 1366321962,
"i" : 1
},
"optimeDate" : ISODate("2013-04-18T21:52:42Z"),
"lastHeartbeat" : ISODate("2013-04-18T22:04:52Z"),
"lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
"pingMs" : 81,
"authenticated" : false,
"syncingTo" : "54.244.?.?:27017"
当我通过将auth设置为false来禁用它时,它显然可以工作。现在我可能是新来的,但不是哑巴。我知道它无法连接,因为我启用了授权。但是,一个人究竟会在哪里配置主服务器与auth=true辅助服务器同步?或者有没有其他的解决方案可以在强制客户机授权的同时启用副本集之间的通信>我到处找都没用。
如果不可能,除了使用防火墙之外,还有什么可以替代授权?如果有人用IP破坏了一个可信的系统怎么办?我不希望他们在没有密码的情况下连接到次要或主要服务器。例如,如果我的办公室遭到破坏,而Mongo主服务器信任我们的办公室IP。
最佳答案
感谢asya和我在下面找到的文章,我能够允许用户的授权,并且让副本与密钥文件通信(在所有副本之间共享)。要强调的是,副本不能像其他rdbms那样与用户通信。
您必须记住chmod文件,否则mongod实例不会开始说keyfile“太开放”。它试图保护您不让非必要的linux用户/组看到密钥。你还必须确保你选择Mongod(在我的情况下)用户。
Mongodb KeyFile too open permissions