Запись набора реплик 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,";
Если вы хотите абстрагировать конфигурацию набора реплик от приложения, чтобы обеспечить большую гибкость, вы можете создать защищенный кластер и подключить приложение к маршрутизатору. Затем маршрутизатор позаботится о пересылке соединения соответствующему участнику с набором реплик.