node.js 连接不上mongodb集群,但连接单个mogodb实例正常

这是mongoose连接代码

mongoose.connect('mongodb://root:kong1234@172.19.35.141:27017/flbb?authSouce=flbb&replicaSet=appa', {
    useNewUrlParser: true,
    useCreateIndex: true,
    useFindAndModify: false,

authSouce:"flbb",
});   

报错提示

connection error: { MongoNetworkError: failed to connect to server [127.0.0.1:27020] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27020]
    at Pool.<anonymous> (E:\flbb\node_modules\mongodb-core\lib\topologies\server.js:564:11)
    at Pool.emit (events.js:189:13)
    at Connection.<anonymous> (E:\flbb\node_modules\mongodb-core\lib\connection\pool.js:317:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)
  name: 'MongoNetworkError',
  errorLabels: [ 'TransientTransactionError' ],
  [Symbol(mongoErrorContextSymbol)]: {} }

mongodb 集群配置 为一主一从一仲裁

mongodb主节点配置--------------------

port=27017

dbpath=D:\mongodb\v2\1\db

replSet=appa

keyFile=D:\mongodb\key.jks

bind_ip=0.0.0.0

auth=true

从节点配置-----------------------

port=27020

dbpath=D:\mongodb\v2\2\db

replSet=appa

keyFile=D:\mongodb\key.jks

bind_ip=0.0.0.0

auth=false

根据报错信息,连接错误发生在 127.0.0.1:27020,这是一个本地地址,而不是你配置中的 172.19.35.141:27017。这可能是因为你的代码中没有指定具体的节点,而是使用了默认值。

你可以尝试在 mongoose.connect() 中添加一个选项来指定连接到 MongoDB 副本集的主节点,例如:

mongoose.connect('mongodb://root:kong1234@172.19.35.141:27017,172.19.35.141:27020/flbb?authSource=flbb&replicaSet=appa', {
    useNewUrlParser: true,
    useCreateIndex: true,
    useFindAndModify: false,
    replicaSet: 'appa',
    authSource: 'flbb'
});

请注意,我将主节点和从节点的 IP 地址都加入了连接字符串,并指定了 replicaSet 和 authSource。这应该可以让你成功连接到 MongoDB 的副本集。