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

Установка Apache Kafka и CMAK на CentOS 8

• 5 min read • DevOps • Обновлено 19 Nov 2025
Установка Kafka и CMAK на CentOS 8
Установка Kafka и CMAK на CentOS 8

Логотип Apache Kafka и CMAK на иллюстрации

Введение

Apache Kafka — это свободная платформа потоковой передачи данных для аналитики, интеграции данных и критичных приложений. По сравнению с традиционными брокерами сообщений (например, ActiveMQ или RabbitMQ) Kafka даёт высокую пропускную способность, встроенную партиционирование, репликацию и отказоустойчивость. CMAK (Cluster Manager, ранее Kafka Manager) — инструмент для управления и просмотра состояния кластеров Kafka (топики, потребители, смещения, брокеры, распределение реплик и партиций).

В этом руководстве показано, как развернуть Kafka с CMAK на CentOS 8 и провести базовую верификацию работоспособности.

Что будет сделано

  • Установим Java (OpenJDK 11).
  • Скачаем и распакуем Kafka.
  • Создадим systemd-сервисы для Zookeeper и Kafka.
  • Установим и запустим CMAK.
  • Настроим SELinux и firewall.
  • Добавим тестовый топик и проверим в CMAK.

Важно: руководство ориентировано на одиночный тестовый узел (single-node). Для production-кластера потребуются дополнительные шаги: репликация, мониторинг, резервирование и безопасность.

Требования

  • Сервер с CentOS 8
  • Доступ root или эквивалентные права sudo
  • Подключение к интернету для загрузки пакетов и артефактов

Шаг 1. Обновление системы и зависимости

Рекомендуется обновить систему перед началом:

dnf update -y

Установите утилиты git и unzip:

dnf install git unzip -y

Шаг 2. Установка Java

Kafka требует Java. Установите OpenJDK 11:

dnf install java-11-openjdk-devel -y

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

java --version

Ожидаемый пример вывода (может отличаться по билду и дате):

openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-CentOS-0centos8)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-CentOS-0centos8, mixed mode, sharing)

Шаг 3. Скачивание и распаковка Kafka

Создайте директорию для Kafka и загрузите релиз:

mkdir /usr/local/kafka-server
cd /usr/local/kafka-server  
wget https://downloads.apache.org/kafka/2.6.0/kafka_2.13-2.6.0.tgz

Распакуйте архив и уберите уровень вложенности:

tar -xvzf kafka_2.13-2.6.0.tgz --strip 1

Примечание: при установке в production рекомендуется хранить Kafka в менеджируемом каталоге (например /opt/kafka) и настроить отдельные каталоги для логов и данных.

Шаг 4. Systemd для Zookeeper и Kafka

Создайте systemd‑юнит для Zookeeper:

nano /etc/systemd/system/zookeeper.service

Добавьте:

[Unit]
Description=Apache Zookeeper Server
Requires=network.target remote-fs.target
After=network.target remote-fs.target

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

[Install]
WantedBy=multi-user.target

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

Создайте systemd‑юнит для Kafka:

nano /etc/systemd/system/kafka.service

Добавьте (обратите внимание на JAVA_HOME):

