Должен ли арбитр MongoDB быть включен в конфигурацию клиентского соединения? - PullRequest
8 голосов
/ 08 февраля 2011

Если набор реплик установлен в Mongo только с двумя узлами, необходимо добавить арбитр , чтобы всегда было большинство в голосовании за нового мастера. Арбитр никогда не становится самим хозяином, он просто там, чтобы обеспечить решающий голос на других выборах «шея и шея».

При подключении клиента (в моем случае Java) к кластеру MongoDB мы должны указать все узлы кластера в конфигурации подключения:

List addrs = new ArrayList();
addrs.add( new ServerAddress( "localhost" , 27017 ) );
addrs.add( new ServerAddress( "localhost" , 27018 ) );

Mongo mongo = new Mongo(addrs);

Должен ли арбитр быть включен в конфигурацию соединения? Я бы не угадал, как они:

не имеет копии данных и никогда не станет основным узлом (или даже читаемым вторичным)

(взято с здесь )

... но я просто хотел перепроверить!

Ответы [ 2 ]

7 голосов
/ 08 февраля 2011

Нет, вам не нужно включать в соединение арбитры.

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

Вам даже не нужно указывать все серверы в конфигурации вашего соединения (даже не главный) - пока один из серверов выупоминание возвращает ответ, он может найти мастера оттуда.Хотя, ИМХО, чем больше вы назовете, тем лучше, просто если количество их уменьшится.

1 голос
/ 07 июля 2011

Список - это просто начальный список.Фактические члены набора реплик определяются после подключения к одному.Вы могли бы просто указать один на 27017 (но было бы плохо, если бы этот был вниз).

...