最近项目中,用到了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