Отработка отказа с mongodb


Я должен настроить базу данных, которая может обрабатывать отказоустойчивость (если один аварийно завершает работу, другой берет на себя). Для этого я решил использовать mongodb: Я настроил набор реплик с двумя экземплярами. Каждый экземпляр выполняется на отдельной виртуальной машине. У меня есть несколько вопросов:

  • Рекомендуется использовать не менее 3 экземпляров в наборе реплик. Можно ли использовать только два ?

  • У меня есть два экземпляра, а затем два IP-адреса. Какой IP я должен дать своему приложению, которое будет необходимо чтение / запись в базе данных ? Когда база данных не работает, как запрос будет перенаправлен на экземпляр, который все еще работает ?

Некоторая помощь, чтобы начать работу было бы здорово !

1 8

1 ответ:

Рекомендуется использовать не менее 3 экземпляров в наборе реплик. Можно ли использовать только два ?

Нет, минимальное требование для набора реплик - это три процесса (docs ), но третьим может быть арбитр, хотя это Не рекомендуется.

У меня есть два экземпляра, а затем два IP-адреса. Какой IP я должен дать своему приложению, которое будет нуждаться в чтении / записи в базе данных ? Когда база данных не работает, как запрос будет быть перенаправленным на экземпляр, который все еще работает ?

Есть две альтернативы:

#1 (рекомендуется)

Вы предоставляете драйверу все адреса (для получения более подробной информации о том, как это сделать, посетите docs ), пример сNodeJS driver (аналогично с другим). Таким образом, драйвер будет знать все или, по крайней мере, несколько экземпляров непосредственно, что предотвратит проблемы, если все указанные экземпляры не работают (см. №2).

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

MongoClient.connect('mongodb://[server1],[server2],[...]/[database]?replicaSet=[name]', function(err, db) {
});

#2

Вы предоставляете водителю один из них (вероятно, основной), а mongodb разберется с остальными. Однако если ваше приложение запускается, когда указанный экземпляр(ы) не работает, драйвер не сможет найти другие экземпляры и, следовательно, не сможет подключиться к mongodb.