Apache Kafka Один узел-несколько брокеров

Кластер один узел — несколько брокеров
Теперь мы подошли к следующему уровню кластера Кафки. Давайте теперь попробуем создать Кафка кластер по сценарию единый узел — с несколько брокеров, как показано на следующей схеме:

A single node – multiple broker clusters

Первым делом запустим сервер Zookeeper также как и для кластера  Один узел — Один брокер.

bin/zookeeper-server-start.sh config/zookeeper.properties

Запуск брокера Кафка
Для создания нескольких брокеров на одном узле, нужны различные файлы конфигурации сервера для каждого брокера. Каждый файл свойств будет определять значения для следующих уникальных параметров:
Идентификатор брокера
Порт прослушивания
Папка журналов

Например, в server-1.properties, для broker1, определим следующие значения:
broker.id = 1
listeners=PLAINTEXT://:9093
port = 9093
log.dir = /tmp/kafka-log-1
Аналогично, в server-2.properties, который используется для broker2, мы определим следующим образом:
broker.id = 2
listeners=PLAINTEXT://:9094
port = 9094
log.dir = /tmp/kafka-log-2

Аналогичная процедура выполняется для всех новых брокеров. При определении свойств, мы изменили номера портов, так как все дополнительные брокеры по-прежнему будет работать на той же самой машине, но в производственной среде, брокеры будут работать на нескольких машинах и порты можно не менять. Теперь
мы запускаем каждый новый брокер в отдельном окне консоли, используя следующие команды:

bin/kafka-server-start.sh config/server-1.properties
bin/kafka-server-start.sh config/server-2.properties

Создание темы Кафки с помощью командной строки
С помощью утилиты командной строки для создания темы на сервере Кафки, давайте создадим тему названную replicated-kafkatopic с двумя разделами(partitions ) и двумя репликациями(replicas):

bin/kafka-topics.sh —create —zookeeper localhost:2181 —replication-factor 2 —partitions 2 —topic replicated-kafkatopic

Запуск производителя для отправки сообщений

Используйте следующую команду для запуска производителя:

bin/kafka-console-producer.sh —broker-list localhost:9093, localhost:9094 —topic replicated-kafkatopic

Параметр —broker-list определяет к каким брокерам мы хотим подключиться.

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

Запуск потребителя для получения сообщений
Тут используем  потребитель, так же как и в предыдущем примере. Так же, как и раньше, он показывает вывод в командной строке сообшеней, как только присоединяется к теме созданной в брокере Кафки:

bin/kafka-console-consumer.sh —zookeeper localhost:2181 —from-beginning —topic replicated-kafkatopic

ну вот и все основное про то как запустить и установить Кафку.

Несколько узлов — несколькими кластерами брокера
Этот сценарий кластера не стану подробно обсуждать, но, в основном все похоже на сценарий один узел-несколько брокеров, где мы создали несколько брокеров на одном узле, только нужно установить Кафку на каждом узле кластера, и все брокеры из разных узлов необходимо подключить к одному и тому же Zookeeper.

На следующей диаграмме показан сценарий кластера, где несколько брокеров настроены на нескольких узлах (Node 1 и Node 2, в данном случае), а также производители и потребители связаны в различных комбинациях:

multinode

6 thoughts on “Apache Kafka Один узел-несколько брокеров

      1. Привет.

        Да брокеры на разных имеют те же топики.

        Это описывающий пример который ни в коем случае не стоит использовать для работаюшего проекта.
        Конкретно в этой статье описывается ситуация когда на одном ноде запускается несколько брокеров кафки и зукипер. Не потомучто это правильно, а просто потомучто это возможно. ))
        И пример когда нескольких нодах запускается по одному брокеру.
        В реальности если у вас возникла необходимость использования кафки то желательно собирать по принципу 1 нод 1 брокер ну и как минимум 1 нод для зукипера.

        1. Собрал я кворум из 3х зукиперов на 2х нодах запустил кафки но не получается сделать с одним и тем же брокер-id как на рисунке (в примере на 2х нодар есть брокер 1)
          Или номера брокеров на схеме символические?

          ЗЫ группид у них делаю одинаковую

          1. А в server.properties кафки zookeeper.connect прописали все 3 зукипера
            как-то так должно выглядеть
            zookeeper.connect = zoohost3:2181,zoohost2:2181,zoohost1:2181

            А на картинке в примере на 2х нодар это просто первый второй брокер на нодах, а не broker.id
            broker.id должен быть уникальным для каждого брокера.

Добавить комментарий