mongodb副本集 - 所有节点恢复

时间:2017-01-09 10:39:00

标签: mongodb

我正在使用简单的mongodb副本集配置。我有一个主要和两个辅助。在我计划将访问控制添加到mongodb实例之前,一切都很好。(我知道如何添加它)

我关闭所有mongod实例,当我重新启动它们时,所有节点都进入RECOVERING状态。我注意到当任何(一次只有一个)实例运行时,状态变为SECONDARY。现在要添加访问控制(使用访问)我必须在PRIMARY节点中,因为一旦我启动所有实例,它都会进入RECOVERING状态。

为什么会这样? EDIT1:数据库大小为700 Mb

EDIT2:我设法将它们恢复到一致的状态,这是因为我想在mongod.conf文件中有不同的设置之前。 现在我有两个secondaries和一个primary。现在我想添加使用访问控制我应该如何去做,以便节点不会再次进入不一致状态。

1 个答案:

答案 0 :(得分:0)

我的解决方案是使用keyFile身份验证。所以而不是:

security:
    authorization: enabled

使用:

security:
  keyFile: <path-to-keyfile>

基本上我按照以下说明进行操作:

https://docs.mongodb.com/manual/tutorial/enforce-keyfile-access-control-in-existing-replica-set

这可以保证一些事情:

  1. 同时执行内部身份验证(副本之间的通信)用户访问控制
  2.   

    使用密钥文件身份验证,副​​本集中的每个mongod实例都使用密钥文件的内容作为共享密码来验证部署中的其他成员。只有具有正确密钥文件的mongod实例才能加入副本集。