Сначала настройте zookeeper в качестве кластера на обоих узлах для обеспечения высокой доступности (HA). Если я выполню настройку zk только на одном узле, а затем этот узел выйдет из строя, полный кластер будет недоступен. Правильно ? Обязательно ли использовать zk в последней версии kafka? Похоже, что это необходимо для более старой версии Zookeeper является обязательным для Кафки?
Ответ: Да. Zookeeper по-прежнему должен, пока не будет выпущено KIP-500 . Zookeeper отвечает за выбор контроллера, хранение метаданных о кластере Kafka и управление членством в брокере ( ссылка ). В идеале количество узлов Zookeeper должно быть не менее 3. Таким образом, вы можете допустить сбой одного узла. (2 здоровых узла Zookeeper (большинство в кластере) по-прежнему способны выбирать контроллер)) Вам также следует рассмотреть возможность установки кластера Zookeeper на других машинах, отличных от машин, на которых установлена Kafka. Таким образом, отказ сервера не приведет к потере узлов Zookeeper и Kafka.
Запустите брокер kafka на обоих узлах. Он может находиться на том же порту, что и на разных узлах.
Ответ: Сначала следует запустить кластер Zookeeper, а затем кластер Kafka. Подходят одинаковые порты на разных узлах.
Создайте Topi c на любом узле с разделом 1 и репликой как два.
Ответ: Разделы используются для горизонтальной масштабируемости. Если вам это не нужно, один раздел в порядке. При наличии коэффициента репликации 2 один из узлов будет лидером, а один из узлов будет подписчиком в любое время. Но этого недостаточно для полного предотвращения потери данных, а также для обеспечения высокой доступности. У вас должно быть не менее 3 брокеров Kafka, 3 коэффициента репликации разделов, min.insync.replicas=2
в качестве конфигурации брокера и acks=all
в качестве конфигурации производителя в идеальной конфигурации, позволяющей избежать потери данных, не подвергая риску HA. (вы можете проверить this для получения дополнительной информации)
zookeeper выберет любого брокера на одном узле в качестве лидера, а другой в качестве последователя
Ответ: Контроллер-брокер отвечает за поддержание отношений лидер / последователь для всех разделов. Один брокер будет лидером раздела, а другой - подписчиком. С помощью этой команды вы можете проверить лидеров / подписчиков разделов.
bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic my-replicated-topic
Производитель подключится к любому брокеру и начнет публикацию сообщения.
Ответ: Да. Для подключения к кластеру Kafka достаточно указать только одного брокера bootstrap .servers. Но для избыточности вы должны предоставить более одного посредника в bootstrap .servers.
bootstrap .servers : список пар хост / порт, которые следует использовать для установления начальное подключение к кластеру Kafka. Клиент будет использовать все серверы независимо от того, какие серверы указаны здесь для начальной загрузки - этот список влияет только на исходные хосты, используемые для обнаружения полного набора серверов. Этот список должен иметь вид host1: port1, host2: port2, .... Поскольку эти серверы просто используются для начального подключения, чтобы обнаружить полное членство в кластере (которое может изменяться динамически), этот список не должен содержать полный набор из серверов (однако вам может потребоваться более одного, если сервер не работает).
Если лидер отключается, zookeeper автоматически выберет другой узел в качестве лидера. Не знаете, как теперь будет поддерживаться реплика 2, поскольку сейчас работает только один узел?
Ответ: Если брокер Controller отключится, Zookeeper выберите другого брокера в качестве нового контроллера. Если брокер, являющийся лидером вашего раздела , рухнет, новым лидером станет одна из синхрелий c. (Контроллер-брокер отвечает за это) Но, конечно, если у вас есть только два брокера, репликация не будет возможна. Вот почему в вашем кластере Kafka должно быть не менее 3 брокеров.