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

Установка Apache Kafka на Ubuntu 18.04 — пошаговое руководство

• 6 min read • DevOps • Обновлено 26 Nov 2025
Установка Apache Kafka на Ubuntu 18.04
Установка Apache Kafka на Ubuntu 18.04

Иллюстрация Apache Kafka

Что такое Apache Kafka

Apache Kafka — это распределённая платформа потоковой обработки данных, разработанная Apache Software Foundation и написанная на Java и Scala. Первоначально Kafka разрабатывалась в LinkedIn и была открыта в 2011 году. Kafka используется для построения каналов передачи событий и потоковой обработки в реальном времени с высокой пропускной способностью и низкой задержкой.

Краткое определение: Kafka — брокер сообщений для потоковой передачи и долговременного хранения последовательностей событий.

Требования

  • Ubuntu 18.04 (можно адаптировать для 20.04/22.04 — см. раздел «Совместимость и миграция»)
  • Привилегии root (sudo)
  • Доступ в интернет для скачивания пакетов и бинарных архивов

Что мы сделаем

  1. Установим OpenJDK 8
  2. Установим Apache Zookeeper (демон ориентирован на координацию)
  3. Скачиваем и настраиваем Apache Kafka
  4. Настроим systemd-сервисы для Kafka и Zookeeper
  5. Проведём тестирование работы (топики, продюсер, консьюмер)

Важные примечания

Важно: В этом руководстве Kafka запускается под не-root пользователем “kafka” и использует дефолтные порты: Zookeeper — 2181, Kafka — 9092. Для продакшна рекомендуется дополнительно настроить безопасность (аутентификацию/авторизацию) и мониторинг.

Шаг 1 — Установка Java OpenJDK 8

Apache Kafka написан на Java и Scala, поэтому Java должна быть установлена на сервере. Обновите репозитории и пакеты перед установкой:

sudo apt update
sudo apt upgrade -y

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

sudo apt install openjdk-8-jdk -y

Проверьте установленную версию Java:

java -version

Ожидаемый вывод покажет OpenJDK 8. Если требуется другая версия (например Java 11), адаптируйте команды и убедитесь в совместимости с выбранной версией Kafka.

Установка Java

Шаг 2 — Установка Apache Zookeeper

Zookeeper отвечает за выбор контроллера, учёт членов кластера и хранение метаданных топиков. Установим пакет zookeeperd из репозитория Ubuntu:

sudo apt install zookeeperd -y

Дождитесь завершения установки. Сервис zookeeperd будет установлен и запущен как системный сервис. В этом руководстве позже мы настроим запуск Zookeeper через скрипт из папки Kafka для согласованной конфигурации.

Установка Zookeeper

Шаг 3 — Скачивание и настройка Apache Kafka

В этом шаге мы установим Kafka из бинарного архива. Если вы предпочитаете пакетный менеджер или контейнеры (Docker), см. раздел «Альтернативные подходы».

  1. Создаём системного пользователя для запуска Kafka:
useradd -d /opt/kafka -s /bin/bash kafka
passwd kafka
  1. Переходим в /opt и скачиваем бинарный архив (пример для Kafka 2.0.0 с Scala 2.11):
cd /opt
wget http://www-eu.apache.org/dist/kafka/2.0.0/kafka_2.11-2.0.0.tgz
  1. Создаём папку и распаковываем:
mkdir -p /opt/kafka

tar -xf kafka_2.11-2.0.0.tgz -C /opt/kafka --strip-components=1
sudo chown -R kafka:kafka /opt/kafka
  1. Выполняем вход под пользователем kafka и редактируем конфигурацию broker’а:
su - kafka
vim config/server.properties

Добавьте в конец файла:

delete.topic.enable = true

Это разрешит удаление топиков (по умолчанию может быть отключено в некоторых сборках).

Запуск Kafka

Шаг 4 — Настройка systemd-сервисов для Kafka и Zookeeper

Чтобы управлять сервисами через systemd, создадим единые unit-файлы.

Перейдите в каталог системных unit-файлов и создайте zookeeper.service:

cd /lib/systemd/system/
vim 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

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

Создайте kafka.service:

vim 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'
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Перезагрузите конфигурацию systemd и включите сервисы:

systemctl daemon-reload

systemctl start zookeeper
systemctl enable zookeeper

systemctl start kafka
systemctl enable kafka

Проверьте, что слушаются стандартные порты (2181 для Zookeeper, 9092 для Kafka):

netstat -plntu

Zookeeper и Kafka активны

Шаг 5 — Тестирование Apache Kafka

  1. Войдите под пользователем kafka и перейдите в bin/:
