当前位置: 首页 > news >正文

【Kafka】Docker安装kafka、搭建kafka集群

kafka官方文档:https://kafka.apache.org/documentation/#quickstart
我们都知道kafka3.0之前依赖于zookeeper(zk)管理其中的元数据,因此在安装kafka之前先安装zk。

docker pull wurstmeister/zookeeper 

启动zk服务:

docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2  --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper

安装kafka:目前kafka的docker镜像主要是两个版本:wurstmeister/kafkabitnami/kafka ,本次选用的是后者。

# bitnami/kafka
docker pull bitnami/kafka:latest
# wurstmeister/kafka
docker pull wurstmeister/kafka

启动kafka服务:

sudo docker run -d  --privileged=true \
--name kafka0 -p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=IP:2181 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://IP:9092 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
bitnami/kafka:latest

参数解释:

-d :后台运行
–privileged:使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
-p:暴露端口,-p 9092:9092 将容器内部的9092端口映射到宿主机的端口上。
– name 当前容器的名字。
KAFKA_BROKER_ID : broker的ID,这个ID是集群的标识,不能重复。
KAFKA_ZOOKEEPER_CONNECT:zookeeper的连接地址
KAFKA_LISTENERS:标识kafka服务运行在容器内的9092端口,因为没有指定host,所以是0.0.0.0标识所有的网络接口。
KAFKA_ADVERTISED_LISTENERS:kafka发布到zookeeper供客户端使用的服务地址。
ALLOW_PLAINTEXT_LISTENER :允许使用PLAINTEXT侦听器。

如果需要进行目录挂载,则使用下面的命令(注意一个服务只能挂载一个目录)

-v /usr/kafka/data:/bitnami/kafka/data 
-v /usr/kafka/config:/bitnami/kafka/config 
# /usr/kafka/data是宿主机的目录,/bitnami/kafka/data  是容器内的目录,data做数据映射,config做配置文件映射

按照上面的命令,我们只需要修改nameportbrokerid就能搭建多个kafka服务,为了简单,zookeeper这里就只搭建了一台,而kafka搭建了三台,最终的集群规模如下:

nameportbrokerid
kafka090920
kafka190931
kafka290942

搭建完成后我们可以使用docker ps命令查看服务是否真的启动了:

sudo docker ps

如果你的服务启动异常,docker ps不能查看到,这时候就需要我们进行问题排查了,可以查看docker容器日志:

命令格式:docker logs [OPTIONS] CONTAINER
OPTIONS说明:
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
如:docker logs --since="2022-09-01" --tail=10 kafka0

启动完成之后,我们可以进入容器中使用命令验证
进入容器命令:

docker exec -it kafka /bin/bash

kafka的各个脚本都在:/opt/bitnami/kafka/bin下面,如kafka-topics.shkafka-console-consumer.sh
创建主题(可指定分区数、副本数…):

/opt/bitnami/kafka/bin/kafka-topics.sh --create --topic test-kafka0 --replication-factor 3 --partitions 3 --bootstrap-server IP:9092
# 参数解释
--create 表示创建
--topic 指定主题名称
--replication-factor 指定副本数
partitions 指定分区数
--bootstrap-server 连接kafka服务器

查看主题的描述信息(分区、副本、Leader…):

/opt/bitnami/kafka/bin/kafka-topics.sh --describe --topic test-kafka0 --bootstrap-server IP:9092
# 参数解释
--describe 表示查看描述信息

生产者生产消息:

/opt/bitnami/kafka/bin/kafka-console-producer.sh --topic test-kafka0 --bootstrap-server IP:9092

另外进入一个容器,如进入kafka1中进行消费:

/opt/bitnami/kafka/bin/kafka-console-consumer.sh --topic test-kafka0 --from-beginning --bootstrap-server IP:9092

其中,--from-beginning表示会消费历史消息,如果不配置,只能消费消费者节点上线之后生产者发送的消息。

相关文章:

  • 4.【Linux虚拟机】创建自己的docker image并提供后端服务
  • 基于STFT和卷积神经网络的时序数据分类 代码+数据 可直接运行
  • 神经网络建模的适用范围,神经网络建模流程详解
  • 实名核验类API推荐
  • cmakelist.txt , cmake, makefile, make 【超快区分理解】
  • 【去雾论文阅读】Saturation Based Iterative Approach for Single Image Dehazing
  • 机器学习:详细推导序列最小优化SMO算法+Python实现
  • Flask 学习-20. route 路由中的 endpoint 参数
  • bp神经网络反向传播推导,bp神经网络的传递函数
  • Flask 学习-21. 项目配置通过.env环境变量启动开发/生产环境
  • 图像识别和机器视觉区别,比较两幅图像的相似度
  • Jetson Orin平台Jetpack5.0.2 VIFALC_TDSTATE问题调试
  • Elastic search的日期问题
  • DOM基础应用
  • 足疗APP
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 2017-08-04 前端日报
  • input实现文字超出省略号功能
  • Java IO学习笔记一
  • JavaScript DOM 10 - 滚动
  • javascript 总结(常用工具类的封装)
  • js作用域和this的理解
  • leetcode-27. Remove Element
  • python3 使用 asyncio 代替线程
  • vuex 笔记整理
  • 初探 Vue 生命周期和钩子函数
  • 第2章 网络文档
  • 高性能JavaScript阅读简记(三)
  • 使用权重正则化较少模型过拟合
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #WEB前端(HTML属性)
  • $.proxy和$.extend
  • (1)Android开发优化---------UI优化
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (分布式缓存)Redis哨兵
  • (附源码)计算机毕业设计大学生兼职系统
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (十六)Flask之蓝图
  • (一)Neo4j下载安装以及初次使用
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转) ns2/nam与nam实现相关的文件
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .net Application的目录
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET Project Open Day(2011.11.13)
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NetCore部署微服务(二)