MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

容器化部署Kafka的最佳实践:基于KRaft模式的无ZooKeeper方案

2025-05-11 16:03 huorong 精选文章 1 ℃ 0 评论

前言

本文主要阐述如何 快速使用容器化方式快速的部署 kafka

一、docker 部署kafka单节点

1.1安装docker【安装步骤省略】

1.3 运行kafka(注意修改zookeeper,kafka地址)

docker run -d --name kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.10.180:9092 -p 9092:9092 -v /home/application/Middleware/kafka/data:/var/lib/kafka/data --restart=always docker.cnb.cool/srebro/docker-images/kafka-kraft:3.7.2

1.4 登录kafka容器,创建topic

docker exec -it kafka bash
cd /opt/kafka/bin
./kafka-topics.sh --create --topic my_topic_srebro.cn --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

1.5 登录kafka容器,启动一个生产者

docker exec -it kafka bash
cd /opt/kafka/bin

./kafka-console-producer.sh --topic my_topic_srebro.cn --bootstrap-server localhost:9092

1.6 新开一个终端窗口,登录kafka容器,启动一个消费者

docker exec -it kafka bash
cd /opt/kafka/bin

./kafka-console-consumer.sh --topic my_topic_srebro.cn --bootstrap-server localhost:9092 --from-beginning

1.7 模拟在生产者上,测试几条数据,观察消费者上有没有收到数据

1.8 kafka map 管理工具

A beautiful, concise and powerful kafka web management tool. 一个美观简洁且强大的kafka web管理工具。

  • 官方帮助手册: https://github.com/dushixiang/kafka-map/blob/master/README-zh_CN.md
docker run -d \
    -p 8080:8080 \
    -v /opt/kafka-map/data:/usr/local/kafka-map/data \
    -e DEFAULT_USERNAME=admin \
    -e DEFAULT_PASSWORD=admin \
    --name kafka-map \
    --restart always dushixiang/kafka-map:latest

二、docker-compose 部署kafka单节点

2.1 安装docker-compose【安装步骤省略】

2.2 编排docker-compose文件

注意先要创建docker 单独的网络

创建自定义网络 : docker network create -d bridge --subnet "192.168.10.0/24" --gateway "192.168.10.1" srebro.cn

version: '3'

services:
  kafka:
    image: docker.cnb.cool/srebro/docker-images/kafka-kraft:3.7.2
    container_name: kafka
    networks:
      - srebro.cn
    environment:
      #KAFKA_LISTENERS: PLAINTEXT://:9092 # Kafka 监听端口配置
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.16.10.180:9092 # Kafka 对外公布的地址
      #KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT # 监听器与安全协议的映射
      #KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT # Broker 间通信使用的监听器
    ports:
      - "9092:9092"
    volumes:
      - /home/application/Middleware/kafka/data:/var/lib/kafka/data
    restart: always


  kafka-map:
    #image: dushixiang/kafka-map:latest
    image: docker.cnb.cool/srebro/docker-images/dushixiang-kafka-map:latest  #加速地址
    container_name: kafka-map
    networks:
      - srebro.cn
    volumes:
      - "/home/application/Middleware/kafka/kafka-map/data:/usr/local/kafka-map/data"
    ports:
      - 19006:8080
    environment:
      DEFAULT_USERNAME: admin
      DEFAULT_PASSWORD: 123456
    depends_on:
      - kafka
    restart: 'unless-stopped'


networks:
  srebro.cn:
    external: true

2.3 运行 docker-compose 容器

docker-compose up -d

Tags:zookeeper客户端工具

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言