由于项目需要用到kafka,所以就研究了下kafka的一些基本操作以及环境的安装配置。本次讲解的是Docker环境下的安装步骤。其中kafka主要包括两个组件,一个是kafka的主程序server端,另一个是kafka的管理manager端。另外还需要zookeeper做前提支持。
1.安装zookeeper
本次安装的zookeeper采用的是单节点运行,zookeeper也可以设置集群。
#单节点运行
docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper
2.安装kafka-server端
kafka-server端采用docker方式安装。并且为了后续的持久化运作设置了挂载目录。
#kafka挂载目录数据持久化安装
docker run --name kafka -t --restart=always \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=172.31.96.56:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.31.96.56:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-v /etc/localtime:/etc/localtime \
-v /home/kafka/data:/kafka \
-d wurstmeister/kafka:latest
#说明
kafka的端口设为9092,BROKER_ID为0(后续可设置集群),内网IP为172.31.96.56,挂载目录为/home/kafka/data,时间同步为/etc/localtime
3.安装kafka-manager端
kafka-manager端我们采用docker-compose的方式安装(其实zookeeper,kafka,kafka-manager这三个都可以一起采用docker-compose方式安装更为简便,这里不过多介绍)。
#使用docker-compose启动kafka-manager
cd /home/kafka
vi docker-compose.yml
#docker-compose.yml里面添加如下内容
version: '3.1'
services:
kafka-manager:
container_name: kafka-manager
image: xuxiangwork/kafka-manager
ports:
- "9001:9000"
environment:
ZK_HOSTS: 172.31.10.220:2181
APPLICATION_SECRET: 应用密码
KAFKA_MANAGER_AUTH_ENABLED: "true"
KAFKA_MANAGER_USERNAME: 账户
KAFKA_MANAGER_PASSWORD: 密码
restart: always
最后使用docker-compose up -d命令即可启动。
然后登陆ip:9001即可进入kafka-manager图形化管理界面。
4.kafka的相关配置操作
#首先进入kafka容器
docker exec -it kafka bash
#切换到kafka所在的目录
cd /opt/kafka_2.12-2.4.0/
#创建topic
/opt/kafka/bin/kafka-topics.sh --create --bootstrap-server 172.31.10.220:9092 --replication-factor 1 --partitions 1 --topic suk1da
#列出所有topics (在本地kafka路径下)
kafka-topics.sh --zookeeper 172.31.10.220:2181 --list
#列出所有Kafka brokers
docker exec zookeeper bin/zkCli.sh ls /brokers/ids
#接受消费者信息
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 172.31.10.220:9092 --topic suk1da --from-beginning
#查看消费者消费情况
/opt/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 172.31.10.220:9092 --group bigdata --describe | grep -E "topic|suk1da"
#其中
GROUP TOPIC PID OFFSET LOGSIZE
LAG
消费者组 话题id 分区id 当前已消费的条数 总条数
未消费的条数