mongodb 找不到匹配读取首选项 { mode: \"primary\" } 的主机?

rog*_*ger 9 replication mongodb sharding

我正在部署一个 monodb 分片,我在三台机器上部署了一个副本集:

dev41:27017,dev42:27017,dev193:27017
Run Code Online (Sandbox Code Playgroud)

configsvr在三台机器中:

dev41:27019,dev42:27019,dev193:27019
Run Code Online (Sandbox Code Playgroud)

还有机器中的mongos:

dev41:28000
Run Code Online (Sandbox Code Playgroud)

最后,我尝试将我的副本添加到 mongos 中:

mongo dev41:28000/admin
sh.addShard('rs0/dev41,dev42,dev193')
Run Code Online (Sandbox Code Playgroud)

然后我得到了错误:

{
    "ok" : 0,
    "errmsg" : "could not find host matching read preference { mode: \"primary\" } for set rs0",
    "code" : 133
}
Run Code Online (Sandbox Code Playgroud)

小智 3

我遇到了同样的问题,然后查看了 Mongos 日志文件,上面写着

无法以内部用户身份对主机名进行身份验证,错误:身份验证失败。

请参阅此处:内部用户身份验证,并在 SecKey 文件和启用身份验证的情况下进行。

解决

我打开mongod.conf文件并

security: authorization: enabled    
keyFile: /var/run/mongodb/secKey.key
Run Code Online (Sandbox Code Playgroud)

丢失了,所以我添加了它并重新启动 mongod。然后我再次从 Mongos 创建了分片,现在它可以工作了。