Mi aplicación NodeJS funciona con ReplicaSet de mongo. Quiero que el cliente lea los datos del secundario, así que establecí readPreference=secundario, pero si el secundario está inactivo, la aplicación NodeJS no puede leer los datos de mongo. Con la opción secondPreferred, si no hay ninguna secundaria disponible, NodeJS puede leer datos de la instancia principal. Pero si no tengo un primario disponible, solo tengo un secundario disponible, no puedo iniciar la aplicación NodeJS. Lanzó un error failed to connect to server [xxxx] on first connect [Error: connect ECONNREFUSED xxx.xx.xx.xx:27017
Cómo puedo configurar la combinación entre secondary y secondaryPreferred . Espero que mi NodeJS pueda comenzar incluso con una sola instancia disponible, sin importar si es primaria o secundaria. Cuando se ejecuta NodeJS, si tiene una instancia de mongo inactiva, se lee automáticamente desde otra instancia
"si no hay primario disponible" no es el estado normal de la réplica. Deje que ocurra la elección, luego inicie su aplicación.
El primario es un miembro obligatorio de un conjunto de réplicas. Todas las escrituras van a primaria. Cuando se conecta al conjunto de réplicas, el controlador debe saber dónde escribir, incluso si no tiene la intención de escribir en el nivel de la aplicación.
Una vez conectada, su aplicación puede sobrevivir a la pérdida temporal de la primaria y la lectura de las secundarias.
Como nota al margen, considere agregar un árbitro . El conjunto de réplicas de 2 nodos es una receta para el desastre.