Как кластер из 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 узлов и т. д.