Установка Apache Kafka на Ubuntu 18.04
Публикация расскажет, как установить брокер сообщений Apache Kafka на серверную платформу. В качестве серверной ОС используется Ubuntu Server 18.04.
Немного теории
Apache Kafka не просто менеджер сообщений: он работает с большими объемами данных, оповещая каждого пользователя в зависимости от его подписок. Принцип работы сервиса следующий.
В любой организации существует множество приложений и программ, которые генерирует различные сообщения и оповещения. С другой стороны находятся системы мониторинга, которым необходима информация, например, об авторизации пользователей в базе данных 1С. Apache Kafka обеспечивает стабильную связь между двумя точками, гарантируя доставку пакетов. Несомненным преимуществом является то, что обновление перечня сообщений происходит в автоматическом режиме.
Система является масштабируемой по горизонтали, а также обладает высоким уровнем отказоустойчивости по сравнению с другими аналогичными продуктами. Ее используют такие крупные компании как Netflix, Twitter и др.
Предварительная подготовка
Apache Kafka создан на Java, т.е. для работы ему необходимы соответствующие компоненты на сервере. Для начала установим default-jre. Заведем пользователя с одноименным именем и паролем, который будет обрабатывать запросы брокера:
Теперь добавим учетное имя к группе sudo для получения привилегированных прав доступа:
Перелогинимся и перейдем к инсталляции продукта:
Скачивание дистрибутива
Сначала создаем директорию в домашнем разделе для сохранения загруженных файлов:
Загрузим дистрибутив с официального сайта продукта:
Важно! На дату 22 августа 2019 года актуальный релиз — 2.3.0.
Далее создаем каталог для распаковки архива, перейдем в него и извлечем информацию:
Теперь перейдем к конфигурированию решения.
Настройка Apache Kafka
Шаблон конфигурации, который поставляется вместе с брокером, расположен в kafka/config/server.properties. Чтобы сконфигурировать параметры Kafka под требуемые задачи, открываем его текстовым редактором и вносим соответствующие правки.
К примеру, добавим опцию удаления тем брокера. Для этого откроем файл через редактор vi и внесем следующую строку.
Первичный старт Kafka на сервере
Настроим параметры запуска «брокера» сообщений под требуемые задачи. Для этого воспользуемся сервисом ZooKeeper. Он отслеживает состояние и конфигурацию Kafka.
Создадим файл конфигурации для ZooKeeper:
Припишем в него следующую информацию:
Requires=network.target remote-fs.target
After=network.target remote-fs.target
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
WantedBy=multy-user.target
Файл содержит разные блоки. К примеру, Unit отвечает за работоспособность сети и файловой системы, а Install говорит о том, чтобы служба ZooKeeper перезапускалась в автоматическом режиме, если произошел сбой.
Теперь создадим шаблон systemd для Apache Kafka.
Также добавим в него строки:
Requires=zookeeper.service
After=zookeeper.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
WantedBy=multy-user.target
В данном файле каждая секция также отвечает за разные условия.
После создания шаблонов, запустим службу kafka. Если необходимо, чтобы сервис запускался совместно с серверной частью, то прописываем:
Протестируем работоспособность брокера сообщений.
Тестирование
Для проверки создадим фразу «Good morning», а потом ликвидируем ее. Чтобы сообщение опубликовалось, необходимы producer (тот, кто публикует) и consumer (тот, кто читает).
1. Придумываем тему, в который будет публикация. Дадим ей имя Demo:
2. Используя внутреннюю команду kafka-console-producer.sh брокера, создаем producer. От его имени оформляем публикацию в теме Demo:
3. Теперь создадим consumer, который прочитает публикацию в топике. Для этого также используем внутренний скрипт kafka-console-consumer.sh:
4. В результате на мониторе появится «Good Morning». Чтобы остановить тестирование, нажимаем сочетание клавиш Ctrl+C.