Я новичок в технологии Kafka. Я установил базовый кластер с одним узлом, используя Ambari.
Я хочу понять, какая конфигурация рекомендуется для рабочего сервера. Скажем, в продакшене у меня будет 5 тем, каждая из которых получит трафик в диапазоне от 500 000 до 50 000 000 в день.
Я думаю о настройке кластера kafka из 3-4 узлов с использованием экземпляров EC2 r5.xlarge.
Меня больше всего смущает часть zookeeper. Я понимаю, что zookeeper нужно нечетное количество узлов, а zookeeper установлен на всех узлах kafka, тогда как мне запустить Kafka с четным количеством узлов. Если это правда, это также ограничит Kafka нечетным числом узлов.
Действительно ли нужно устанавливать Zookeeper на все узлы Kafka. Могу ли я установить Zookeeper на отдельных узлах и брокеров Kafka на отдельных узлах, как?
Что, если я хочу запустить несколько кластеров Kafka. Можно ли управлять несколькими кластерами Kafka через один кластер Zookeeper, как, если это возможно?
Я начал изучать Kafka только недавно, любая помощь будет признательна.
Спасибо,
ну это не такое уж большое нет. Рекомендуется разделить их, но если это всего лишь один кластер kafka и выделенный zookeeper, проблем быть не должно. Например, управляемый кластер kafka, который мы используем в таких производственных процессах.
@sowieso Для кластеров любого размера, превышающего 5 брокеров, брокерам все это не нужно. Но даже тогда Kafka и Zookeeper предпочитают использовать много кеша страниц / памяти JVM, поэтому в любом случае лучше разделить
@ cricket_007 Я согласен, к тому же согласование кворума происходит медленнее, поэтому 5 серверов для ансамбля zookeeper должно быть макс.





Can I install Zookeeper on separate nodes and Kafka brokers on separate nodes, how ?
Вы можете и должны, если у вас есть доступные ресурсы.
Запустите zookeeper-server-start zookeeper.properties на нечетном количестве серверов. (максимум 5 или 7 для больших кластеров Kafka)
На каждой другой машине, являющейся брокером Kafka, а не на тех же серверах, что и Zookeeper, отредактируйте server.properties, чтобы он указывал на этот набор адресов компьютеров Zookeeper для свойства zookeeeper.connect.
Затем сделайте kafka-server-start server.properties для каждого нового брокера Kafka.
Оттуда вы можете масштабировать Kafka независимо от Zookeeper.
Is it possible to manage multiple Kafka clusters through single Zookeeper cluster
Посмотрите chroots Zookeeper
Один кластер Kafka будет определен как
zoo1:2181/kafka1
И второй
zoo1:2181/kafka2
будьте осторожны, чтобы не перепутать их, если машины не должны находиться в одном кластере Kafka.
Вы можете найти различные репозитории CloudFormation, Terraform или Ansible для настройки Kafka распределенным способом в облаке на Github или перейти на Kubernetes, если вы знакомы с ним.
Спасибо за ответ @ cricket_007. Это помогает развеять некоторые сомнения. Можете ли вы также ответить, можно ли управлять несколькими кластерами Kafka через один кластер Zookeeper. Как это работает. Если вы можете указать на какую-то документацию / сценарий установки для этого, это будет здорово.
Все брокеры должны использовать одну и ту же строку подключения Zookeeper. Если вы когда-либо использовали Zookeeper раньше, вы могли знать, что он может делать такие блокировки, что только одно значение может редактироваться любым приложением за раз, и его данные хранятся в дереве, похожем на файловую систему. Все проекты Apache имеют свои собственные сайты
I am mostly confused about zookeeper part. I understand zookeeper needs odd number of nodes and zookeeper is installed on all kafka nodes, then how do I run Kafka with even number of nodes. If this is true it will limit Kafka to odd number of nodes as well.
Zookeeper можно, но не обязательно устанавливать на тех же серверах, что и kafka. Необязательно запускать zookeeper на нечетном количестве узлов, просто очень хорошая рекомендация.
Is it really needed to install Zookeeper on all Kafka nodes. Can I install Zookeeper on separate nodes and Kafka brokers on separate nodes, how ?
Это не обязательно, и даже лучше не иметь zookeeper и kafka на одном сервере. Установка zookeeper на другой сервер очень похожа на установку zookeeper на одном и том же. У каждого брокера kafka должна быть настройка zookeeper.connect, указывающая на все узлы zookeeper.
What if I want to run multiple Kafka clusters. Is it possible to manage multiple Kafka clusters through single Zookeeper cluster, how if possible ?
Возможно. В этом случае рекомендуется выделить серверы только для ансамбля zookeeper. В этом случае в настройках zookeeper.connect вы должны использовать hostname: port / path вместо просто hostname: port.
"zookeeper установлен на всех узлах kafka" - Нет, не делайте этого.