在一台服务器上使用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集群

bash 复制代码
​
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 和端口等参数。
bash 复制代码
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 :

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

7.编写集群关闭脚本

stop_kafka_cluster.sh:

bash 复制代码
#!/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名称]

相关推荐
qiuiuiu4131 小时前
正点原子RK3568学习日志19- Linux错误处理 字符驱动框架完全体
linux·服务器·学习·ubuntu
橘颂TA1 小时前
【Linux】 层层递进,抽丝剥茧:调度队列、命令行参数、环境变量
linux·运维·服务器·c/c++
在未来等你1 小时前
Kafka面试精讲 Day 25:Kafka与大数据生态集成
大数据·分布式·面试·kafka·消息队列
七夜zippoe1 小时前
压缩与缓存调优实战指南:从0到1根治性能瓶颈(四)
运维·docker·容器
X_szxj2 小时前
Volatility2在kali安装
linux·运维·服务器
像风一样!2 小时前
NFS文件存储
linux·服务器·网络·nfs文件存储
god002 小时前
chromium项目中添加源文件(BUILD.gn项目中添加源文件)
java·服务器·前端
郝学胜-神的一滴2 小时前
C++ STL(标准模板库)深度解析:从基础到实践
linux·服务器·开发语言·c++·算法
羚羊角uou3 小时前
【Linux网络】Socket编程UDP
linux·服务器·网络
加油_Yeah3 小时前
pycharm 远程连接服务器&添加github copilot
运维·服务器·ide·pycharm·copilot