mongodb副本集错误“;。。。replSetHeartbeat需要身份验证…“;在运行rs.initiate()之后
我有两个虚拟机,两个虚拟机上都运行mongodb。我已经创建了一个用户和角色,并添加了用于测试的数据。在我尝试设置复制集之前,一切都正常。当我运行rs.initiate()时,会出现下面所示的“…replSetHeartbeat需要身份验证…”错误。我可以通过传递主机“nodeserver-hulk:27017”从“鹰眼”手动连接到“绿巨人”服务器。有什么想法吗 系统mongodb副本集错误“;。。。replSetHeartbeat需要身份验证…“;在运行rs.initiate()之后,mongodb,replication,mongo-shell,Mongodb,Replication,Mongo Shell,我有两个虚拟机,两个虚拟机上都运行mongodb。我已经创建了一个用户和角色,并添加了用于测试的数据。在我尝试设置复制集之前,一切都正常。当我运行rs.initiate()时,会出现下面所示的“…replSetHeartbeat需要身份验证…”错误。我可以通过传递主机“nodeserver-hulk:27017”从“鹰眼”手动连接到“绿巨人”服务器。有什么想法吗 系统 Ubuntu Server 18.04.4 LTS Mongod v.4.2.3 启动命令 rs.initiate( {
Ubuntu Server 18.04.4 LTS
Mongod v.4.2.3
启动命令
rs.initiate(
{
_id: "r1",
version: 1,
members: [
{ _id: 0, host : "nodeserver-hulk:27017"},
{ _id: 1, host : "nodeserver-hawkeye:27017"}
]
}
)
启动错误
{
"ok" : 0,
"errmsg" : "replSetInitiate quorum check failed because not all proposed set members responded affirmatively: nodeserver-hawkeye:27017 failed with command replSetHeartbeat requires authentication",
"code" : 74,
"codeName" : "NodeNotFound"
}
mongod.conf文件(两台服务器相同)
显示用户命令
> show users
{
"_id" : "admin.james",
"userId" : UUID("3ed97f2e-de49-4b98-84c8-566b34805863"),
"user" : "james",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "dbOwner",
"db" : "admin"
},
{
"role" : "clusterAdmin",
"db" : "admin"
},
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
您需要在安全配置中添加一个
keyFile
,以便每个节点可以针对其他节点进行身份验证
安全性:
密钥文件:
这解决了问题!。我只补充说,它仅对密钥文件身份验证有效:如果要使用x509证书而不是密钥文件(这是另一种可能)进行内部身份验证,则需要以以下方式配置:
> show users
{
"_id" : "admin.james",
"userId" : UUID("3ed97f2e-de49-4b98-84c8-566b34805863"),
"user" : "james",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "dbOwner",
"db" : "admin"
},
{
"role" : "clusterAdmin",
"db" : "admin"
},
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
security:
keyFile: <path-to-keyfile>