我在Mongo中设置了3个节点作为副本集。所有人都在沟通,但是当我启用授权时,我无法弄清楚如何让他们继续沟通。
我遇到以下问题:
"_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时,它显然有效。现在我可能是新手,但不是愚蠢的。我知道它无法连接,因为我启用了授权。但是,一个人在哪里配置主要与auth = true二级同步?或者是否有任何其他解决方案如何在副本集之间启用通信,同时强制客户端需要授权>我到处寻找无济于事。
如果不可能除了使用防火墙之外什么是授权的替代方案?如果有人通过IP破坏可信系统会怎么样?我不希望他们能够在没有密码的情况下连接到辅助或主要。例如,如果我的办公室遭到入侵并且mongo primary信任我们的办公室IP。
答案 0 :(得分:1)
感谢Asya和我在下面找到的文章,我能够允许用户授权,并且还让副本与密钥文件通信(在所有副本之间共享)。要强调的是,您不能像其他RDBMS那样使用副本与用户进行通信。
你必须记住chmod文件,否则mongod实例不会开始说密钥文件“太开放”。它试图保护你没有显示非必要的Linux用户/组的密钥。你还必须确保你知道mongod(在我的情况下)用户。