Apache Kafka установка на Ubuntu - Пошаговая инструкция 2024 | AdminWiki

Apache Kafka установка: Полное руководство для Ubuntu и Linux

18 декабря 2025 8 мин. чтения #apache kafka #devops #kafka установка #ubuntu #брокер сообщений #распределенные системы

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

Важно: Эта инструкция подходит для Ubuntu 20.04/22.04 и других Debian-based дистрибутивов. Для production-среды рекомендуется использовать минимум 3 брокера для отказоустойчивости.

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

Перед началом установки Apache Kafka убедись, что у тебя есть:

  • Ubuntu 20.04 LTS или новее (или другой Linux-дистрибутив)
  • Минимум 4 ГБ оперативной памяти
  • 20 ГБ свободного места на диске
  • Права суперпользователя (sudo)
  • Установленный Java 11 или 17 (Kafka требует JVM)

Шаг 1: Установка Java

Apache Kafka написан на Java, поэтому сначала установим OpenJDK:

bash
# Обновляем пакеты
sudo apt update
sudo apt upgrade -y

# Устанавливаем OpenJDK 17 (рекомендуемая версия для Kafka 3.x)
sudo apt install -y openjdk-17-jdk

# Проверяем установку
java -version
# Должна быть версия 17 или выше

Шаг 2: Создание пользователя для Kafka

Для безопасности создадим отдельного пользователя для работы Kafka:

bash
# Создаем пользователя kafka
sudo useradd -r -m -U -s /bin/bash kafka

# Добавляем пользователя в групу sudo (опционально, для удобства)
sudo usermod -aG sudo kafka

# Переключаемся на пользователя kafka
sudo su - kafka

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

Скачиваем последнюю стабильную версию Kafka с официального сайта:

bash
# Переходим в домашнюю директорию пользователя kafka
cd ~

# Скачиваем Kafka (проверь актуальную версию на kafka.apache.org)
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz

# Распаковываем архив
tar -xzf kafka_2.13-3.6.0.tgz

# Переименовываем директорию для удобства
mv kafka_2.13-3.6.0 kafka

# Проверяем содержимое
ls -la kafka/
Внимание: Версия Scala в имени файла (2.13) должна соответствовать версии, с которой была собрана Kafka. Для production всегда используй стабильные релизы.

Шаг 4: Настройка Apache Kafka

Теперь настроим основные параметры брокера. Создадим свой конфигурационный файл:

bash
# Копируем стандартный конфиг
cd ~/kafka
cp config/server.properties config/server-custom.properties

Отредактируем конфигурационный файл:

config
# Открываем файл для редактирования
nano config/server-custom.properties

Внеси следующие изменения (или создай файл с таким содержимым):

config/server-custom.properties
# Базовые настройки
broker.id=1
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://localhost:9092

# Директории для логов
log.dirs=/home/kafka/kafka-logs

# Настройки топиков
num.partitions=3
default.replication.factor=1

# Настройки логов
log.retention.hours=168
log.segment.bytes=1073741824

# Настройки Zookeeper (если используешь внешний)
zookeeper.connect=localhost:2181

# Безопасность и производительность
auto.create.topics.enable=false
delete.topic.enable=true

# Настройки для production (раскомментируй при необходимости)
# listeners=PLAINTEXT://0.0.0.0:9092
# advertised.listeners=PLAINTEXT://ВАШ_IP:9092

Шаг 5: Настройка Zookeeper

Начиная с версии Kafka 2.8+, можно использовать KRaft (Kafka Raft) вместо Zookeeper, но для совместимости рассмотрим классический вариант:

bash
# Копируем конфиг Zookeeper
cp config/zookeeper.properties config/zookeeper-custom.properties
config/zookeeper-custom.properties
# Директория для данных Zookeeper
dataDir=/home/kafka/zookeeper-data

# Порт клиентских подключений
clientPort=2181

# Максимальное количество клиентских подключений
maxClientCnxns=60

# Настройки таймаутов
tickTime=2000
initLimit=10
syncLimit=5

Шаг 6: Запуск Zookeeper и Kafka

Запускаем сервисы в правильном порядке. Сначала Zookeeper, затем Kafka:

bash
# Запускаем Zookeeper в фоновом режиме
cd ~/kafka
bin/zookeeper-server-start.sh -daemon config/zookeeper-custom.properties

# Ждем 10 секунд для инициализации
sleep 10

# Запускаем Kafka брокер
bin/kafka-server-start.sh -daemon config/server-custom.properties

# Проверяем, что процессы запущены
jps
# Должны увидеть: QuorumPeerMain и Kafka

Шаг 7: Тестирование установки Kafka

Создадим тестовый топик и проверим работу отправки/получения сообщений:

bash
# Создаем топик test-topic
bin/kafka-topics.sh --create \
  --topic test-topic \
  --bootstrap-server localhost:9092 \
  --partitions 3 \
  --replication-factor 1

