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_ID | kafka集群中每个kafka都有一个BROKER_ID来区分自己 |
KAFKA_ADVERTISED_LISTENERS | kafka的地址和端口,用于向zookeeper注册 |
KAFKA_ZOOKEEPER_CONNECT | zookeeper地址 |
KAFKA_LISTENERS | kafka监听端口 |
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.
、