Запись набора реплик MongoDB с помощью node.js

Я использую собственный драйвер mongodb для node.js, чтобы подключиться к набору реплик из 3 узлов (PRIMARY и двух SECONDARIES), как описано здесь: http://mongodb.github.io/node-mongodb-native/2.0/api/MongoClient.html

 var MongoClient = require("mongodb").MongoClient;     

 var url = "mongodb://admin:pass@hostname:27017";
 var options = {
  db: {
    readPreference: 'primaryPreferred',
    slaveOk: true
  },
  replSet: {
    replicaSet: 'rs0'
  },
  server: {
    w: 1,
    autoReconnect: true
  };

 MongoClient.connect(url, options);

Обратите внимание, что slaveOk: true не документировано, без него я получаю slaveOk это ложная ошибка. Я продолжаю получать Potentially unhandled rejection [83] MongoError: not master на пишет. Не могли бы вы помочь подключиться к набору реплик из узла приложения? Может быть, я укажу все серверы для подключения? Но в документации сказано, что драйвер достаточно умен, чтобы переподключиться, когда ПЕРВИЧНЫЕ изменения.

1 ответ

Чтобы позволить клиенту переключаться между членами набора реплик по мере необходимости, вы должны сообщить ему, что эти альтернативные члены набора реплик существуют. Для этого укажите URL-адреса всех членов набора реплик, разделенных запятой.

var url = "mongodb://admin:pass@hostname1:27017,mongodb://admin:pass@hostname2:27017,mongodb://admin:pass@hostname3:27017,";

Если вы хотите абстрагировать конфигурацию набора реплик от приложения, чтобы обеспечить большую гибкость, вы можете создать защищенный кластер и подключить приложение к маршрутизатору. Затем маршрутизатор позаботится о пересылке соединения соответствующему участнику с набором реплик.

Другие вопросы по тегам