2014-10-25 5 views
1

Я создал набор реплик MongoDB с двумя членами. Согласно rs.status(), оба элемента успешно подключены.MongoDB Replica Sets and HA

-член использует порт 27018. Член B использует порт 27019.

Если из членов идет вниз, я хочу, чтобы мой клиент автоматически переключен на члены B. Как получить клиент, чтобы сделать это? Как он узнает, что ему нужно переключиться на порт 27019?

+0

Пожалуйста, ознакомьтесь с [MongoDB документы о репликации] (http://docs.mongodb.org/manual/replication/). На ваши вопросы ответили = = tl; dr: Отказоустойчивость происходит автоматически, если вы настроили все согласно документам, 2 набора реплик-членов - злые, запуск mongodb на нестандартных портах делает администрирование сложнее, чем необходимо. –

ответ

4

Вы не сможете сделать это только с двумя членами в вашем реплике.

Когда Primary падает (я полагаю, в вашем примере, что член A является Первичным), другие участники должны выбрать новый Primary. Чтобы стать новым Первичным, член должен получить большинство голосов, что означает более 50%. Если у вас всего 2 члена, и один идет вниз, остается только один член, то это означает, что большинство голосов невозможно получить (2).

Что вы хотите сделать, это либо добавить еще один вторичный член, поэтому, если ваш Primary спустится, остальные два смогут выбрать новый Первичный между ними два. Или вы можете добавить Арбитр, который является легким процессом mongod (возможно, другим другом сервером), и функция которого заключается в том, чтобы участвовать в выборах.

В любом случае, я думаю, что, когда новый Primary будет избран, коммутатор должен быть прозрачным, если вы правильно создали приложение: когда вы создаете экземпляр своего драйвера, вы передаете ему список серверов и имя набора реплик они работают, поэтому, если кто-то не работает, он переключится на второй. Но я могу ошибаться по этому вопросу ...

Более подробная информация об этом: http://docs.mongodb.org/manual/core/replica-set-high-availability/

Смежные вопросы