Надежность 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 по ZK:

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

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

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам