Как кластер из 3 зоопарка остается активным, когда 1 узел не работает?

Документация здесь говорит, что:

Ансамбль из 3 серверов позволяет одному серверу выйти из строя, и служба все равно будет доступна.

Однако для установления кворума необходимо ceil(n/2)+1 узлы

В случае 3 узлов это:
ceil(3/2)+1 = ceil(1.5)+1 = 3

Таким образом, если 1 узел не работает, кворум не должен быть установлен, и Zookeeper должен выйти из строя.

Является ли приведенная выше документация неправильной в этом случае?

1 ответ

Решение

Кворум равен 2 в кластере из трех узлов, поскольку это большинство. Любые два большинства в пространстве или времени должны пересекаться; поэтому не может не знать о действиях в любом другом большинстве, так как по крайней мере один узел находится в обоих большинстве. Это фундаментальное свойство, используемое алгоритмом Paxos (обратите внимание, что Zookeeper использует ZAB, а не Paxos, я хочу сказать, что безопасность в алгоритме консенсуса использует большинство). Так что ваш расчет должен быть floor(N/2)+1 который дает кворум 2 в кластере из 3 узлов, 3 в кластере из 5 узлов, 4 в кластере из 7 узлов и т. д.

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