[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/jre-11-openjdk"
ExecStart=/usr/local/kafka-server/bin/kafka-server-start.sh /usr/local/kafka-server/config/server.properties
ExecStop=/usr/local/kafka-server/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Сохраните и выполните перезагрузку конфигурации systemd:

systemctl daemon-reload

Запустите и включите службы:

systemctl enable --now zookeeper
systemctl enable --now kafka
systemctl start zookeeper
systemctl start kafka

Проверка статуса:

systemctl status zookeeper kafka

Пример вывода покажет, что оба сервиса активны (active (running)). Если есть ошибки — смотрите журнал:

journalctl -u zookeeper -f
journalctl -u kafka -f

Шаг 5. Установка и конфигурация CMAK

CMAK позволяет просматривать состояние кластера через веб‑интерфейс.

Скачайте исходники CMAK и соберите дистрибутив:

cd /root
git clone https://github.com/yahoo/CMAK.git

Отредактируйте конфигурацию и укажите хосты Zookeeper:

nano ~/CMAK/conf/application.conf

Измените строку на:

cmak.zkhosts="localhost:2181"

Соберите дистрибутив:

cd ~/CMAK/
./sbt clean dist

После успешной сборки пакет появится в /root/CMAK/target/universal. Распакуйте zip:

cd ~/CMAK/target/universal
unzip cmak-3.0.0.5.zip

Шаг 6. Запуск CMAK

Запустите CMAK из распакованной папки:

cd ~/CMAK/target/universal/cmak-3.0.0.5
bin/cmak

По умолчанию CMAK слушает на порту 9000.

Важно: в продакшне рекомендуется запускать CMAK позади reverse proxy (nginx) и настроить systemd‑юнит для автоматического запуска.

Шаг 7. Настройка SELinux и firewall

Если SELinux включён (по умолчанию в CentOS 8), выполните:

chcon -t httpd_sys_rw_content_t ~/CMAK/target/universal/cmak-3.0.0.5 -R
setsebool -P httpd_can_network_connect 1

Откройте порт 9000 в firewalld:

firewall-cmd --permanent --zone public --add-port 9000/tcp
firewall-cmd --reload

Важно: если вы используете reverse proxy (nginx) или балансировщик, настройте правила безопасности соответствующим образом.

Шаг 8. Доступ к CMAK и добавление кластера

Откройте в браузере: http://your-server-ip:9000. Вы увидите главный экран CMAK и список доступных кластеров.

CMAK Clusters

Если кластеры отсутствуют, добавьте новый: в меню выберите Cluster → Add Cluster и заполните форму (имя кластера, zookeeper hosts и т. п.).

Add Cluster

Cluster settings

После удачного добавления вы увидите подтверждение:

Successfully addded a cluster

Шаг 9. Создание тестового топика и проверка в CMAK

Создайте топик на сервере Kafka:

cd /usr/local/kafka-server
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic MyNewTopic

Вернитесь в CMAK, откройте раздел Topic — вы увидите созданный топик.

Add Apache Kafka topic

Откройте информацию по топику для просмотра партиций, реплик и операций:

Operations and topics

Kafka Topic

Проверка работоспособности: быстрый тест продьюсер/консьюмер

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

# Продьюсер
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic MyNewTopic
# Введите несколько строк и нажмите Enter для отправки

# В другом терминале — консьюмер
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic MyNewTopic --from-beginning

Если сообщения видны в консьюмере, кластер работает и CMAK корректно отображает топик.

Дополнительно: рекомендации по безопасности и эксплуатации

  • В production используйте отдельные узлы для Kafka и Zookeeper, настройте replication.factor > 1 и min.insync.replicas.
  • Шифруйте трафик между клиентами и брокерами (SSL/TLS) и включайте аутентификацию (SASL) для контроля доступа.
  • Включите авторизацию (ACL) для ограничения операций на топиках и группах.
  • Разверните мониторинг (Prometheus + Grafana) и оповещения по SLI/SLO для задержки и потребления.
  • Храните данные журналов и логи в отдельном разделе/диске с резервным копированием.

Полезные сниппеты и чек‑лист

Сниппеты команд для администрирования:

# Статус сервисов
systemctl status zookeeper kafka

# Журналы
journalctl -u kafka -f
journalctl -u zookeeper -f

# Список топиков
bin/kafka-topics.sh --list --zookeeper localhost:2181

# Удаление топика (внимание!)
bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic MyNewTopic

Чек‑лист для роли администратора:

  • Установил Java и проверил версию
  • Скачал и распаковал Kafka
  • Создал и включил systemd для Zookeeper и Kafka
  • Собрал и запустил CMAK
  • Открыл порт 9000 и настроил SELinux
  • Создал тестовый топик и проверил продьюсер/консьюмер

Чек‑лист для разработчика/интегратора:

  • Подключился к брокеру по bootstrap-server
  • Протестировал продьюсера и консьюмера
  • Проверил видимость топиков и смещений в CMAK
  • Оценил задержки и производительность на тестовых нагрузках

Советы по отладке и типичные проблемы

  • Если CMAK недоступен на 9000: проверьте, запущен ли процесс bin/cmak, открыт ли порт в firewall и разрешён ли доступ SELinux.
  • Если Kafka не стартует: проверьте JAVA_HOME в systemd‑юните и журналы kafka в journalctl.
  • Проблемы с Zookeeper: убедитесь, что zookeeper.properties корректен и порт 2181 свободен.

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

  • Вместо CMAK можно использовать коммерческие решения и интерфейсы (например, Confluent Control Center) или open-source инструменты (Kafdrop, AKHQ) для администрирования кластеров и просмотра сообщений.
  • Для production часто используют systemd‑юнит с ограничениями ресурсов, отдельного пользователя для запуска и управление через CP/CM/Ansible.

Когда этот подход не подойдёт

  • Для крупных production‑кластеров на нескольких узлах требуется отдельное планирование: HA Zookeeper ensemble, распределённые брокеры, мониторинг и резервное копирование. Руководство подходит для тестовой или небольшой среды.

Факт‑бокс: ключевые порты и значения

  • Порт Zookeeper по умолчанию: 2181
  • Порт Kafka по умолчанию: 9092
  • Порт CMAK по умолчанию: 9000
  • Рекомендуемая Java: OpenJDK 11+

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

  • Сервисы zookeeper и kafka работают (systemctl active)
  • CMAK доступен по http://:9000
  • В CMAK виден созданный топик
  • Простой продьюсер/консьюмер успешно отправляют и получают сообщения

Заключение

Поздравляю — вы успешно установили Apache Kafka и CMAK на CentOS 8. Дальше рекомендуется:

  • Перенести CMAK под systemd и reverse proxy (nginx) для надёжности
  • Настроить SSL/SASL и ACL для безопасности
  • Развернуть мониторинг и резервное копирование

Если нужны примеры systemd‑юнита для CMAK, настройка TLS/SASL или помощь в масштабировании кластера — задайте дополнительные вопросы.

Короткое резюме:

  • Установили Java, Kafka и Zookeeper
  • Настроили systemd‑сервисы
  • Собрали и запустили CMAK
  • Создали топик и проверили работу
Поделиться: 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 быстро