Введение
Apache Kafka — это распределенная потоковая платформа, которая позволяет создавать конвейеры и приложения потоковой передачи данных в реальном времени. Настройка Kafka может быть сложной, но Docker Compose упрощает процесс, определяя и запуская многоконтейнерные приложения Docker. В этом руководстве представлен пошаговый подход к созданию темы Kafka с помощью Docker Compose, что делает его доступным как для разработчиков, так и для специалистов DevOps.
Предварительные условия
Прежде чем приступить к процессу создания, убедитесь, что в вашей системе установлены следующие необходимые компоненты:
- Docker — предоставляет возможность создавать, развертывать и запускать приложения с использованием контейнеров.
- Docker Compose — инструмент для определения и запуска многоконтейнерных приложений Docker.
Шаг 1. Создайте файл компоновки Docker.
Первый шаг включает создание файла docker-compose.yml
. Этот файл определяет службы Kafka и Zookeeper, необходимые для запуска экземпляра Kafka. Zookeeper — это централизованный сервис для хранения информации о конфигурации, именования, распределенной синхронизации и предоставления групповых сервисов.
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
ports:
- "2181:2181"
networks:
- kafka-net
kafka:
image: wurstmeister/kafka
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9092,OUTSIDE://localhost:9093
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENERS: INSIDE://0.0.0.0:9092,OUTSIDE://0.0.0.0:9093
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_CREATE_TOPICS: "YourTopicName:1:1"
networks:
- kafka-net
networks:
kafka-net:
driver: bridge
Замените YourTopicName желаемым именем вашей темы Kafka. Формат переменной среды KAFKA_CREATE_TOPICS — TopicName:NumberOfPartitions:ReplicationFactor.
Шаг 2. Запуск Docker Compose
Перейдите в каталог, содержащий файл docker-compose.yml
, и выполните в терминале следующую команду:
docker-compose up -d
Эта команда загрузит образы Docker, необходимые для Kafka и Zookeeper, а затем запустит контейнеры в автономном режиме.
Шаг 3. Подтвердите создание темы.
Чтобы убедиться, что тема Kafka создана, вы можете использовать инструмент командной строки Kafka Topics, который входит в состав Kafka. Выполните следующую команду, чтобы просмотреть список тем и убедиться, что тема создана:
docker-compose exec kafka kafka-topics.sh --list --zookeeper zookeeper:2181
Вы должны увидеть YourTopicName в списке тем.
Шаг 4: Производство и потребление сообщений
Для дальнейшего тестирования вашей настройки вы можете создавать и использовать сообщения с помощью сценариев производителя и потребителя консоли Kafka.
Производство сообщений:
В контейнере Kafka bash запустите:
docker-compose exec kafka kafka-console-producer.sh --broker-list localhost:9092 --topic YourTopicName
После запуска команды вы можете набирать сообщения в консоли. Нажмите Ctrl+D, чтобы отправить сообщение.
Потребление сообщений:
Откройте еще один сеанс терминала, снова получите доступ к контейнеру Kafka и запустите:
docker-compose exec kafka kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic YourTopicName --from-beginning
Вы должны увидеть сообщения, которые вы создали ранее.
Шаг 4. Создайте тему Kafka (необязательно).
По умолчанию Docker создает темы, определенные с помощью переменной KAFKA_CREATE_TOPICS в файле docker-compose.yaml
. Но вы все равно можете создавать новые темы Kafka с помощью следующей команды:
docker-compose exec kafka kafka-topics.sh --create --topic NewTopicName --partitions 1 --replication-factor 1 --bootstrap-server kafka:9092
Замените «NewTopicName» названием новой темы. Приведенная выше команда инициализирует новую тему и настраивается с одним разделом и одной репликой через брокер Kafka через порт 9092.
Затем перечислите темы, чтобы убедиться, что тема была создана:
docker-compose exec kafka kafka-topics.sh --list --zookeeper zookeeper:2181
Здесь будут перечислены все темы, включая созданные выше.
ПРИМЕЧАНИЕ. Из-за ограничений в именах метрик аргументы с точкой («.») или подчеркиванием («_») могут конфликтовать. Чтобы избежать проблем, лучше использовать один, а не оба.
Заключение
Теперь вы успешно создали тему Kafka с помощью Docker Compose и проверили ее функциональность, создавая и потребляя сообщения. Эта настройка не только упрощает процесс управления Kafka, но также обеспечивает масштабируемую и легко воспроизводимую среду для ваших потоковых приложений. Независимо от того, занимаетесь ли вы разработкой локально или развертываете в производственной среде, Docker Compose с Kafka предлагает мощный набор инструментов для упрощения конвейеров потоковой передачи данных.