Отработка отказа с mongodb
Я должен настроить базу данных, которая может обрабатывать отказоустойчивость (если один аварийно завершает работу, другой берет на себя). Для этого я решил использовать mongodb: Я настроил набор реплик с двумя экземплярами. Каждый экземпляр выполняется на отдельной виртуальной машине. У меня есть несколько вопросов:
-
Рекомендуется использовать не менее 3 экземпляров в наборе реплик. Можно ли использовать только два ?
-
У меня есть два экземпляра, а затем два IP-адреса. Какой IP я должен дать своему приложению, которое будет необходимо чтение / запись в базе данных ? Когда база данных не работает, как запрос будет перенаправлен на экземпляр, который все еще работает ?
Некоторая помощь, чтобы начать работу было бы здорово !
1 ответ:
Нет, минимальное требование для набора реплик - это три процесса (docs ), но третьим может быть арбитр, хотя это Не рекомендуется.Рекомендуется использовать не менее 3 экземпляров в наборе реплик. Можно ли использовать только два ?
У меня есть два экземпляра, а затем два 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.