Dokcer / Docker Compose 安装 Kafka 并使用可视化工具(Kafka Tool)连接

573 阅读4分钟

在本地安装 Kafka 的时候如果手动进行安装,难免过程繁杂且浪费时间。不仅需要先手动安装 Zookeeper,然后再进行 Kafka 的安装。即使从 Kafka 2.8.0 版本开始已经不需要再安装 Zookeeper 就能运行 Kafka 了,但使用 Docker 无疑是更快的一种方式。

前提:本文使用 centos7 虚拟机,且虚拟机已安装好 Docker 和 Docker Compose。

配置阿里云 Docker 镜像

Docker 拉取一般需要配置国内的镜像,不然默认国外的仓库拉取速度会很慢。我们使用阿里云的镜像加速器,直接登录阿里云的容器镜像服务控制台(每个人登录后都有自己的地址):

image.png

直接将镜像加速器配置到 /etc/docker/daemon.json

{
    "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}

使用 Docker 进行安装

  1. 首先需要从 Docker 仓库拉取需要的镜像,这里我们使用的版本仍然是需要 Zookeeper 的。
docker pull zookeeper:3.8 
docker pull wurstmeister/kafka:2.13-2.8.1
  1. 创建 Zookeeper 容器
docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime zookeeper:3.8
  1. 创建 Kafka 容器,注意:其中的 ip 地址需要改成自己虚拟机的 ip 地址。
docker run  -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.110:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.110:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka:2.13-2.8.1

其中:KAFKA_ZOOKEEPER_CONNECT 指定 Zookeeper 的连接地址,KAFKA_LISTENERS 即 Kafka 的服务器监听地址和端口,这里表示监听所有的地址和端口。如果我们配置了 127.0.0.1:9092,那我们就能在这台虚拟机上使用命令行连接 kafka 服务器。

但是外部地址无法连接 kafka 的生产者消费者进行使用,要想外部机器能连接 Kafka 进行发信收信,还需配置KAFKA_ADVERTISED_LISTENERS 来表示外部机器可以使用这个地址来进行连接。

  1. 以上就完成了 Kafka 的安装,可以使用 docker logs + 容器名称 来查看容器的日志看是否运行成功。

使用 Docker Compose 进行安装

  1. 如果不想执行创建两次容器命令,可以直接使用 Docker Compose 来执行,在一个目录下创建好一个文件,固定名称为 docker-compose.yml,内容如下(一样记得更改对应的 ip 地址):
version: '3'

name: kafka-group

services:
  zookeeper-test:
    image: zookeeper:3.8
    ports:
      - "2181:2181"
    container_name: zookeeper-test

  kafka-test:
    image: wurstmeister/kafka:2.13-2.8.1
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: "0"
      KAFKA_ZOOKEEPER_CONNECT: "192.168.1.110:2181/myKafka"
      KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://192.168.1.110:9092"
      KAFKA_LISTENERS: "PLAINTEXT://0.0.0.0:9092"
    depends_on:
      - zookeeper-test
    container_name: kafka-test
  1. 在该目录下执行命令 docker compose up -d, 即安装启动了 Kafka。

额外说明

  1. 一些常用命令如下:
# 启动服务
docker compose up -d
# 如果文件名称不是默认的 docker-compose.yml,可以用 -f 指定对应的文件名称,下列命令一样,不赘述。
docker compose -f my_docker_file.yml up -d 

# 停止服务并删除容器
docker compose down

# 查看服务日志(实时)
docker compose logs -f

# 停止已运行的服务
docker compose stop
# 启动服务
docker compose start
# 重新启动容器
docker-compose restart
  1. 如果需要挂载对应的配置文件和数据可以使用 docker volume create + 数据卷名称,默认创建的位置在 /var/lib/docker/volumes 下。

  2. 为了避免 Kafka 的元数据在 Zookeeper 中太过分散,可以看到在上述 docker compose 的文件中的配置为:KAFKA_ZOOKEEPER_CONNECT: "192.168.1.110:2181/myKafka",这样的配置会把 Kafka 的元数据都放在 Zookeeper 的 myKafka 节点之下。可使用以下命令查看:

    • a. 进入 Zookeeper 容器:docker exec -it zookeeper-test /bin/bash
    • b. 进入对应的 Zookeeper 目录:cd /apache-zookeeper-3.8.4-bin/bin
    • c. 执行命令进入 Zookeeper 服务:./zkCli.sh,查看节点: image.png

测试 Kafka 进行消息发信收信

  1. 生产者,往主题 topic-test 发送消息:
# 进入容器
docker exec -it kafka-test /bin/bash 
cd /opt/kafka/bin 

# 启动 Producer 
sh kafka-console-producer.sh --broker-list localhost:9092 --topic topic-test
  1. 另外开一个窗口充当消费者
# 进入容器
docker exec -it kafka-test /bin/bash 
cd /opt/kafka/bin 

# 启动 Consumer
sh kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-test
  1. 生产者发送消息,消费者接受 image.png

使用 Kafka Tool 可视化工具连接 Kafka

  1. 官网 www.kafkatool.com/download.ht… 下载对应工具(改名 Offset Explorer 了)。我下载的是 2.3.5 版本。 image.png

  2. 安装后打开,创建新连接,填好 Kafka 所在虚拟机 ip 地址: image.png image.png

  3. 点击连接,打开 topic 主题选项,设置这个主题(topic-test)key 和 value 的显示序列化为 String(不然看到的是二进制字节数组): image.png

  4. 可以看到之前测试发送的消息: image.png

Kafak 配置和使用
  1. 详细使用和配置参考: kafka.apache.org/documentati…