2

我在 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"

当我通过将其设置为 false 来禁用身份验证时,它显然可以工作。现在我可能对此很陌生,但并不愚蠢。我知道它无法连接,因为我启用了授权。但是,一个人究竟会在哪里配置主节点以与 auth=true 辅助节点同步呢?或者是否有任何其他解决方案关于如何在强制客户端需要授权的同时启用副本集之间的通信> 我到处寻找无济于事。

如果不可能,除了仅使用防火墙之外,还有什么替代授权的方法?如果有人通过 IP 破坏受信任的系统怎么办。我不希望他们能够在没有密码的情况下连接到辅助服务器或主服务器。例如,如果我的办公室被入侵并且 mongo 主节点信任我们的办公室 IP。

4

1 回答 1

1

感谢 Asya 和我在下面找到的文章,我能够允许用户授权,并且还可以让副本与密钥文件通信(在所有副本之间共享)。强调您不能像其他一些 RDBMS 的工作方式那样让副本与用户进行通信。

您必须记住对文件进行 chmod,否则 mongod 实例将不会开始说密钥文件“太开放”。它试图保护您免受向非必要 linux 用户/组显示的密钥。您还必须确保您对 mongod(在我的情况下)用户。

Mongodb KeyFile 太开放权限

于 2013-04-19T23:35:19.603 回答