我尝试使用rs.add("developer-ViratualBox:30103")
将节点添加到副本集,并且收到以下错误消息:
{
"ok" : 0,
"errmsg" : "Quorum check failed because not enough voting nodes responded; required 2 but only the following 1 voting nodes responded: developer-VirtualBox:30101; the following nodes did not respond affirmatively: developer-ViratualBox:30103 failed with Failed attempt to connect to developer-ViratualBox:30103; couldn't initialize connection to host developer-ViratualBox, address is invalid",
"code" : 74
}
该节点已在运行,我已使用mongo
shell连接到该节点。可能是什么问题?
答案 0 :(得分:3)
实际错误是couldn't initialize connection to host developer-ViratualBox, address is invalid
,只是主节点无法与secondery节点连接。检查连接,防火墙,并检查与mongo shell的连接是否可以访问该端口。
答案 1 :(得分:1)
在启动辅助mongod进程时使用--replSet选项尝试从主mongod shell运行rs.add(“localhost:27002”)。
答案 2 :(得分:1)
创建rsconf
文件时,请输入<localhost:port>
而不是<hostname:port>
。
然后是reconfig(rsconf)
。
示例:
rs0:PRIMARY>
rsconf = {
_id: "rs0",
members: [
{
_id: 0,
host: "**localhost**:port for primary rs"
}]
}
rs0:PRIMARY> rs.initiate(rsconf)
{
"info" : "try querying local.system.replset to see current configuration",
"ok" : 0,
"errmsg" : "already initialized",
"code" : 23
}
如果您遇到上述错误,请使用以下命令:
rs0:PRIMARY> rs.reconfig(rsconf)
添加辅助节点:rs.add(“localhost:辅助rs的端口”)
希望它能奏效。
答案 3 :(得分:0)
缺少的一点是我尝试添加的实例没有在定义的端口启动mongod实例。因此给定的连接参数不正确,这导致了通信问题。
答案 4 :(得分:0)
另一个可能的问题是,您尝试添加到副本集的计算机未配置为使用复制运行。 将此条目添加到您尝试添加并重新启动服务的计算机上的mongod.conf中,这对我有用:
replication:
replSetName: evoReplicaSet
答案 5 :(得分:-1)
您只能在连接到主要时添加成员。要知道哪个成员是主要成员,请登录副本集的任何成员并发出db.isMaster()命令。
然后,使用rs.add()将新成员添加到副本集。例如,要在主机mongodb3.example.net上添加成员,请发出以下命令:
rs.add("developer-ViratualBox:30103")
答案 6 :(得分:-1)
也许您可以删除“本地”数据库以删除replSet的信息,然后为每台服务器重新启动mongod。
答案 7 :(得分:-2)
您应该使用docker network解决此问题。