Не знаете, сколько участников с правом голоса в наборе реплик MongoDB?

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

Однако несколько строк ниже вы можете прочитать (это для «гладких выборов»):

При добавлении дополнительных элементов убедитесь, что выполняются следующие архитектурные условия:

  • В наборе нечетное количество членов с правом голоса.

    Если у вас есть четное количество участников с правом голоса, разверните арбитра, чтобы создать нечетное число.

Если я прав два четно, то предлагаемая минимальная конфигурация неверна! Как четное число избирателей может привести к тому, что выборы не будут «гладкими»? Что "не гладко" в плане голосования в реплике?

Подробнее об этом: даже если считать праймериз избирателем (таким образом, три избирателя, нечетное число), если праймериз не состоится, вы получите двух избирателей. Как праймериз может голосовать, если он не работает?


person gremo    schedule 17.05.2013    source источник
comment
У вас есть три голоса в наборе, который вы описали. Если участник не работает, он не может голосовать. Это как проголосовать против или воздержаться. Чтобы стать первичным, вторичный должен получить 2 (большинство из трех) голосов «за». Поскольку он может получить два голоса, он станет новым первичным.   -  person Asya Kamsky    schedule 18.05.2013


Ответы (1)


В статье об архитектуре набора реплик предлагаемая (минимальная) конфигурация состоит из: одного основного члена и двух вторичных (или одного вторичного и облегченного арбитра). Следовательно, два члена с правом голоса.

Это неправильно. Первичный, вторичный и арбитр - ТРИ голоса.

Поэтому у вас нечетное количество голосов. Поэтому, если один узел не работает, два других составляют большинство и могут выбрать новый основной узел.

Причина, по которой у вас не должно быть четного числа, заключается в том, что в случае сетевого раздела вы не получите 50% членов с правом голоса на каждой стороне сетевого раздела - если это произойдет, у вас не будет основного, даже если каждый член набора реплик фактически работает.

person Asya Kamsky    schedule 18.05.2013
comment
Все еще не могу получить это: если первичный сервер выйдет из строя (с использованием одного главного и двух подчиненных), вы получите двух избирателей. Как праймериз может голосовать, если он не работает? Кроме того, AFAIK вторичный становится новым мастером по приоритету или свежести данных: как сетевой раздел может быть проблемой? - person gremo; 18.05.2013
comment
количество голосов зависит от общего настроенного набора реплик, а не от их количества. если вы настраиваете три узла, то существует три голоса. не имеет значения, если один или два из них проиграют - это равносильно тому, что они не проголосуют за третьего. - person Asya Kamsky; 18.05.2013
comment
Забудьте мой последний комментарий, я думал неправильно, хотя имеет значение, если два из них не работают, поскольку тогда кворум не имеет большинства голосующих членов на линии, я точно проверил это; даже написал об этом на форумах, и Скот подтвердил, что это было потому, что не было большинства настроенных реплик в очереди для голосования... - person Sammaye; 18.05.2013