Гид по технологиям

Установка и базовое управление Apache Kafka на Ubuntu 22.04

• 7 min read • DevOps • Обновлено 28 Nov 2025
Apache Kafka на Ubuntu 22.04 — установка и базовые операции
Apache Kafka на Ubuntu 22.04 — установка и базовые операции

Логотип Apache Kafka и краткое описание

Apache Kafka — распределённая платформа потоковой передачи данных для обработки событий в реальном времени. Проект поддерживается Apache Software Foundation и реализован на Java и Scala. Kafka сочетает в себе возможности очередей сообщений, долговременного хранения и потоковой обработки, что делает её популярным выбором для интеграции данных, аналитики и построения real-time pipeline’ов в корпоративных системах.

Цель этой статьи — показать пошаговую ручную установку Kafka на Ubuntu 22.04 из бинарного архива, показав базовую конфигурацию, настройку systemd-сервисов для Zookeeper и Kafka, а также базовые команды для работы с топиками, продьюсерами, консюмерами и встроенным Kafka Connect.

Кому пригодится это руководство

  • Системным администраторам и DevOps-инженерам, которым нужно быстро развернуть тестовый или стартовый Kafka-инстанс.
  • Разработчикам, которые хотят локально тестировать продьюсеры/консюмеры и коннекторы.
  • Тем, кто изучает потоковую передачу данных и хочет понять базовые команды и сервисную интеграцию.

Важно: в серьёзных продакшен-окружениях рекомендуют кластерную конфигурацию, репликацию, резервное копирование, мониторинг и шифрование данных.

Предварительные требования

  • Сервер с Ubuntu 22.04, минимум 2–4 ГБ оперативной памяти (для теста 2 ГБ будет достаточно; для реальной загрузки — 8+ ГБ).
  • Непривилегированный пользователь с sudo-права (Root не обязателен).
  • Доступ к Интернету для скачивания пакета Kafka.

Установка Java OpenJDK

Kafka написана на Java/Scala, поэтому нужен JRE/JDK. На Ubuntu 22.04 пакет default-jdk обычно обеспечивает OpenJDK 11, который совместим с Kafka 3.2.

Обновите индексы пакетов:

sudo apt update

Установите OpenJDK:

sudo apt install default-jdk

Проверьте версию Java:

java -version

Ожидаемый вывод должен содержать строку вроде “openjdk version \”11.*\””.

Загрузка и установка Apache Kafka

В этом руководстве используется Kafka 3.2.0 как пример. Вы можете выбрать другую совместимую версию, но следите за требованием Java.

  1. Создайте системного пользователя kafka без интерактивной оболочки и с домашней директорией /opt/kafka:
sudo useradd -r -d /opt/kafka -s /usr/sbin/nologin kafka
  1. Скачайте бинарный архив Kafka (пример для 3.2.0):
sudo curl -fsSLo kafka.tgz https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz
  1. Распакуйте и переместите в /opt/kafka:
tar -xzf kafka.tgz
sudo mv kafka_2.13-3.2.0 /opt/kafka
  1. Назначьте владельца каталога kafka:
sudo chown -R kafka:kafka /opt/kafka
  1. Создайте директорию для логов и отредактируйте конфигурацию сервера:
sudo -u kafka mkdir -p /opt/kafka/logs
sudo -u kafka nano /opt/kafka/config/server.properties

Измените или добавьте строку для хранения логов Kafka:

# logs configuration for Apache Kafka
log.dirs=/opt/kafka/logs

Сохраните файл и закройте редактор.

Настройка Kafka и Zookeeper как systemd-сервисов

Для управления Kafka и Zookeeper удобно использовать systemd: это даёт единый интерфейс для автозапуска, рестартов и логирования.

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

  1. Создайте systemd-сервис для Zookeeper:
sudo nano /etc/systemd/system/zookeeper.service

Вставьте конфигурацию:

[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Сохраните и закройте.

  1. Создайте systemd-сервис для Kafka:
sudo nano /etc/systemd/system/kafka.service

Вставьте конфигурацию:

[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /opt/kafka/logs/start-kafka.log 2>&1'
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target
  1. Примените новые сервисы systemd:
sudo systemctl daemon-reload

Схема настройки Zookeeper и Kafka как сервисов systemd

  1. Включите автозапуск и стартуйте сервисы:
sudo systemctl enable zookeeper
sudo systemctl start zookeeper

sudo systemctl enable kafka
sudo systemctl start kafka
  1. Проверьте статус сервисов:
sudo systemctl status zookeeper
sudo systemctl status kafka

Ожидаемый вывод показывает, что сервисы включены и находятся в состоянии running.

Статус сервиса Zookeeper в systemd

Статус сервиса Kafka в systemd

Важно: если сервис быстро завершается, смотрите логи в /opt/kafka/logs/start-kafka.log и в журнале systemd через journalctl -u kafka.

Базовые операции Kafka из командной строки

Инструменты командной строки находятся в /opt/kafka/bin. Ниже — наиболее часто используемые кейсы.

Создание топика:

sudo -u kafka /opt/kafka/bin/kafka-topics.sh \
--create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic TestTopic

Список доступных топиков:

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

Запись сообщений в топик (Console Producer):

sudo -u kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TestTopic

Чтение сообщений с начала топика (Console Consumer):

sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TestTopic --from-beginning

Откройте два терминала: в одном запускайте producer и отправляйте строки; в другом consumer вы увидите сообщения в реальном времени.

Чтобы удалить топик:

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic TestTopic

Трансляция сообщений в Kafka через консольные утилиты

Kafka Connect: импорт и экспорт потоков из файла

Kafka Connect упрощает интеграцию с источниками и приёмниками данных (files, databases, object stores). В дистрибутиве уже есть простой file connector.

  1. Отредактируйте конфигурацию connect-standalone.properties:
sudo -u kafka nano /opt/kafka/config/connect-standalone.properties

Добавьте путь к плагину (пример для версии в дистрибутиве):

plugin.path=libs/connect-file-3.2.0.jar
  1. Создайте тестовый файл данных:
sudo -u kafka echo -e "Test message from file\nTest using Kafka connect from file" > /opt/kafka/test.txt
  1. Запустите коннектор в standalone режиме (из директории /opt/kafka):
cd /opt/kafka
sudo -u kafka /opt/kafka/bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties
  1. В другом терминале запустите консольный consumer для топика connect-test:
sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning

При дописываемом содержимом в /opt/kafka/test.txt новые строки автоматически будут появляться в consumer:

sudo -u kafka echo "Another test message from file test.txt" >> test.txt

Пример работы Kafka Connect: поток данных из файла в топик connect-test

Полезные советы и отладка

  • Логи: основной лог запуска Kafka — /opt/kafka/logs/start-kafka.log. Также systemd хранит логи в journalctl -u kafka.
  • Ошибки при запуске часто связаны с правами доступа к /opt/kafka или с уже занятой 9092-портом.
  • Если топик не создаётся, проверьте конфигурацию zookeeper.connect в server.properties.
  • Для быстрой очистки после тестов удаляйте созданные топики и останавливайте сервисы systemctl stop kafka zookeeper.

Критерии приёмки

  • Сервисы Zookeeper и Kafka активны и находятся в состоянии running.
  • Можно создать топик и прочитать/написать сообщения с помощью консольных утилит.
  • Kafka Connect корректно читает строки из test.txt и публикует их в топик connect-test.

Рекомендации по безопасности

Важно: приведённая конфигурация подходит для локального тестирования. В продакшене обязательно:

  • Включить шифрование транспорта (TLS) для брокеров и клиентов.
  • Настроить аутентификацию (SASL) и авторизацию (ACL) для ограничения доступа.
  • Разделить права пользователей и запускать брокеры под минимальными привилегиями.
  • Защищать доступ к ZooKeeper и ограничивать сетевой доступ между узлами.

Производительность и масштабирование — краткие рекомендации

  • Партиционирование: увеличение числа партиций повышает параллелизм потребления, но усложняет репликацию.
  • Репликация: устанавливайте replication-factor >= 3 для отказоустойчивости в продакшене.
  • Параметры диска: используйте быстрые SSD и настройте log.dirs и log.segment.bytes в server.properties.
  • Ретенция: log.retention.hours и log.retention.bytes помогают управлять объёмом на диске.

Мониторинг и метрики

  • Kafka предоставляет JMX-метрики; их удобно экспортировать в Prometheus и визуализировать в Grafana.
  • Отслеживайте следующие показатели: throughput (in/out), latency, under-replicated-partitions, consumer lag.

Резервное копирование и миграция

  • Резервные копии топиков обычно строятся на уровне источников/сидов данных или через MirrorMaker для репликации между кластерами.
  • При обновлении версии Kafka обязательно тестируйте на staging-кластере и читайте релиз-ноты о несовместимых изменениях.

Роли и чек-листы

Администратор:

  • Установить Java и Kafka, создать пользователя kafka.
  • Настроить systemd-сервисы и автозапуск.
  • Настроить мониторинг и бэкапы.

Разработчик:

  • Создать топики, настроить продьюсер/консюмер.
  • Тестировать обработку сообщений и задержку.

SRE:

  • Настроить репликацию, мониторинг, аварийные сценарии и playbook для восстановления.

Команды-справочник (cheat sheet)

  • start services:
sudo systemctl start zookeeper
sudo systemctl start kafka
  • проверить статус:
sudo systemctl status kafka
  • создать топик:
sudo -u kafka /opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic MyTopic
  • консольный продьюсер:
sudo -u kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic MyTopic
  • консольный консюмер:
sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic MyTopic --from-beginning

Решение распространённых проблем

  • Проблема: broker не стартует, пишет BindException: Address already in use. Решение: проверьте, занят ли порт 9092 (ss -ltnp | grep 9092). Остановите процесс или измените listeners в server.properties.

  • Проблема: топик не создаётся автоматически. Решение: проверьте конфигурацию auto.create.topics.enable и настройки zookeeper.connect.

  • Проблема: consumer не получает сообщения, lag растёт. Решение: проверьте, что consumer использует правильный group.id и что партиции доступны.

Альтернативные подходы к установке

  • Пакеты apt / PPA: есть сторонние пакеты, но часто они отстают по версии.
  • Docker-контейнеры: удобны для изоляции и локального тестирования (официальные образы Confluent тоже доступны).
  • Облачные managed-сервисы: Amazon MSK, Confluent Cloud, Aiven — для продакшена сокращают поддержку инфраструктуры.

Решение “установить или выбрать managed?” — упрощённое дерево принятия решения

flowchart TD
  A[Нужна Kafka?] --> B{Требования к отказоустойчивости}
  B -->|Низкие| C[Локальная установка вручную]
  B -->|Высокие| D{Есть команда SRE?}
  D -->|Да| E[Кластерная установка + Zookeeper/без ZK]
  D -->|Нет| F[Managed Kafka в облаке]

Краткое руководство по обновлению версий

  • Протестируйте новую версию на staging.
  • Проверьте совместимость клиента и брокера по релиз-нотами.
  • Сделайте резервную копию критичных данных или настройте зеркалирование.
  • Обновляйте брокеры поочерёдно, проверяя состояние under-replicated-partitions.

Заключение

Вы установили Apache Kafka на Ubuntu 22.04, настроили Zookeeper и Kafka как systemd-сервисы, создали топики, научились читать и писать сообщения через консоль и настроили Kafka Connect для потоковой передачи данных из файла. Это рабочая база для тестовой среды и начального изучения Kafka.

Ключевые следующие шаги для перехода в продакшен: настроить безопасность (TLS/SASL), кластерную репликацию с replication-factor >= 3, мониторинг и автоматические бэкапы.

Важно: всегда тестируйте операции обновления и резервного восстановления в контролируемой среде перед применением в продакшене.

Резюме

  • Kafka — мощный инструмент для потоковых данных; на Ubuntu её можно установить вручную из бинарного архива.
  • Systemd-сервисы упрощают управление процесcами Zookeeper и Kafka.
  • Kafka Connect позволяет быстро интегрировать источники/приёмники данных, включая файлы.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро