Пошаговое руководство по установке Kafka в CentOS. Apache Kafka используется для систем потоковой аналитики, журналирования, передачи данных в хранилище и т.д.
Установка дополнительных пакетов
для установки нам потребуется nano, tar и wget, если они уже установлены в системе, этот пункт можно пропустить.
yum install tar wget nano
Установка Java
Для работы компонентов Kafka необходимо предварительно установить Java JDK
yum install java
по кончанию установки проверяем версию
java -version
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
Создание пользователя Kafka
Сервис Kafka и Zookeeper, запускаются от пользователя Kafka, необходимо его предварительно создать
useradd kafka -m
так же добавляем пользователя в группу wheel
usermod -aG wheel kafka
Скачивание Kafka
Переходим на страницу загрузки Kafka и скопируем ссылку на последнюю версию.
wget https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz
Создание директорий
Создание следующие директории для установки Kafka
mkdir -p /opt/kafka
mkdir -p /opt/data/zookeeper
Они нам понадобятся чуть позже.
Установка kafka
Переходим в директорию /opt/kafka и расколдовываем архив.
tar -xvzf /<download_dir>/kafka_2.13-3.1.0.tgz --strip 1
Либо из директории где мы находимся, распаковываем архив и переносим все файлы
tar -xvzf kafka_2.13-3.1.0.tgz
mv kafka_2.13-3.1.0/* /opt/kafka/
Установка прав на директорию Kafka
Так как kafka и zookeeper работают с правами обычного пользователя, назначаем владельцем пользователя kafka
chown -R kafka:kafka -R /opt/kafka/
chown -R kafka:kafka -R /opt/data/zookeeper
Настройка Kafka
Прежде чем приступить к запуску, необходимо настроить zookeeper и kafka (по необходимости)
Открываем файл настройки zookeeper
nano /opt/kafka/config/zookeeper.properties
и изменяем параметр dataDir, на значение ниже
dataDir=/opt/data/zookeeper
если необходимо разрешить удаление топиков из Kafka, то в файл /opt/kafka/config/server.properties
nano /opt/kafka/config/server.properties
Добавляем в конце параметр
delete.topic.enable = true
Создание сервисов
Создание сервиса zookeeper
Создаем файл сервиса
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=/bin/bash -c '/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties'
ExecStop=/bin/sh -c '/opt/kafka/bin/zookeeper-server-stop.sh'
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
Больше никаких настроек не требуется, запуском сервисам будет заниматься Kafka
Создание сервиса Kafka
Создаем файл сервиса
nano /etc/systemd/system/kafka.service
со следующим содержимым
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/bin/bash -c '/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties'
ExecStop=/bin/bash -c '/opt/kafka/bin/kafka-server-stop.sh'
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
Включаем и запускаем сервис
systemctl enable kafka
systemctl start kafka
Открытие доступа по сети к Kafka
По умолчанию Kafka доступна только на локальном интерфейсе. Для открытия доступа по сети, необходимо в файл /opt/kafka/config/server.properties добавить параметр listeners
nano /opt/kafka/config/server.properties
listeners=PLAINTEXT://<ip>:9092
где <ip> - IP адрес сетевого интерфейса
Открываем порт
firewall-cmd --add-port=9092/tcp --permanent
firewall-cmd --reload
и перезапускаем Kafka
systemctl restart kafka