Подтвердить что ты не робот

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

Из Часто задаваемые вопросы ZooKeeper:

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 серверов? Или это больше, чем просто прерывание обслуживания, которое рассматривается?

Update:

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

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

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

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

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

4b9b3361

Ответ 1

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