|

Как установить Apache Kafka в Debian 10: Полное руководство

Apache Kafka в Debian

Apache Kafka — популярный распределенный брокер сообщений, предназначенный для обработки больших объемов данных в реальном времени. Кластер Kafka отличается масштабируемостью и отказоустойчивостью и имеет более высокую пропускную способность по сравнению с другими брокерами сообщений, такими как ActiveMQ и RabbitMQ. Хотя он обычно используется в качестве системы рассылки сообщений издатель/подписчик, многие организации также используют этого брокера для агрегации логов, поскольку он предоставляет надежное хранение для публикуемых сообщений.

Системные требования

Для установки нам понадобится VDS/VPS сервер c Debian 10 на борту, имеющий не менее 4 ГБ ОЗУ, сервер можно заказать в панели управления. Так же Kafka требует Java для работы, ее мы установим вместе. Так же рекомендую к прочтению, как установить kafka в Docker на Windows.

Войдем на сервер по SSH с помощью ssh клиента Putty.

apt update
apt upgrade

Установка Java

Убедитесь, что на вашем сервере установлена Java. Kafka требует Java для работы. Вы можете установить OpenJDK следующей командой:

apt install -y default-jre

Проверим, что OpenJDK установлен.

root@kafka:~# java -version
openjdk version "17.0.10" 2024-01-16
OpenJDK Runtime Environment (build 17.0.10+7-Debian-1deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.10+7-Debian-1deb12u1, mixed mode, sharing)

Скачивание и распаковка Apache Kafka

  1. Перейдите на официальный сайт Apache Kafka (https://kafka.apache.org/downloads) и скопируйте ссылку на последнюю версию Kafka.
  2. Вернитесь в терминал и используйте wget для загрузки Kafka. Замените LINK_TO_LATEST_KAFKA на актуальную ссылку, которую вы скопировали.
Релизы для загрузки apache kafka
wget LINK_TO_LATEST_KAFKA

В моем случае

wget https://mirror.linux-ia64.org/apache/kafka/3.7.0/kafka_2.12-3.7.0.tgz

Распакуйте скачанный архив:

tar -xzf kafka_2.x-y.z.tgz

В моем случае

tar -xzf kafka_2.12-3.7.0.tgz

Здесь x, y, и z — это версия Kafka, которую вы загрузили.

Перейти в каталог Kafka

cd kafka_2.x-y.z 

Для моей версии

 cd kafka_2.12-3.7.0
cd bin

Запуск Zookeeper

Kafka использует Zookeeper для управления состоянием. Вы можете использовать встроенный Zookeeper, запустив его следующей командой с конфигурационным файлом zookeeper.properties:

./zookeeper-server-start.sh ../config/zookeeper.properties

Запуск брокера Kafka

Откройте новый терминал и перейдите в каталог Kafka. Затем запустите брокера Kafka:

 cd kafka_2.12-3.7.0
cd bin
./kafka-server-start.sh ../config/server.properties

Теперь Apache Kafka запущен на вашем сервере Debian 10. Вы можете начать использовать Kafka для создания тем и отправки/получения сообщений. Не забудьте изменить конфигурацию, если это необходимо, в файлах zookeeper.properties и server.properties.

Проверка работы Kafka в Debian 10

Создадим еще одно подключение к серверу и перейдем в каталог Kafka.

cd kafka_2.12-3.7.0
cd bin

Чтобы проверить работу создадим тему «Partners«, допустим данная тема будет использоваться для обмена контрагентами между разными системами 1С.

./kafka-topics.sh --create --topic Partners --bootstrap-server localhost:9092

Получаем результат

root@kafka:~/kafka_2.12-3.7.0/bin# ./kafka-topics.sh --create --topic Partners --bootstrap-server localhost:9092                        
Created topic Partners.

Тема создана, а значит Kafka работает.

Установка и запуск Kafka REST Proxy на Debian 10

Для полноты примера, представим, что нам нужно построить распределенную систему обработки сообщений, в данному случае нам понадобится Kafka REST Proxy.

Что такое Kafka REST Proxy?

Kafka REST Proxy представляет собой прокси-сервер для Apache Kafka, который позволяет обмениваться сообщениями с помощью HTTP-запросов. Это означает, что вместо использования нативного Kafka-клиента мы сможем отправлять и получать сообщения через REST API, а иначе как?

Теперь, когда Kafka REST Proxy установлен и запущен, вы можете использовать его для обмена сообщениями через REST API.

Установка Kafka REST Proxy

Скачайте Kafka REST Proxy с официального репозитория GitHub:

wget https://github.com/confluentinc/kafka-rest/archive/master.zip

Распакуйте скачанный архив с помощью следующей команды:

unzip master.zip

Перейдите в директорию Kafka REST Proxy с помощью следующей команды:

cd kafka-rest-master

Соберите Kafka REST Proxy с помощью следующей команды:

./gradlew jar

Наконец, запустите Kafka REST Proxy с помощью следующей команды:

./bin/kafka-rest-start ./etc/kafka-rest/kafka-rest.properties

Использование Kafka REST Proxy

Теперь, когда Kafka REST Proxy установлен и запущен, вы можете использовать его для обмена сообщениями через REST API.

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

curl -X POST -H "Content-Type: application/vnd.kafka.json.v2+json" \
    --data '{"records":[{"value":{"name":"Alice"}}]}' \
    "http://localhost:8082/topics/partners"

Для получения сообщений используйте метод GET:

curl -X GET "http://localhost:8082/topics/test/partitions/0/messages"

Мы успешно установили и запустили Kafka REST Proxy на Debian 10 и можем использовать его для нашей распределенной системы обработки сообщений.

Частые вопросы

Какие сферы применения Apache Kafka?

Apache Kafka находит применение во многих областях, включая интеграцию данных, агрегацию журналов и многое другое.

Почему выбирать Kafka для Debian 10?

Kafka предлагает надежность и масштабируемость, что делает его идеальным выбором для Debian 10.

Какие советы по безопасности Kafka вы можете предоставить?

Обязательно настройте SSL и ACL для обеспечения безопасности Kafka на Debian 10.

Как масштабировать Kafka для роста?

Изучите возможности горизонтального и вертикального масштабирования для эффективного управления ростом.

Как проверить статус брокера Kafka?

Используйте команды Kafka для проверки статуса брокера и убедитесь в его нормальной работе.

Какие Java-переменные среды важны для Kafka?

Настройте переменные среды Java, такие как JAVA_HOME и JRE_HOME, для оптимальной работы Kafka.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *