У меня есть три экземпляра на EC2, каждый с сервисом Монго, настроенный с набором реплик, то есть первичный (192.168.1.1), вторичный (192.168.1.2) и арбитр (192.168.1.3).
У меня есть несколько приложений, которые связаны с Монго.
Мой вопрос заключается в следующем:
Если я добавлю другого участника в реплику, мне придется изменить все приложения в настройке подключения, чтобы включить нового участника?
Потому что я это спрашиваю.
Предположим, что ip с конечным .1 является основным, .2 — вторичным, затем добавьте новый член в конец ip .4. И я не включаю этого нового члена в настройки базы данных приложения. И сделал первичные падения, арбитр выбирает IP с .4, чтобы быть новым основным. Все приложения начнут выбрасывать исключения.
Как я могу это «исправить», так что всегда нужно добавлять нового участника, не нужно менять конфигурацию базы данных приложения. Представьте себе, если я должен добавить ‘n’ участников.
Есть ли у вас какой-либо способ настроить приложение, зная, что мое приложение написано на PHP, чтобы идентифицировать основной только без добавления конфигурации хоста?
Не нужно ничего менять в приложении. Вы просто добавляете новый узел в набор реплик с помощью команды rs.add («адрес: порт»). Если у вас есть три узла (основной и 2x вторичный), у вас НЕ должно быть никакого арбитра, если все эти узлы являются членами с правом голоса. (количество голосов должно быть всегда нечетным)
Вы можете «выбрать» первичный порядок наследования с приоритетными значениями. Если вы установите приоритет узлов .1 f.ex. 3, .2 узлы имеют приоритет 2 и сохраняют последний вторичный элемент как приоритет 1, .1 остается первичным, если может, а когда нет, .2 выбирается в качестве основного …
Дело в том, что достаточно, чтобы ваше приложение подключилось к одному узлу набора реплик и оно (приложение) автоматически получило информацию, какие другие узлы этого набора реплик и кто является первичным.
Если задана реплика из трех узлов, у вас всегда должны быть запущены два узла (большинство; 2/3), иначе ваш последний узел не будет выбран в качестве основного.
Других решений пока нет …