2015-03-02 3 views
0

У нас есть установка с ровно двумя центрами обработки данных, у нас есть ровно одна машина в каждом центре обработки данных, и мы хотим, чтобы узел ZooKeeper был развернут на обе эти машины и для их кластеризации. Мы не можем добавить в кластер новые машины.Два узла ZooKeeper ансамбль

В настоящее время у нас есть два узла ZooKeeper A и B, один на машине A и один на B. Мы должны быть в состоянии терпеть сбой одной машины, а другой экземпляр ZooKeeper должен оставаться работоспособным.

Я понимаю из документации ZooKeeper, что рекомендуется знать не менее трех узлов - поскольку механизм координации требует, чтобы большинство узлов было живым для продолжения (в этом случае два).

Мой вопрос: возможно ли получить доступное развертывание ZooKeeper, состоящее только из двух узлов?

ответ

1

№ В случае с узлами Zookeeper 2 недостаточно. Даже если один из ваших узлов вышел, оставшийся не смог определить, был ли он включен или просто разбит на разделы. Это может привести к несогласованности, сценарию с разделенным мозгом, поскольку оба они будут продолжать обслуживать своих клиентов.

Я не уверен, что Zookeeper даже образует кластер или просто запускается в автономном режиме. Ответьте на этот вопрос: Zookeeper running on two nodes

В вашем случае только с двумя машинами вы можете рассмотреть возможность размещения второго экземпляра Zookeeper на одной из машин и создания кластера из 3 узлов.

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

Вы также можете изучить иерархические кворумы и наблюдатели, которые могут быть полезны для кластеров, охватывающих несколько центров обработки данных.

Смежные вопросы