我正在使用简单的mongodb副本集配置。我有一个主要和两个辅助。在我计划将访问控制添加到mongodb实例之前,一切都很好。(我知道如何添加它)
我关闭所有mongod实例,当我重新启动它们时,所有节点都进入RECOVERING
状态。我注意到当任何(一次只有一个)实例运行时,状态变为SECONDARY
。现在要添加访问控制(使用访问)我必须在PRIMARY
节点中,因为一旦我启动所有实例,它都会进入RECOVERING
状态。
为什么会这样? EDIT1:数据库大小为700 Mb
EDIT2:我设法将它们恢复到一致的状态,这是因为我想在mongod.conf文件中有不同的设置之前。
现在我有两个secondaries
和一个primary
。现在我想添加使用访问控制我应该如何去做,以便节点不会再次进入不一致状态。
答案 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
这可以保证一些事情:
使用密钥文件身份验证,副本集中的每个mongod实例都使用密钥文件的内容作为共享密码来验证部署中的其他成员。只有具有正确密钥文件的mongod实例才能加入副本集。