由于项目需要用到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

kafka-server

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命令即可启动。

kafka-manager

  然后登陆ip:9001即可进入kafka-manager图形化管理界面。

kafka-manager1

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-topic

  #列出所有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 当前已消费的条数 总条数
未消费的条数