当前位置: 首页>开发笔记>正文

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

【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表示会消费历史消息,如果不配置,只能消费消费者节点上线之后生产者发送的消息。

https://www.zydui.com/af6b7V28CBARR.html
>

相关文章:

  • docker安装rabbitmq
  • k8s部署kafka集群
  • kafka部署安装
  • K8s kafka
  • docker集群部署
  • kafka docker
  • kafka搭建
  • kafka集群应用
  • IQVIA醫藥咨詢隨筆雜談
  • 爬取英雄聯盟英雄皮膚數據
  • 英雄聯盟 連接服務器失敗 請檢查您的網絡 是否啟用修復程序進行修復,英雄聯盟玩不了,提示未知的directx錯誤...
  • 三位千萬富翁告訴你:錢是怎么賺來的
  • 芳香之城傳奇的美麗神話故事
  • Solid Converter PDF注冊碼
  • 修改linux下面的字符集
  • 30個不可思議的好玩又實用的HTML5移動應用
  • 安卓新出病毒幽靈推,回顧android歷史上的那些吸費病毒
  • 游戲編程技術貼:AI設計的若干規則闡述
  • mac啟動自動運行程序_什么啟動了,為什么在我的Mac上運行?
  • 什么是UserEventAgent,它為什么在Mac上運行?
  • 蔚來汽車新財報超預期,短期或難盈利互聯網造車行不通嗎?
  • 車行的進貨問題
  • spring BeanFactory 家族介紹
  • 地址家族/名字解析
  • VS中怎么調出資源方案管理器
  • 告別低效工作,幫你重新找回工作的掌控感
  • 從Mac連接Windows共享打印機(1)
  • c4d流體插件_Cinema 4D 流體模擬插件 TurbulenceFD C4D v1.0 Build 1425 Win64
  • 經典生活總結語錄(搞笑欣賞)
  • 項目打包打的是什么包_早安打工人是什么梗,朋友圈打工人文案語錄表情包!...
  • 前端學習從入門到高級全程記錄之25(webapi)
  • 中職計算機應用普測考試試題及答案,2017職稱計算機考試WPS_Office檢測練習及答案9...
  • 微型計算機的主板又稱為,供電設計比7999元的主板還猛,ROG M11A主板首次亮相
  • webStorm使用斷點
  • 逆風翻盤?順豐大股東聯手本來集團上演O2O+B2C生鮮大戲
  • 三國志戰略版:Daniel_“坦克兵種”象兵分析
  • RISK-V品牌的中國化歷程(下)
  • 網游找call通殺方法之另辟蹊徑