Пошаговое руководство по установке Kafka в CentOS. Apache Kafka используется для систем потоковой аналитики, журналирования, передачи данных в хранилище и т.д.
Установка дополнительных пакетов
для установки нам потребуется nano, tar и wget, если они уже установлены в системе, этот пункт можно пропустить.
1 | yum install tar wget nano |
Установка Java
Для работы компонентов Kafka необходимо предварительно установить Java JDK
1 | yum install java |
по кончанию установки проверяем версию
1 2 3 4 | 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, необходимо его предварительно создать
1 | useradd kafka -m |
так же добавляем пользователя в группу wheel
1 | usermod -aG wheel kafka |
Скачивание Kafka
Переходим на страницу загрузки Kafka и скопируем ссылку на последнюю версию.
1 | wget https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz |
Создание директорий
Создание следующие директории для установки Kafka
1 2 | mkdir -p /opt/kafka mkdir -p /opt/data/zookeeper |
Они нам понадобятся чуть позже.
Установка kafka
Переходим в директорию /opt/kafka и расколдовываем архив.
1 | tar -xvzf /<download_dir>/kafka_2.13-3.1.0.tgz --strip 1 |
Либо из директории где мы находимся, распаковываем архив и переносим все файлы
1 2 | tar -xvzf kafka_2.13-3.1.0.tgz mv kafka_2.13-3.1.0/* /opt/kafka/ |
Установка прав на директорию Kafka
Так как kafka и zookeeper работают с правами обычного пользователя, назначаем владельцем пользователя kafka
1 2 | chown -R kafka:kafka -R /opt/kafka/ chown -R kafka:kafka -R /opt/data/zookeeper |
Настройка Kafka
Прежде чем приступить к запуску, необходимо настроить zookeeper и kafka (по необходимости)
Открываем файл настройки zookeeper
1 | nano /opt/kafka/config/zookeeper.properties |
и изменяем параметр dataDir, на значение ниже
1 | dataDir=/opt/data/zookeeper |
если необходимо разрешить удаление топиков из Kafka, то в файл /opt/kafka/config/server.properties
1 | nano /opt/kafka/config/server.properties |
Добавляем в конце параметр
1 | delete.topic.enable = true |
Создание сервисов
Создание сервиса zookeeper
Создаем файл сервиса
1 | nano /etc/systemd/system/zookeeper.service |
со следующим содержимым
1 2 3 4 5 6 7 8 9 10 11 12 13 | [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
Создаем файл сервиса
1 | nano /etc/systemd/system/kafka.service |
со следующим содержимым
1 2 3 4 5 6 7 8 9 10 11 12 13 | [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 |
Включаем и запускаем сервис
1 2 | systemctl enable kafka systemctl start kafka |
Открытие доступа по сети к Kafka
По умолчанию Kafka доступна только на локальном интерфейсе. Для открытия доступа по сети, необходимо в файл /opt/kafka/config/server.properties добавить параметр listeners
1 | nano /opt/kafka/config/server.properties |
listeners=PLAINTEXT://<ip>:9092
где <ip> - IP адрес сетевого интерфейса
Открываем порт
1 2 | firewall-cmd --add-port=9092/tcp --permanent firewall-cmd --reload |
и перезапускаем Kafka
1 | systemctl restart kafka |