# Проверяем список топиков
bin/kafka-topics.sh --list --bootstrap-server localhost:9092

# Запускаем producer (в отдельном терминале)
bin/kafka-console-producer.sh \
  --topic test-topic \
  --bootstrap-server localhost:9092

# Запускаем consumer (в другом терминале)
bin/kafka-console-consumer.sh \
  --topic test-topic \
  --from-beginning \
  --bootstrap-server localhost:9092

Шаг 8: Настройка systemd сервисов (опционально)

Для production-среды создадим systemd сервисы для автоматического запуска:

bash
# Выходим из-под пользователя kafka
exit

# Создаем сервис для Zookeeper
sudo nano /etc/systemd/system/zookeeper.service
config
[Unit]
Description=Apache Zookeeper
After=network.target

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

[Install]
WantedBy=multi-user.target
bash
# Создаем сервис для Kafka
sudo nano /etc/systemd/system/kafka.service
config
[Unit]
Description=Apache Kafka
After=network.target zookeeper.service

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

[Install]
WantedBy=multi-user.target
bash
# Перезагружаем systemd и запускаем сервисы
sudo systemctl daemon-reload
sudo systemctl start zookeeper
sudo systemctl start kafka

# Включаем автозагрузку
sudo systemctl enable zookeeper
sudo systemctl enable kafka

# Проверяем статус
sudo systemctl status kafka

Сравнение методов установки Kafka

Метод Плюсы Минусы Для кого
Ручная установка (этот гайд) Полный контроль, понимание системы, гибкость Требует времени, ручная настройка Разработчики, DevOps, обучение
Docker Быстро, изолированно, легко воспроизводимо Нет тонкой настройки, overhead Разработка, тестирование
Kubernetes (Helm) Автоматизация, масштабирование, production-ready Сложность, требует инфраструктуры Production, enterprise

Частые проблемы и решения

Ошибка: Java not found

Решение: Установи OpenJDK 11 или 17: sudo apt install openjdk-17-jdk

Ошибка: Address already in use

Решение: Порт 9092 или 2181 занят. Измени порт в конфигурации или освободи его: sudo netstat -tlnp | grep :9092

Kafka не подключается к Zookeeper

Решение: Проверь, что Zookeeper запущен: jps | grep QuorumPeerMain и порт 2181 открыт.

Дальнейшие шаги после установки

  • Настройка мониторинга: Установи JMX exporter для метрик
  • Безопасность: Настрой SSL/TLS и SASL аутентификацию
  • Резервное копирование: Настрой mirror-maker для репликации
  • Оптимизация: Настрой retention policies и compaction
  • Кластеризация: Добавь еще брокеров для отказоустойчивости
Профессиональный совет: Для production-среды всегда используй минимум 3 брокера Kafka и 3 узла Zookeeper. Настрой мониторинг (Prometheus + Grafana) и алертинг с первых дней.

FAQ: Ответы на частые вопросы

Можно ли установить Kafka без Zookeeper?

Да, начиная с версии Kafka 2.8.0 можно использовать режим KRaft (Kafka Raft), который устраняет зависимость от Zookeeper. Это рекомендуемый подход для новых установок.

Какие порты нужно открыть для Kafka?

По умолчанию: 9092 (Kafka брокер), 2181 (Zookeeper). Для JMX мониторинга: 9999. В production также могут понадобиться порты для межброкерного общения (обычно 9093).

Как обновить версию Kafka?

Обновление выполняется последовательно: 1) Останови все брокеры 2) Обнови бинарные файлы 3) Проверь совместимость конфигов 4) Запусти брокеры по одному. Всегда тестируй обновление на staging-среде.

Какая конфигурация железа нужна для production?

Минимум: 8+ ядер CPU, 32+ ГБ RAM, SSD диски (лучше NVMe), раздельные диски для логов и ОС. Сеть: 10+ GbE. Все зависит от нагрузки.

Ключевые моменты успешной установки

  • ✓ Всегда используй отдельного пользователя для Kafka
  • ✓ Настрой правильные лимиты открытых файлов (ulimit -n 100000)
  • ✓ Мониторь использование диска — Kafka чувствительна к свободному месту
  • ✓ Документируй все изменения конфигурации
  • ✓ Создавай бэкапы конфигов и данных Zookeeper

Теперь у тебя работает Apache Kafka на Ubuntu! Ты можешь начинать разработку приложений, которые будут использовать Kafka для обработки потоков данных. Помни: эта установка подходит для разработки и тестирования. Для production-среды потребуется дополнительная настройка безопасности, мониторинга и отказоустойчивости.

Следующие шаги: изучи Kafka Streams для обработки данных, Kafka Connect для интеграции с другими системами и настрой мониторинг через JMX.

Поделиться:
Сохранить гайд? В закладки браузера