Установка Apache Kafka на Ubuntu 18.04
Публикация расскажет, как установить брокер сообщений Apache Kafka на серверную платформу. В качестве серверной ОС используется Ubuntu Server 18.04.
Немного теории
Apache Kafka не просто менеджер сообщений: он работает с большими объемами данных, оповещая каждого пользователя в зависимости от его подписок. Принцип работы сервиса следующий.
В любой организации существует множество приложений и программ, которые генерирует различные сообщения и оповещения. С другой стороны находятся системы мониторинга, которым необходима информация, например, об авторизации пользователей в базе данных 1С. Apache Kafka обеспечивает стабильную связь между двумя точками, гарантируя доставку пакетов. Несомненным преимуществом является то, что обновление перечня сообщений происходит в автоматическом режиме.
Система является масштабируемой по горизонтали, а также обладает высоким уровнем отказоустойчивости по сравнению с другими аналогичными продуктами. Ее используют такие крупные компании как Netflix, Twitter и др.
Предварительная подготовка
Apache Kafka создан на Java, т.е. для работы ему необходимы соответствующие компоненты на сервере. Для начала установим default-jre. Заведем пользователя с одноименным именем и паролем, который будет обрабатывать запросы брокера:
sudo useradd kafka –m
sudo passwd kafka
Теперь добавим учетное имя к группе sudo для получения привилегированных прав доступа:
sudo adduser kafka sudo
Перелогинимся и перейдем к инсталляции продукта:
su -l kafka
Скачивание дистрибутива
Сначала создаем директорию в домашнем разделе для сохранения загруженных файлов:
mkdir ~/Downloads
Загрузим дистрибутив с официального сайта продукта:
curl "http://www-eu.apache.org/dist/kafka/2.3.0/kafka-2.3.0-src.tgz" -o ~/Downloads/kafka.tgz
Важно! На дату 22 августа 2019 года актуальный релиз — 2.3.0.
Далее создаем каталог для распаковки архива, перейдем в него и извлечем информацию:
mkdir ~/kafka
cd ~/kafka
tar -xvzf ~/Downloads/kafka.tgz --strip 1
Теперь перейдем к конфигурированию решения.
Настройка Apache Kafka
Шаблон конфигурации, который поставляется вместе с брокером, расположен в kafka/config/server.properties. Чтобы сконфигурировать параметры Kafka под требуемые задачи, открываем его текстовым редактором и вносим соответствующие правки.
К примеру, добавим опцию удаления тем брокера. Для этого откроем файл через редактор vi и внесем следующую строку.
delete.topic.enable = true
Первичный старт Kafka на сервере
Настроим параметры запуска «брокера» сообщений под требуемые задачи. Для этого воспользуемся сервисом ZooKeeper. Он отслеживает состояние и конфигурацию Kafka.
Создадим файл конфигурации для ZooKeeper:
sudo vi /etc/systemd/system/zookeeper.service
Припишем в него следующую информацию:
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties
ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multy-user.target
Файл содержит разные блоки. К примеру, Unit отвечает за работоспособность сети и файловой системы, а Install говорит о том, чтобы служба ZooKeeper перезапускалась в автоматическом режиме, если произошел сбой.
Теперь создадим шаблон systemd для Apache Kafka.
sudo nano /etc/systemd/system/kafka.service
Также добавим в него строки:
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > /home/kafka/kafka/kafka.log 2>&1'
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multy-user.target
В данном файле каждая секция также отвечает за разные условия.
После создания шаблонов, запустим службу kafka. Если необходимо, чтобы сервис запускался совместно с серверной частью, то прописываем:
sudo systemctl enable kafka
Протестируем работоспособность брокера сообщений.
Тестирование
Для проверки создадим фразу «Good morning», а потом ликвидируем ее. Чтобы сообщение опубликовалось, необходимы producer (тот, кто публикует) и consumer (тот, кто читает).
1. Придумываем тему, в который будет публикация. Дадим ей имя Demo:
~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic Demo
2. Используя внутреннюю команду kafka-console-producer.sh брокера, создаем producer. От его имени оформляем публикацию в теме Demo:
echo "Good Morning" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Demo > /dev/null
3. Теперь создадим consumer, который прочитает публикацию в топике. Для этого также используем внутренний скрипт kafka-console-consumer.sh:
~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic Demo --from-beginning
4. В результате на мониторе появится «Good Morning». Чтобы остановить тестирование, нажимаем сочетание клавиш Ctrl+C.