Установка кластера Apache Kafka на Debian 12

watch 2m, 10s
views 2

08:53, 30.07.2026

Содержание статьи
arrow

  • Краткое руководство: настройка Apache Kafka в Debian 12
  • Основные принципы и элементы архитектуры Kafka
  • Установка Apache Kafka в Debian 12
  • Установка Java 8+ в Debian 12
  • Загрузите последнюю версию Kafka
  • Распакуйте бинарный архив Kafka
  • Запуск Kafka в режиме Kafka Raft (KRaft)
  • Настройте KRaft для кластера Kafka
  • Изменение каталога журналов
  • Сгенерируйте идентификатор кластера Kafka
  • Преобразование каталога журналов Kafka в формат KRaft
  • Настройка размера кучи Kafka
  • Запуск брокера Kafka
  • Запуск брокера Kafka в фоновом режиме
  • Запустите брокер Kafka в качестве службы systemd
  • Создание тем, отправка и получение сообщений в Kafka
  • Создание темы вручную
  • Просмотр доступных тем Kafka
  • Запись (создание) и чтение (потребление) сообщений в темах Kafka
  • Удаление тем Kafka
  • Настройка кластера Kafka из трёх узлов
  • Управление кластером Kafka через пользовательский интерфейс

Краткое руководство: настройка Apache Kafka в Debian 12

Apache Kafka — это мощная распределённая платформа потоковой передачи событий, разработанная для распределения сообщений с высокой пропускной способностью и низкой задержкой.

Настройка Kafka в Debian 12 требует тщательной конфигурации для обеспечения надёжной и масштабируемой потоковой передачи данных.

В этом руководстве представлено пошаговое описание установки и настройки кластера Apache Kafka в Debian 12 с выделением важнейших этапов и параметров конфигурации.

Основные принципы и элементы архитектуры Kafka

Архитектура Kafka основана на нескольких ключевых компонентах:

  • Брокеры: Kafka работает как кластер, состоящий из одного или нескольких серверов, называемых брокерами, которые управляют хранением и распределением сообщений.
  • Темы: именованные категории, в которые отправляются записи и из которых они считываются.
  • Производители: приложения, отправляющие записи в темы Kafka.
  • Потребители: приложения, считывающие записи из тем.
  • Разделы: темы Kafka, разделённые на части для более эффективного распределения между несколькими брокерами.
  • Репликация: каждый раздел реплицируется, причём один из них отвечает за запросы на чтение и запись, а остальные — за репликацию данных.
  • Потоки: Библиотека потоковой обработки для приложений и микросервисов, работающих в режиме реального времени.
  • ZooKeeper (опционально): Ранее использовался для управления метаданными, теперь заменён режимом Kafka Raft (KRaft) для более эффективного самоуправления.

Установка Apache Kafka в Debian 12

Установка Java 8+ в Debian 12

Для работы Apache Kafka требуется Java 8 или более поздней версии. Выполните следующие шаги для установки Java:

  1. Обновите индекс пакетов:
    sudo apt update
  2. Установите пакет OpenJDK:
    sudo apt install -y openjdk-11-jdk
  3. Проверьте установку Java:
    java -version

Загрузите последнюю версию Kafka

  1. Перейдите по ссылке страницу загрузки Apache Kafka, чтобы скачать последнюю версию.
  2. Загрузите Kafka с помощью wget или curl:
    wget https://downloads.apache.org/kafka/3.x.x/kafka_2.13-3.x.x.tgz

Распакуйте бинарный архив Kafka

Распакуйте загруженный архив:

tar -xzf kafka_2.13-3.x.x.tgz

Переместите извлечённую папку в /opt:

sudo mv kafka_2.13-3.x.x /opt/kafka

Запуск Kafka в режиме Kafka Raft (KRaft)

Режим KRaft устраняет необходимость в использовании ZooKeeper, упрощая управление кластером Kafka. Файлы конфигурации KRaft находятся в /opt/kafka/config/kraft/.

Настройте KRaft для кластера Kafka

  1. Создайте новый файл конфигурации или отредактируйте существующий файл server.properties:
    sudo nano /opt/kafka/config/kraft/server.properties
  2. Добавьте или измените следующие свойства:
    process.roles=broker,controller node.id=1 controller.quorum.voters=1@<broker-ip>:9093 listeners=PLAINTEXT://<broker-ip>:9092,CONTROLLER://<broker-ip>:9093 log.dirs=/var/lib/kafka/data

Изменение каталога журналов

Убедитесь, что журналы Kafka хранятся в каталоге с достаточным объёмом дискового пространства; по умолчанию журналы хранятся в /tmp/kraft-combined-logs” каталоге.

Чтобы обеспечить сохранение журналов в каталоге с достаточным объёмом свободного места, при необходимости обновите log.dirs в файле server.properties:

log.dirs=/new/path/to/kafka-logs

Сгенерируйте идентификатор кластера Kafka

Идентификатор кластера — это то, что идентифицирует кластер в режиме KRaft.

  1. Сгенерируйте идентификатор кластера:
    /opt/kafka/bin/kafka-storage.sh random-uuid
  2. Сохраните сгенерированный идентификатор и отформатируйте каталог журналов:
    /opt/kafka/bin/kafka-storage.sh format -t <cluster-id> -c /opt/kafka/config/kraft/server.properties

Преобразование каталога журналов Kafka в формат KRaft

