Добавление нового узла ZooKeeper в кластер Kafka? - PullRequest
0 голосов
/ 25 августа 2018

Я использую кластер Apache Kafka из пяти узлов и использую кластер Apache ZooKeeper из трех узлов.

В файле zookeeper.properties:

server.1=zNode01:2888:3888
server.2=zNode02:2888:3888
server.3=zNode03:2888:3888

И в файле server.properties:

zookeeper.connect=zNode01:2181,zNode02:2181,zNode03:2181

Я хочу добавить новый узел ZooKeeper:

  1. Мне нужно добавить этот новый IP ZooKeeper в существующий файл свойств ZooKeeper и перезапустить его ИЛИ Есть ли другой способ сделать это?

  2. Мне нужно добавить этот новый IP ZooKeeper в файл Kafka server.properties и перезапустить его, ИЛИ есть другой способ сделать это?

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Это гораздо сложнее, чем то, что описал @ cricket_007. Это было бы хорошим чтением, прежде чем пытаться добавить нового члена в существующий кластер zookeeper.

https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html

Сконцентрируйтесь конкретно на Раздел «Изменение текущей динамической конфигурации» .

По сути, это шаги высокого уровня:

а) Новый сервер должен быть представлен руководителю. Это делается путем добавления самого себя и «достаточной информации о кластере» в файл zookeeper.properties для соединения с существующим лидером. Конфигурация не должна быть абсолютно обновленной, но достаточно свежей, чтобы связаться с текущим лидером. Для этого вы можете просто получить файл zookeeper.properties с одного из узлов в кластере, добавить к нему информацию о присоединении и запустить сервер zookeeper на узле присоединения.

b) Обратите внимание, что тот, кто имеет возможность общаться с лидером кластера, не делает его частью кластера автоматически. Ансамбль зоопарка должен проголосовать и принять решение о добавлении нового узла в кластер. Статус присоединяющегося в настоящее время подписчика без права голоса, и если вы посмотрите текущую конфигурацию ансамбля zookeeper (с помощью команды zkcli «config»), вы не увидите новый узел, указанный в ансамбле.

в) Теперь мы используем команду zkcli «reconfig» для добавления нового узла в кластер либо в качестве участника голосования, либо в качестве наблюдателя. Участник голосования означает, что во всех решениях на основе консенсуса (например, кто является новым лидером, следует ли писать и т. Д.) Будут участвовать все участники голосования (а не наблюдатели). Наблюдатели добавляются в первую очередь для увеличения пропускной способности чтения ансамбля zookeeper без дополнительных затрат на их включение в двухфазное принятие для каждой операции записи. Команда reconfig также выполняет эту двухфазную фиксацию, когда лидер собирает голоса от всех участников голосования, должен ли новый узел быть добавлен в кластер. Если кворум существующих участников согласен, новый узел добавляется в кластер.

d) Теперь при выполнении команды config zkcli новый узел будет показан как часть кластера, либо как участник голосования, либо как наблюдатель.

e) Наконец, вы хотите обновить файл server.properties kafka, чтобы закрыть цикл. Даже если это изменение может и не понадобиться немедленно, это сообщит серверу kafka (который является клиентом zookeeper) о доступности нового члена в кластере zookeeper, чтобы он мог откатиться к вновь добавленному узлу во время сценариев сбоя.

Надеюсь, что ответ поможет понять, как динамически добавляется новый узел в кластер zookeeper.

0 голосов
/ 25 августа 2018

Примечание: я не пробовал расширять кластер ZK самостоятельно, но я бы попробовал

Добавление новых узлов со всеми серверами, определенными в файле свойств. Они должны присоединиться хорошо.

Затем добавьте два новых сервера к другим ZK и выполните повторный перезапуск на них.

Кафке не нужно добавлять дополнительные свойства, если только вы не ожидаете, что потеряете более одного ЗК в любой момент времени

...