Docker安装使用Kafka

打印 上一主题 下一主题

主题 1010|帖子 1010|积分 3030

通过Docker拉取镜像的方式进行安装
照例先去DockerHub找一下镜像源,看下官方提供的基本操作(大部分时候官方教程比网上的要清晰一些,并且大部分教程可能也是翻译的官方的操作步骤,所以直接看官方的就行)
老实说Kafka的参数配置项太多了,比较繁琐。
如果是Linux环境下打算直接用官方提供的docker-compose直接读取yml配置文件了
docker-compose.yml
  1. version: "3"
  2. services:
  3.   zookeeper:
  4.     image: 'bitnami/zookeeper:latest'
  5.     ports:
  6.       - '2181:2181'
  7.     environment:
  8.       - ALLOW_ANONYMOUS_LOGIN=yes
  9.   kafka:
  10.     image: 'bitnami/kafka:latest'
  11.     ports:
  12.       - '9092:9092'
  13.     environment:
  14.       - KAFKA_BROKER_ID=1
  15.       - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
  16.       - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
  17.       - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
  18.       - ALLOW_PLAINTEXT_LISTENER=yes
  19.     depends_on:
  20.       - zookeeper
复制代码
直接运行即可
  1. docker-compose up -d
复制代码
官网同时还提供了Kafka without Zookeeper (KRaft)的配置方式
WIn10可以在Docker容器内部通过挂载配置文件,继续用上面的方式,但我这里决定用繁琐的方式一步步来
拉取Zookeeper和Kafka镜像(可拉取最新版本,但我喜欢通过tags挑一个)
  1. docker pull zookeeper:3.8
  2. docker pull bitnami/kafka:3.1
复制代码
在Docker容器内创建网络(连通Zookeeper和Kafka)
app-tier:网络名称
–driver:网络类型为bridge
  1. docker network create app-tier --driver bridge
复制代码
启动Zookeeper节点
在Docker run命令里加上--network app-tier,让Zookeeper容器启动后连接上创建的网络(并且允许匿名登陆)
  1. docker run -d --name zookeeper-server --network app-tier -e ALLOW_ANONYMOUS_LOGIN=yes zookeeper:3.8
复制代码
启动kafka服务端
同样的方式,让Kafka服务端节点也连上这个网络
  1. docker run -d --name kafka-server --network app-tier -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 bitnami/kafka:3.1  
复制代码
注意:
KAFKA_ADVERTISED_HOST_NAME为当前主机IP或地址(重点:如果是服务器部署则配服务器IP或域名否则客户端监听消息会报地址错误)
kafka 节点启动后,会向 zookeeper 注册自己,同时告诉 zookeeper 自身的通信地址,这个地址就是配置文件中的 advertised.listeners,如果没有配置 advertised.listeners,就会使用listeners
启动Kafka客户端
Finally we create a new container instance to launch the Apache Kafka client and connect to the server created in the previous step:
  1. docker run -it --rm --network app-tier -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 bitnami/kafka:3.1 kafka-topics.sh --list --bootstrap-server kafka-server:9092
复制代码
Producer and consumer using external client
These clients, from the same host, will use localhost to connect to Apache Kafka.
  1. #生产者创建Topic
  2. kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 --topic test
  3. #消费者接收消息
  4. kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning
复制代码
最后发送个经典的Hello World做为测试
kafka-server

kafka-client

最后推荐一个kafka的图形化管理工具
kafka-map
  1. 访问地址:http://服务器IP:9001/  #端口号看自己喜好修改映射
  2. DEFAULT_USERNAME:默认账号admin
  3. DEFAULT_PASSWORD:默认密码admin
  4. GitHub地址:https://github.com/dushixiang/kafka-map/blob/master/README-zh_CN.md
  5. Gitee地址 https://gitee.com/dushixiang/kafka-map
复制代码
拉取镜像
  1. docker pull dushixiang/kafka-map:latest
复制代码
启动运行
  1. docker run -d --name kafka-map --network app-tier -p 9001:8080 -v /opt/kafka-map/data:/usr/local/kafka-map/data -e DEFAULT_USERNAME=admin -e DEFAULT_PASSWORD=admin --restart always dushixiang/kafka-map:latest
复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表