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

Что такое Apache Kafka
Apache Kafka — это распределённая платформа потоковой обработки данных, разработанная Apache Software Foundation и написанная на Java и Scala. Первоначально Kafka разрабатывалась в LinkedIn и была открыта в 2011 году. Kafka используется для построения каналов передачи событий и потоковой обработки в реальном времени с высокой пропускной способностью и низкой задержкой.
Краткое определение: Kafka — брокер сообщений для потоковой передачи и долговременного хранения последовательностей событий.
Требования
- Ubuntu 18.04 (можно адаптировать для 20.04/22.04 — см. раздел «Совместимость и миграция»)
- Привилегии root (sudo)
- Доступ в интернет для скачивания пакетов и бинарных архивов
Что мы сделаем
- Установим OpenJDK 8
- Установим Apache Zookeeper (демон ориентирован на координацию)
- Скачиваем и настраиваем Apache Kafka
- Настроим systemd-сервисы для Kafka и Zookeeper
- Проведём тестирование работы (топики, продюсер, консьюмер)
Важные примечания
Важно: В этом руководстве 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.

Шаг 2 — Установка Apache Zookeeper
Zookeeper отвечает за выбор контроллера, учёт членов кластера и хранение метаданных топиков. Установим пакет zookeeperd из репозитория Ubuntu:
sudo apt install zookeeperd -yДождитесь завершения установки. Сервис zookeeperd будет установлен и запущен как системный сервис. В этом руководстве позже мы настроим запуск Zookeeper через скрипт из папки Kafka для согласованной конфигурации.

Шаг 3 — Скачивание и настройка Apache Kafka
В этом шаге мы установим Kafka из бинарного архива. Если вы предпочитаете пакетный менеджер или контейнеры (Docker), см. раздел «Альтернативные подходы».
- Создаём системного пользователя для запуска Kafka:
useradd -d /opt/kafka -s /bin/bash kafka
passwd kafka- Переходим в /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- Создаём папку и распаковываем:
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- Выполняем вход под пользователем kafka и редактируем конфигурацию broker’а:
su - kafka
vim config/server.propertiesДобавьте в конец файла:
delete.topic.enable = trueЭто разрешит удаление топиков (по умолчанию может быть отключено в некоторых сборках).

Шаг 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
Шаг 5 — Тестирование Apache Kafka
- Войдите под пользователем kafka и перейдите в bin/:
su - kafka
cd bin/- Создайте топик HakaseTesting:
./kafka-topics.sh --create --zookeeper localhost:2181 \
--replication-factor 1 --partitions 1 \
--topic HakaseTesting- Запустите продюсера в одном терминале:
./kafka-console-producer.sh --broker-list localhost:9092 \
--topic HakaseTesting- В другом терминале запустите консьюмера:
./kafka-console-consumer.sh --bootstrap-server localhost:9092 \
--topic HakaseTesting --from-beginningПри вводе строк в окно продюсера они должны появляться в окне консьюмера.

Критерии приёмки
- Службы 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)
- Подготовить серверы и проверить сетевые настройки.
- Установить Java и системные зависимости.
- Создать пользователя kafka и подготовить каталог /opt/kafka.
- Распаковать Kafka и применить базовые настройки server.properties.
- Создать systemd unit-файлы и включить сервисы.
- Провести тесты: создание топика, продюсер, консьюмер.
- Включить мониторинг и безопасность (TLS/SASL, ACL).
- Подготовить план отката и резервное копирование конфигураций.
Откат/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, и масштабируйте кластер с учётом репликации.
Ссылки
- Официальная документация Apache Kafka: https://kafka.apache.org/documentation/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента