最近项目中,用到了Kafka,准备花点时间研究下Kafka的使用。本章只涉及到Kafka的基本安装,以及安装过程中遇到的问题。

官网目前最新版本为3.2.0:

Download Address: Apache Kafka

1.拉取Zookeeper和Kafka镜像

使用 下面命令获取Zookeeper和Kafka镜像,选择下载度最高的,应该是属于稳定版本,Stars值最高的。

docker search zookeeper
docker search kafka

拉取镜像:

docker pull zookeeper  

docker pull bitnami/kafka

2.启动Zookeeper和安装Kafka:

docker run -dit --name zk -p 2181:2181 zookeeper

 重启:

docker restart zk

查看ZK日志:

docker logs -f zk

启动三个kafka实例,组成Kafka集群:

KafKa Node1:

docker run -d --name kafka01 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=主机IP地址:2181 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://主机IP地址:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t bitnami/kafka

KafKa Node2和KafKa Node3:

docker run -d --name kafka02 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=主机IP地址:2181 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://主机IP地址:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t bitnami/kafka
docker run -d --name kafka03 -p 9094:9094 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=主机IP地址:2181 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://主机IP地址:9094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 -t bitnami/kafka

在Docker中查看节点运行状态:都已正常成功启动

重启三个节点:

docker restart kafka01
docker restart kafka02
docker restart kafka03

查看KafKa日志:

docker logs -f kafka01
docker logs -f kafka02
docker logs -f kafka03

删除Kafka的命令:

docker rm -f kafka01
docker rm -f kafka02
docker rm -f kafka03

3.测试配置有无正常安装以及生产消费的基本使用。

测试建立3的副本和5的partition,查看是否配置成功。

KafKa01生产消息,KafKa02和KafKa03消费消息:

运行以下命令,会抛出一个异常:

docker exec -ti kafka01 kafka-topics.sh --create --zookeeper 主机IP地址:2181 --replication-factor 3 --partitions 5 --topic TestTopic

原因在于:

 在较新版本(2.2 及更高版本)的 Kafka 不再需要 ZooKeeper 连接字符串,即- -zookeeper localhost:2181。使用 Kafka Broker的 --bootstrap-server localhost:9092来替代- -zookeeper localhost:2181

Solution:解决Exception in thread “main“ joptsimple.UnrecognizedOptionException: zookeeper is not a recognized问题
 

更新命令:

docker exec -ti kafka01 kafka-topics.sh --create --bootstrap-server 主机IP地址:9092 --replication-factor 3 --partitions 5 --topic TestTopic

 查看已创建好的Topic信息:

docker exec -ti kafka01 kafka-topics.sh --describe --bootstrap-server 主机IP地址:9092 --topic TestTopic
docker exec -ti kafka02 kafka-topics.sh --describe --bootstrap-server 主机IP地址:9093 --topic TestTopic
docker exec -ti kafka03 kafka-topics.sh --describe --bootstrap-server 主机IP地址:9094 --topic TestTopic

消费和生产测试,kafka01输出后在其他两个节点能看到消息:

生产者:
docker exec -ti kafka01 kafka-console-producer.sh --broker-list 主机IP地址:9092 --topic TestTopic
消费者:
docker exec -ti kafka02 kafka-console-consumer.sh --bootstrap-server 主机IP地址:9093 --topic TestTopic --from-beginning

docker exec -ti kafka03 kafka-console-consumer.sh --bootstrap-server 主机IP地址:9094 --topic TestTopic --from-beginning

4. 下载、安装可视化工具CMAK(Cluster Manager for Apache Kafka)

   拉取镜像:

docker search kafka-manager

 运行KafKa-manage:

docker run -dit -p 9000:9000 -e ZK_HOSTS="主机IP:2181" sheepkiller/kafka-manager

使用:http://localhost:9000/登录即可。

 需要添加Cluster节点:

 配置Cluster Zookeeper Hosts信息:Zookeeper使用的地址--主机IP:2181,

其他根据需要配置即可。

注意:

如果是在云服务器上安装Kafka集群,把上面的本机IP地址切换成你的云服务器的内网IP即可,

亲测可行

参考博客:Windows10 Kafka Docker 集群搭建

                docker kafka 安装使用和可视化面板CMAK

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