Express no puede conectarse al conjunto de réplicas mongodb cuando se detiene Mongo local

Tengo una mongodb replica set con la siguiente configuración:

  • M1 (192.168.77.3) primario (host App1)
  • M2 (192.168.77.4) secundario (host App2)
  • M3 (192.168.77.5) secundario (host App3)
  • Árbitro m4

Aquí está mi código Express para conectarme a db (uso mongoose como ODM):

  const config = { db: `mongodb://192.168.77.3,192.168.77.4,192.168.77.5/mydb`, dbOptions: { useMongoClient: true, reconnectTries: Number.MAX_VALUE, replicaSet: process.env.REPLICA_SET, poolSize: 100, keepAlive: 1, connectTimeoutMS: 30000, socketTimeoutMS: 300000, w: 1 } } mongoose.connect(config.db, config.dbOptions, (error) => { if (error) { console.log('Error on connecting to th db: ', error) console.log('\x1b[31m', '*** PLEASE CONNECT TO DATABASE BEFORE RUN SERVER', '\x1b[0m') process.exit(1) } callback() }) 

La aplicación funciona como se esperaba. Cuando M1 baja, M2 o M3 son elegidos para ser el primary , la App2 y la App3 siguen funcionando, PERO la App1 NO se puede conectar al replica set con el mensaje de error:

 MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017] 

Esta es mi configuración mongodb en App1 :

 storage: dbPath: /var/lib/mongodb journal: enabled: true systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log net: port: 27017 bindIp: [127.0.0.1, 192.168.77.3] replication: oplogSizeMB: 3000 replSetName: my_rs 

¿Hay algún error en mi configuración?

NO PUEDE mezclar direcciones IP de múltiples nodos en un solo archivo de configuración.

Su cadena de enlace

bindIp: [127.0.0.1, 192.168.77.4, 192.168.77.5]

debiera ser

bindIp: "127.0.0.1,192.168.77.3"

en el primer nodo y

bindIp: "127.0.0.1,192.168.77.4"

en el segundo nodo. Y así sucesivamente … Entonces, puede tener enlace localhost y otras direcciones que pertenecen a ese nodo.

Mi respuesta inicial fue incorrecta porque pensé que tenía algo que ver con los mongooos, lo que no sé.