使用docker安装kafka(结合ZK)

887 阅读2分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

docker安装Kafka(结合ZK)

一、docker安装zookeeper

由于kafka需要依赖于zookeeper,因此这里先运行zookeeper

1.拉取zookeeper镜像

docker pull wurstmeister/zookeeper

2.启动zookeeper

docker run -d --name zookeeper -p 2181:2181 -e TZ="Asia/Shanghai" --restart always wurstmeister/zookeeper

3.查看zookeeper的启动信息

docker logs -f zookeeper

在这里插入图片描述

二、拉取Kafka

1、拉取镜像

docker pull wurstmeister/kafka

2.启动kafka

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=<这里换成你的zookeeper地址和端口> -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<这里换成你的kafka地址和端口> -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e TZ="Asia/Shanghai" wurstmeister/kafka

启动环境变量参数说明

变量描述
KAFKA_BROKER_IDkafka集群中每个kafka都有一个BROKER_ID来区分自己
KAFKA_ADVERTISED_LISTENERSkafka的地址和端口,用于向zookeeper注册
KAFKA_ZOOKEEPER_CONNECTzookeeper地址
KAFKA_LISTENERSkafka监听端口
TZ容器时区改为上海

3.验证kafka是否可以使用

进入容器
docker exec -it kafka /bin/sh

进入路径:/opt/kafka_2.13-2.7.0/bin下

运行kafka生产者发送消息

./kafka-console-producer.sh --broker-list localhost:9092 --topic test

发送消息

在这里插入图片描述

另开窗口消费者消费消息

在这里插入图片描述

三、安装kafka-manager

1.拉取镜像

docker pull sheepkiller/kafka-manager

2.启动kafka-manager

docker run -d --name kfk-manager --restart always -p 9000:9000 -e ZK_HOSTS=<这里换成你的zookeeper地址和端口> sheepkiller/kafka-manager

在这里插入图片描述

启动后通过地址访问:<你的manager运行地址>:9000

在这里插入图片描述

点击Cluster->Add Cluster->填写zookeeper地址便可看到如下:

在这里插入图片描述

四、关键点

进入zookeeper容器内,可以看到kafka注册信息

docker exec -it zookeeper /bin/sh

在这里插入图片描述

运行zkCli.sh进入zookeeper客户端,可观察到

在这里插入图片描述

查看注册的kafka目录,
ls /kafka/brokers/topics/sun/partitions 

可看到创建的topic为test的partitions信息

在这里插入图片描述

get命令会显示该节点的节点数据内容和属性信息

在这里插入图片描述

ls2命令会显示该节点的子节点信息和属性信息

在这里插入图片描述

创建Topic

通过命令行创建topic和partitions
kafka-topics.sh --create --zookeeper 192.168.1.4:2181/kafka --topic topic-test1 --replication-factor 1 --partitions 2

在这里插入图片描述

删除Topic

delete.topic.enable=true 直接彻底删除该 Topic。

若 delete.topic.enable=false
如果当前 Topic 没有使用过即没有传输过信息:可以彻底删除。
如果当前 Topic 有使用过即有过传输过信息:并没有真正删除 Topic 只是把这个 Topic 标记为删除(marked for deletion),重启 Kafka Server 后删除。

我的kafka版本是最新的,在service.config文件中是找不到delete.topic.enable=true,系统默认是true.