当前位置: 首页 > article >正文

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.6
    container_name: kafka
    ports:
      - "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=yes
    volumes:
      - kafka-data:/opt/kafka-logs
    networks:
      - kafka-network

networks:
  kafka-network:
    driver: bridge

volumes:
  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

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

至此 部署完成


http://www.kler.cn/news/284455.html

相关文章:

  • 跟《经济学人》学英文:2024年08月31日这期 How Abercrombie Fitch got hot again
  • 72 华为资源库
  • 第十六章 rust命令行工具开发实践
  • Django orm 中设置读写分离
  • Clickhouse集群化(二)单节点部署
  • 深度学习基础--梯度下降与初始化
  • 分享8个Python自动化实战脚本!
  • Sora 代码规范之Refactor this method to not always return the same value.(目的性问题)
  • Linux C/C++ 库链接选项 --whole-archive,--no-whole-archive和--start-group, --end-group
  • CSS学习7
  • 【CSS in Depth 2 精译_021】3.4 负的外边距 + 3.5 外边距折叠
  • 牛客小白月赛99(A-F)
  • Linux 系统调优 2
  • 2024年交安安全员考试题库及答案
  • 大数据查询优化之谓词下推 ?
  • 【王树森】RNN模型与NLP应用(9/9):Self-Attention(个人向笔记)
  • Apache Flink 零基础入门(二):开发环境搭建和应用的配置、部署及运行
  • React滚动加载(无限滚动)功能实现
  • 23种设计模式之模版方法模式
  • 向量数据库Milvus源码开发贡献实践
  • UE5学习笔记18-使用FABRIK确定骨骼的左手位置
  • 《C++与新兴数据库技术的完美交互:开启高效数据处理新时代》
  • sort,uniq,wc,awk命令 (数据整理
  • 【软件测试专栏】认识软件测试、测试与开发的区别
  • Linux——命令行文件的管理(创建,复制,删除,移动文件,硬链接与软链接)
  • 纷享销客CRM渠道分销之多维度数据分析介绍
  • STM32 - 笔记3
  • mysql启动失败问题汇总
  • 黑马点评——商户查询缓存(P37店铺类型查询业务添加缓存练习题答案)redis缓存、更新、穿透、雪崩、击穿、工具封装
  • ES(Elasticsearch)可视化界面-浏览器插件