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

在一台服务器上使用docker运行kafka集群

1.拉取镜像

docker pull wurstmeister/kafka

docker pull wurstmeister/zookeeper

2.创建集群之间通信的网络

docker network create kafka-cluster-net

docker network inspect kafka-cluster-net 

3.将zookeeper加入到网络中

docker network connect kafka-cluster-net zookeeper

4.启动kafka集群

​
docker run -d \--name kafka-0 \--network kafka-cluster-net \-p 9092:9092 \-e KAFKA_BROKER_ID=0 \-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \-e KAFKA_LISTENERS=PLAINTEXT://:9092 \wurstmeister/kafka​
  • 首先创建一个自定义网络,方便容器间通信:
  • 运行第一个 Kafka 容器:
  • --name kafka-0:给容器命名,这里以 kafka-0 表示第一个节点,后续可类推更改数字来创建不同节点。
  • --network kafka-cluster-net:让容器接入刚才创建的自定义网络。
  • -p 9092:9092:映射端口,使得外部能访问容器内的 Kafka 服务。
  • KAFKA_BROKER_ID:指定 broker 的唯一 ID,每个节点不能相同。
  • KAFKA_ZOOKEEPER_CONNECT:指向刚才启动的 Zookeeper 容器名称及端口,容器间通过名称可互相访问。
  • KAFKA_ADVERTISED_LISTENERS:对外暴露的连接地址,这里使用 localhost,根据实际情况修改。
  • KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR:副本因子,这里设置为 1,可按需调整。
  • 运行第二个 Kafka 容器(类似地修改 broker ID 等参数):
  • 按照上述方法可运行更多的 Kafka 容器来构建更大的集群,只需修改相应的 ID 和端口等参数。
docker run -d \--name kafka-1 \--network kafka-cluster-net \-p 9093:9092 \-e KAFKA_BROKER_ID=1 \-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9093 \-e KAFKA_LISTENERS=PLAINTEXT://:9092 \wurstmeister/kafka

5.检查是否运行

docker ps

docker network inspect kafka-cluster-net 

检查网络以及容器运行状态

6.编写集群启动脚本

start_kafka_cluster.sh :

#!/bin/bash
docker start zookeeper
sleep 4
docker start kafka-0 kafka-1 
echo "Kafka cluster containers started successfully."

7.编写集群关闭脚本

stop_kafka_cluster.sh:

#!/bin/bash
docker stop kafka-0 kafka-1 zookeeper
echo "Kafka cluster containers stopped successfully."

8.进入容器检查

docker exec -it kafka-0 /bin/bash

cd /opt/kafka/                      #切换到内部kafka目录

9.故障排查

如果在使用Docker过程中遇到任何错误, 可以命令:

docker logs 容器ID/容器名称

10、启动生产者

./kafka-console-producer.sh --broker-list localhost:9092 --topic [你的topic名称]

11.启动消费者

为了看到生产者和消费者之间的消息传递效果,这里需要另开一个终端,按照上面的方法进入容器对应目录,并执行以下命令:

./kafka-console-consumer.sh --bootstrap-server [你的IP地址]:9092 --topic [你的topic名称]

http://www.lryc.cn/news/516166.html

相关文章:

  • Apache Celeborn 在B站的生产实践
  • JOIN 和 OUTER JOIN,SQL中常见的连接方式
  • Vue2: table加载树形数据的踩坑记录
  • 电子信息硕士面试经验
  • dns网址和ip是一一对应的吗?
  • springboot3 redis 常用操作工具类
  • Java工程师实现视频文件上传minio文件系统存储及网页实现分批加载视频播放
  • Redis(二)value 的五种常见数据类型简述
  • Docker 环境中搭建 Redis 哨兵模式集群的步骤与问题解决
  • 【网页自动化】篡改猴入门教程
  • 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 4:MHE表示能力
  • Github - unexpected disconnect while reading sideband packet
  • Ubuntu 环境安装 之 RabbitMQ 快速入手
  • UE5中实现右键开镜效果
  • Apache HTTPD 换行解析漏洞(CVE-2017-15715)
  • Excel重新踩坑5:二级下拉列表制作;★数据透视表;
  • 力扣--35.搜索插入位置
  • C# 设计模式(行为型模式):模板方法模式
  • Leetcode打卡:设计一个ATM机器
  • 【TCP】SYN、ACK、FIN、RST、PSH、URG的全称
  • 【OceanBase】使用 Superset 连接 OceanBase 数据库并进行数据可视化分析
  • 【通识安全】应急救护常识23则
  • C语言:cJSON将struct结构体与JSON互相转换
  • 在Linux中,如何查看和修改网络接口配置?
  • 使用深度学习来实现图像超分辨率 综述!
  • 基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划
  • 【Android项目学习】3. MVVMHabit
  • 在Linux中,如何配置负载均衡器以分配网络流量?
  • 手机投屏到电视的3种选择:无线本地投屏,无线远程投屏,AirPlay投屏
  • MySQL关联关系理论与实践