2011-02-08 3 views
7

Если набор реплик установлен в Монго только с двумя узлами, арбитром needs to be added, чтобы гарантировать, что в голосовании для нового мастера всегда есть большинство голосов. Арбитр никогда не становится самим мастером, он просто должен обеспечить голосование каста на других выборах шеи и шеи.Должен ли арбитр MongoDB быть включен в конфигурацию подключения клиента?

При подключении клиента (в моем случае Java) в кластере MongoDB, мы должны specify all the nodes of the cluster в конфигурации соединения:

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

Mongo mongo = new Mongo(addrs); 

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

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

(Взято из here)

... но я просто хотел дважды проверить!

ответ

6

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

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

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

1

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

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