我有 2 个虚拟机,两个虚拟机都运行 mongodb。我创建了一个用户和角色并添加了用于测试的数据。一切正常,直到我尝试设置副本集。当我运行 rs.initiate() 时,出现“...replSetHeartbeat 需要身份验证...”错误,如下所示。我可以通过传递 --host "nodeserver-hulk:27017"手动从 "hawkeye"连接到 "hulk"服务器。有什么想法吗?
系统
Ubuntu Server 18.04.4 LTS
Mongod v.4.2.3
rs.initiate 命令
rs.initiate(
{
_id: "r1",
version: 1,
members: [
{ _id: 0, host : "nodeserver-hulk:27017"},
{ _id: 1, host : "nodeserver-hawkeye:27017"}
]
}
)
rs.initiate 错误
{
"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 文件(两台服务器相同)
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /mnt/mongo/data
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
#security:
security:
authorization: 'enabled'
#operationProfiling:
#replication:
replication:
replSetName: 'r1'
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
显示用户命令
> 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
,以便每个节点都可以针对其他节点进行身份验证。
https://docs.mongodb.com/manual/tutorial/enforce-keyfile-access-control-in-existing-replica-set/
security:
keyFile: <path-to-keyfile>
关于运行 rs.initiate() 后 mongodb 副本集错误 "...replSetHeartbeat requires authentication...",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60269553/