Используя идентификатор кластера, сгенерированный на предыдущем шаге, мы можем отформатировать каталоги журналов. Это делается для каждого брокера Kafka, чтобы у него был каталог для сохранения своего журнала (если в кластере несколько узлов).

  1. Используя идентификатор кластера и следующую команду, отформатируйте каталог журналов:
    /opt/kafka/bin/kafka-storage.sh format -t <uuid> -c /opt/kafka/config/kraft/server.properties
  2. Замените UUID на URaeRekUQAyy8wLMNX2Q-w, чтобы команда выглядела следующим образом:
    /opt/kafka/bin/kafka-storage.sh format -t URaeRekUQAyy8wLMNX2Q-w \ -c /opt/kafka/config/kraft/server.properties

В качестве альтернативы можно использовать следующую команду:

/opt/kafka/bin/kafka-storage.sh format \ -t /opt/kafka/bin/kafka-storage.sh random-uuid \ -c /opt/kafka/config/kraft/server.properties

Настройка размера кучи Kafka

Для обеспечения стабильной производительности Kafka можно соответствующим образом настроить размер кучи; размер кучи — это, по сути, объем памяти, принадлежащий виртуальной машине Java (JVM), на которой работает Kafka. Необходимо убедиться, что размер кучи достаточен для обработки объема трафика, который предстоит обработать вашему серверу.

Одним из параметров, использующих память и влияющих на то, как долго Kafka хранит данные, является log.retention.hours, который по умолчанию установлен на 7 дней. Также можно использовать другие параметры, такие как log.retention.minutes, log.retention.ms, или log.retention.bytes, также могут использоваться; эти параметры можно изменить в файле /opt/kafka/config/kraft/server.properties.

Например, чтобы сохранять данные в течение 8 часов, используйте следующую строку:

log.retention.hours=8

Затем сохраните и закройте файл.

Запуск брокера Kafka

Запуск брокера Kafka в фоновом режиме

Запустите брокер Kafka вручную:

/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties

Запустите брокер Kafka в качестве службы systemd

  • Создайте файл службы kafka.service:

sudo nano /etc/systemd/system/kafka.service

  • Добавьте следующую конфигурацию:

[Unit] Description=Служба Apache Kafka After=network.target

[Service] Type=simple ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties Restart=on-failure User=kafka

[Install] WantedBy=multi-user.target

  • Перезагрузите systemd и запустите Kafka:

sudo systemctl daemon-reload sudo systemctl start kafka sudo systemctl enable kafka

Создание тем, отправка и получение сообщений в Kafka

При правильной настройке ваши производители могут публиковать сообщения в темы Kafka, а потребители — подписываться на несколько тем и считывать записи из них.

Создание темы вручную

Чтобы создать тестовую тему на сервере/брокере Kafka, используйте:

/opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server <broker-ip>:9092 --partitions 1 --replication-factor 1

Просмотр доступных тем Kafka

Чтобы просмотреть доступные темы Kafka, используйте:

/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server <broker-ip>:9092

Запись (создание) и чтение (потребление) сообщений в темах Kafka

  • Чтобы создать сообщение, используйте следующую команду:

/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 \ --topic kafka-topic-test

После запуска вы увидите следующий запрос: >

  • Введите сообщение и нажмите ENTER:

>Hello Kafka, this is my message

  • Чтобы прочитать сообщение, используйте:

/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafka-topic-test

Удаление тем Kafka

Чтобы удалить одну тему, используйте:

/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic <имя-темы>

Чтобы удалить все темы, используйте:

for i in /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092;do /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic $i; done

Настройка кластера Kafka из трёх узлов

Настройте несколько брокеров, создав отдельные файлы server.properties для каждого узла с уникальными значениями node.id, listeners и log. Настройте параметр controller.quorum.voters так, чтобы он включал все узлы.

Управление кластером Kafka через пользовательский интерфейс

Такие инструменты, как Kafka Manager, Conduktor и Lenses.io, предоставляют графические интерфейсы для мониторинга и управления кластерами Kafka. По нашему опыту, эти инструменты упрощают администрирование.

Настройка Apache Kafka в Debian 12 с использованием KRaft обеспечивает надёжную децентрализованную потоковую передачу сообщений и масштабируемые конвейеры данных, что необходимо для современных приложений, ориентированных на данные.

Поделиться

Была ли эта статья полезной для вас?

Популярные предложения VPS

-16.3%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
40 Mbps
DDoS Protected SSD-KVM 2048 Linux

$ 54.62

$

При оплате за год

-20.7%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
10 TB
wKVM-SSD 16384 Metered Windows

$ 113.8

$

При оплате за год

-20.2%

CPU
CPU
1 Xeon Core
RAM
RAM
1 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
300 GB
wKVM-SSD 1024 HK Windows

$ 21.62

$

При оплате за год

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 8192 Linux

$ 29.42

$

При оплате за год

-20.5%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
10 TB
KVM-SSD 16384 Metered Linux

$ 108.11

$

При оплате за год

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-KVM-SSD 4096 Linux

$ 68.85

$

При оплате за год

-8.9%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 16384 Windows

$ 63.73

$

При оплате за год

-4.7%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 1024 Windows

$ 12.02

$

При оплате за год

-10%

CPU
CPU
6 Epyc Cores
RAM
RAM
16 GB
Space
Space
150 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 16384
OS
CentOS
Software
Software
Keitaro

$ 63.2

$

При оплате за год

-29.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
2 TB
KVM-SSD 2048 Metered Linux

$ 19.35

$

При оплате за год

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.