Надежность ZooKeeper - три против пяти узлов

ОтZooKeeper FAQ:

Reliability:

A single ZooKeeper server (standalone) is essentially a coordinator with
no reliability (a single serving node failure brings down the ZK service).

A 3 server ensemble (you need to jump to 3 and not 2 because ZK works
based on simple majority voting) allows for a single server to fail and
the service will still be available.

So if you want reliability go with at least 3. We typically recommend
having 5 servers in "online" production serving environments. This allows
you to take 1 server out of service (say planned maintenance) and still
be able to sustain an unexpected outage of one of the remaining servers
w/o interruption of the service.

В ансамбле из 3 серверов, если один сервер выведен из ротации и один сервер неожиданно отключился, остается еще один оставшийся сервер, который не должен прерывать обслуживание. Тогда зачем нужны 5 серверов? Или это больше, чем просто прерывание обслуживания, которое рассматривается?

Обновить:

Спасибо @sbridges за указание на то, что это связано с поддержанием кворума. И способ, которым ZK определяет кворумceil(N/2) гдеN этооригинал номер в ансамбле (а не только текущий доступный набор).

Теперь поиск Google по кворуму ZK находит это в книге HBaseглава о ЗК:

В ZooKeeper поддерживается четное число пиров, но обычно оно не используется, потому что ансамбль четного размера требует пропорционально большего количества пиров для формирования кворума, чем ансамбль странного размера. Например, ансамбль с 4 пирами требует 3 для формирования кворума, в то время как ансамбль с 5 также требует 3 для формирования кворума. Таким образом, ансамбль из 5 позволяет двум пирам выходить из строя и сохранять кворум, и, таким образом, более отказоустойчив, чем ансамбль из 4, который допускает только 1 пира.

И это перефразирование Википедии в Эдварде Дж. Юнеблог:

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

 user187040026 янв. 2017 г., 23:34
Что было бы примером "плановое обслуживание "?

Ответы на вопрос(2)

Zookeeper будет работать очень хорошо, пока активные Zookeepers находятся в БОЛЬШИНСТВЕ по сравнению с неудавшимися Zookeepers. Кроме того, в случае четного размера кворума, т. Е. 2,4,6 и т. Д. Failed = Active, поэтому его не рекомендуется.

И 3, и 4 будут обрабатывать только 1 ошибку, тогда почему мы хотели бы использовать 4 зоопарка вместо 3.

Решение Вопроса

ceil(N/2), Для ансамбля из 3 серверов это означает, что в любое время должны быть включены 2 сервера, для ансамбля из 5 серверов в любое время должны быть включены 3 сервера.

 Luke06 нояб. 2015 г., 17:25
Я согласен с @Pangea здесь. Это будет означать, что кластер из 5 узлов может поддерживать только 2 сбоя (3-й сбой будет опускаться ниже кворума 3), а кластер из 4 узлов может также поддерживать 2 сбоя (3-й сбой будет опускаться ниже кворума 2).
 user65065427 окт. 2016 г., 02:07
Похоже, так и должно бытьceil((N+1) / 2), Кворум для ансамбля 4 должен быть 3, а не 2, как отмечено в книге HBase.
 scaph0124 февр. 2016 г., 23:45
@ Пангея, посмотриzookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html  ... Пока большинство ансамбля работают, услуга будет доступна. Поскольку Zookeeper требует большинства, лучше использовать нечетное количество машин. .... Кроме того, отметив четное количество узлов, вы также рискуете разделить мозг, скажем, у вас было 8 узлов, и сеть была разделена на 2 части с 4 узлами на каждой стороне ... на каждой (4) стороне узла не сможет продолжить, поскольку у них нет кворума.
 Aravind R. Yarram04 сент. 2015 г., 03:45
Почему 4 узла кластера не 'Т рекомендуется?

Ваш ответ на вопрос