Mongodb MongoError:在复制集中找不到主映像

Mongodb MongoError:在复制集中找不到主映像,mongodb,mongodb-replica-set,Mongodb,Mongodb Replica Set,我有两个应用服务器,它们连接到一个复制集(主、辅助和仲裁器) 我面临的问题是 [ 'MongoError: no primary found in replicaset', ' at ../server/node_modules/mongodb-core/lib/topologies/replset.js:524:28', ' at null.<anonymous> (../server/node_modules/mongodb-core/lib/topolog

我有两个应用服务器,它们连接到一个复制集(主、辅助和仲裁器)

我面临的问题是

 [ 'MongoError: no primary found in replicaset',
  '    at ../server/node_modules/mongodb-core/lib/topologies/replset.js:524:28',
  '    at null.<anonymous> (../server/node_modules/mongodb-core/lib/topologies/replset.js:303:24)',
  '    at g (events.js:260:16)',
  '    at emitOne (events.js:77:13)',
  '    at emit (events.js:169:7)',
  '    at null.<anonymous> (../server/node_modules/mongodb-core/lib/topologies/server.js:326:21)',
  '    at emitOne (events.js:77:13)',
  '    at emit (events.js:169:7)',
  '    at null.<anonymous> (../server/node_modules/mongodb-core/lib/connection/pool.js:270:12)',
  '    at g (events.js:260:16)',
  '    at emitTwo (events.js:87:13)',
  '    at emit (events.js:172:7)',
  '    at Socket.<anonymous> (../server/node_modules/mongodb-core/lib/connection/connection.js:175:49)',
  '    at Socket.g (events.js:260:16)',
  '    at emitOne (events.js:77:13)',
  '    at Socket.emit (events.js:169:7)',
  '    at connectErrorNT (net.js:996:8)',
  '    at nextTickCallbackWith2Args (node.js:442:9)',
  '    at process._tickCallback (node.js:356:17)' ]
rs.status()输出

然而,我只从一个连接到MongoDB的应用服务器(比如App1Box)上看到了这一点。我没有在App2Box上看到这个问题

我已尝试从复制集中删除成员并重新添加,但问题仍然存在

Mongo版本:2.6.8 节点版本:4.4.3 npm版本:3.8.9

我可以在mongo控制台中看到replicaSet中的所有成员,同时在主和次控制台上执行rs.status()


感谢您的帮助。

在向replicaSet添加成员时发现问题在于未使用完全限定的DNS名称。感谢@Neil Lunn。

1)请检查您的连接字符串,其中包含以下链接后面的所有DB服务器名称

2) 进行故障转移 为此,请登录到主节点并执行以下命令

rs.stepDown()

在与replicaSet的连接链接之后添加以下代码

'mongodb://localhost:27017/streamfig?replicaSet=rs', { useNewUrlParser: true, useUnifiedTopology: true, connectWithNoPrimary: true }

它将解决所有错误。

显示节点应用程序中正在使用的连接字符串。同时显示
rs.status()。您的应用程序连接中未使用
replicaSet
选项,或者您的replicaSet被错误配置为仅使用“内部”主机名,而这些主机名在客户端应用程序中不可见。已将信息添加到帖子中。该配置不是有效的连接字符串。显示对
MongoClient.connect()的实际调用以及如何通过该对象的任何部分进行发送。我还看到了
“App1Box.dmz.mytest.com.au”
,您的
rs.status()
只显示
App1Box
。我假设如果您只是
ping App1Box
而没有FQDN,那么您将一无所获。副本集上的配置是驱动程序使用的,而不是“种子列表”,这是另一回事。请参阅驱动程序参考文档中的。感谢您的帮助。现在,在将种子列表更改为完全限定的DNS后,我看不到出现此问题。以上几点不是问题所在。谢谢你的回复。问题是没有使用完全限定的DNS名称。
rs.stepDown()
'mongodb://localhost:27017/streamfig?replicaSet=rs', { useNewUrlParser: true, useUnifiedTopology: true, connectWithNoPrimary: true }