您的位置:首页 > 汽车 > 时评 > Docker Compose 部署 Kafka的KRaft模式 不用依赖 Zookeeper

Docker Compose 部署 Kafka的KRaft模式 不用依赖 Zookeeper

2024/11/18 22:32:19 来源:https://blog.csdn.net/weixin_43874535/article/details/141594117  浏览:    关键词:Docker Compose 部署 Kafka的KRaft模式 不用依赖 Zookeeper

前言

从 Kafka 2.8 开始,KRaft 模式允许 Kafka 在没有 Zookeeper 的情况下运行。本文将部署单机模式

1.新建 docker-compose.yml

vim docker-compose.yml

services:kafka:image: bitnami/kafka:3.6container_name: kafkaports:- "19092:9092"environment:- KAFKA_CFG_PROCESS_ROLES=broker,controller- KAFKA_CFG_NODE_ID=1- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@localhost:9093- KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER- KAFKA_CFG_LOG_DIRS=/opt/kafka-logs- KAFKA_CFG_NUM_PARTITIONS=1- KAFKA_CFG_DEFAULT_REPLICATION_FACTOR=1- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=1- KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1- KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR=1- KAFKA_CFG_MIN_INSYNC_REPLICAS=1- ALLOW_PLAINTEXT_LISTENER=yesvolumes:- kafka-data:/opt/kafka-logsnetworks:- kafka-networknetworks:kafka-network:driver: bridgevolumes:kafka-data:name: my-kafka-data

2.启动 Kafka

docker compose -f docker-compose.yml up -d

首次运行会拉取镜像,耐心等待…

3.验证 Kafka 启动

3.1 查看 Kafka 的日志:

docker logs kafka

有以下报错(如果没有报错 则略过此步骤)
在这里插入图片描述
查看 宿主机 数据卷地址

docker inspect kafka |grep -i Mounts -A 10

在这里插入图片描述

确认宿主机上挂载的数据卷目录的权限

sudo ls -ld /var/lib/docker/volumes/my-kafka-data/_data

调整宿主机权限

sudo chown -R 1001:1001 /var/lib/docker/volumes/my-kafka-data/_data
sudo chmod -R 755       /var/lib/docker/volumes/my-kafka-data/_data

再次启动

docker compose -f docker-compose.yml up -d

3.2 查看容器

docker ps

在这里插入图片描述

4.测试

4.1 进入 Kafka 容器

docker exec -it --user root kafka bash

4.2 创建 Kafka 主题
使用 kafka-topics.sh 命令来创建主题。假设我们创建一个名为 test-topic 的主题:

kafka-topics.sh --bootstrap-server localhost:9092 --create --topic test-topic --partitions 1 --replication-factor 1

4.3 查看现有的 Kafka 主题

kafka-topics.sh --bootstrap-server localhost:9092 --list

在这里插入图片描述
4.4 生产消息到 Kafka 主题

kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic

4.5 消费 Kafka 主题
加一个新的终端,再进容器

docker exec -it --user root kafka bash
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning

切换之前的终端,输入比如

a
b
c
d

下图所示成功消费
在这里插入图片描述

至此 部署完成

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com