su - kafka
cd bin/
  1. Создайте топик HakaseTesting:
./kafka-topics.sh --create --zookeeper localhost:2181 \
--replication-factor 1 --partitions 1 \
--topic HakaseTesting
  1. Запустите продюсера в одном терминале:
./kafka-console-producer.sh --broker-list localhost:9092 \
--topic HakaseTesting
  1. В другом терминале запустите консьюмера:
./kafka-console-consumer.sh --bootstrap-server localhost:9092 \
--topic HakaseTesting --from-beginning

При вводе строк в окно продюсера они должны появляться в окне консьюмера.

Тестирование Kafka

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

  • Службы zookeeper и kafka запущены и включены на старте.
  • Порты 2181 (Zookeeper) и 9092 (Kafka) слушаются.
  • Созданный топик принимает сообщения от продюсера и их получает консьюмер.
  • Пользователь kafka владеет каталогом /opt/kafka и не имеет прав root для выполнения сервисов.

Контрольные сценарии и тест-кейсы

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

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

  • Docker: запустить Kafka и Zookeeper в контейнерах (официальные образы Confluent, Bitnami и др.). Удобно для тестов и CI.
  • Пакетные репозитории: некоторые дистрибутивы и снап-пакеты предоставляют Kafka как пакет.
  • Управляемые сервисы: Confluent Cloud, Amazon MSK, Aiven и другие для продакшн-кластеров без управления инфраструктурой.

Безопасность и рекомендации

  • Включите TLS/SSL для шифрования трафика между брокерами и клиентами.
  • Настройте SASL (PLAIN, SCRAM или Kerberos) и ACL для авторизации клиентов.
  • Ограничьте доступ по брандмауэру к портам 2181 и 9092, открывая их только для доверенных сетей.
  • Настройте мониторинг (JMX, Prometheus) и алертинг на задержки и ошибки репликации.

Совместимость и миграция

  • При обновлении Kafka проверяйте совместимость версии Scala и конфигураций. Миграция между мажорными версиями Kafka требует проверки изменений формата логов и конфигураций.
  • Ubuntu 20.04/22.04: команды аналогичны, но пакеты Java могут отличаться (openjdk-11-jdk и др.).

Рольовые чеклисты

  • Оператор/инженер по платформе:

    • Установить и проверить сервисы systemd.
    • Настроить бэкапы конфигураций и логов.
    • Настроить мониторинг и оповещения.
  • Разработчик приложений:

    • Проверить клиентскую библиотеку Kafka на совместимость с брокером.
    • Тестировать обработку повторных сообщений и idempotency.
  • Системный администратор:

    • Обеспечить безопасность и обновление ОС.
    • Настроить брандмауэр и резервное копирование дисков.

Пошаговый план внедрения (мини-SOP)

  1. Подготовить серверы и проверить сетевые настройки.
  2. Установить Java и системные зависимости.
  3. Создать пользователя kafka и подготовить каталог /opt/kafka.
  4. Распаковать Kafka и применить базовые настройки server.properties.
  5. Создать systemd unit-файлы и включить сервисы.
  6. Провести тесты: создание топика, продюсер, консьюмер.
  7. Включить мониторинг и безопасность (TLS/SASL, ACL).
  8. Подготовить план отката и резервное копирование конфигураций.

Откат/Rollback

  • Если после обновления или изменения конфигурации кластер нестабилен:
    • Остановить Kafka и Zookeeper.
    • Восстановить предыдущие файлы конфигурации из резервной копии.
    • Перезапустить сервисы и проверить целостность логов.

Факты и ориентиры

  • Дефолтные порты: Zookeeper 2181, Kafka 9092.
  • Минимально для продакшна: 3 брокера для устойчивой репликации.
  • Рекомендуемый подход для доступности: replication.factor >= 3 и min.insync.replicas = 2.

Частые случаи, когда установка не работает

  • Java не установлена или установлена несовместимая версия.
  • Права доступа к /opt/kafka заданы неправильно (не принадлежит kafka).
  • Порт 9092 или 2181 занят другой службой.
  • Недостаточно свободного дискового пространства для хранения логов Kafka.

Резюме

Вы успешно установили и запустили Apache Kafka и Zookeeper на Ubuntu 18.04, проверили работу через консольные инструменты и получили базовый набор инструкций для перехода в продакшн: безопасность, мониторинг и резервирование. Для корпоративной эксплуатации дополнительно настройте TLS, SASL, ACL, и масштабируйте кластер с учётом репликации.

Ссылки

Поделиться: 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 быстро