• Linux环境Docker中搭建Kafka


    公司某个数据项目要利用Kafka做数据分发,所以整理了下在centos中利用docker搭建kafka的步骤,根据步骤操作半小时内就能搭建完成~

    一、搭建zookeeper环境

    
    1)docker pull wurstmeister/zookeeper	# 拉取zookeeper镜像
    2)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	# 创建zookeeper容器
    
    
    • 1
    • 2
    • 3
    • 4

    二、创建kafka环境

    1)docker pull wurstmeister/kafka
    2)docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.244.132/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.244.132:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
     
    参数说明:
    -e KAFKA_BROKER_ID=0  在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
     
    -e KAFKA_ZOOKEEPER_CONNECT=192.168.244.132:2181/kafka 配置zookeeper管理kafka的路径172.16.0.13:2181/kafka
     
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.244.132:9092  把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP,类如Java程序访问出现无法连接。
     
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口
     
    -v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间
     
    5、验证kafka是否可以使用
     
    5.1、进入容器
    $ docker exec -it kafka bash
     
    5.2、进入 /opt/kafka_2.12-2.3.0/bin/ 目录下
    $ cd /opt/kafka_2.12-2.3.0/bin/
     
    5.3、运行kafka生产者发送消息
    $ ./kafka-console-producer.sh --broker-list localhost:9092 --topic sun
     
    发送消息
    > {"datas":[{"channel":"","metric":"temperature","producer":"ijinus","sn":"IJA0101-00002245","time":"1543207156000","value":"80"}],"ver":"1.0"}
     
    5.4、运行kafka消费者接收消息
    $ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sun --from-beginning
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    1、fafka启动后,通过docker exec -it kafka bash进入后,不一会儿,自动退出来了。
    【问题原因】启动容器设置了--restart=always,通过日志发现启动失败,一直在重启。并指向host不可达。
    image.png
    【解决方案】关闭防火墙
    systemctl stop firewalld
    2、关闭防火墙后重启container失败
    docker start 8dfac2df549c
    Error response from daemon: driver failed programming external connectivity on endpoint kafka (2bb0b0d19ea751146218f99d3f496db714dd0bc19105663b71fc56f65ebb0592): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9092 -j DNAT --to-destination 172.17.0.3:9092 ! -i docker0: iptables: No chain/target/match by that name
     
    【问题原因】关闭防火墙可能会清空iptables表,需要重建
    【解决方案】重启docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    三、验证kafka是否正确安装

    进入到kafka容器中 并创建topic 生产者,执行如下命令:

    1)docker exec -it kafka bash
    2)cd /opt/kafka_2.11-2.0.0/bin/
    3)./kafka-topics.sh --create --zookeeper 自己服务器IP:2181/kafka --replication-factor 1 --partitions 1 --topic mykafka
    4)./kafka-console-producer.sh --broker-list 自己服务器IP:9092 --topic mykafka
    
    • 1
    • 2
    • 3
    • 4

    执行上诉命令后,另起一个标签页,执行如下命令 创建kafka消费者消费消息:

    1)docker exec -it kafka bash
    2)cd /opt/kafka_2.11-2.0.0/bin/
    3)./kafka-console-consumer.sh --bootstrap-server 自己服务器IP:9092 --topic test --from-beginning
    
    • 1
    • 2
    • 3

    执行完上诉命令后,在生产者窗口中 输入任意内容回车,即可在消费者的窗口查看到消息

    四、安装kafka可视化管理软件Kafka Tool

    下载地址
    http://www.kafkatool.com/download.html

    在这里插入图片描述
    下载下来后,一键安装即可。

    另有web可视化平台:kafka-manager、kafka-ui-lite

  • 相关阅读:
    腾讯云 TStor 统一存储通过信通院首批文件存储基础能力评测
    CSDN21天学习挑战赛 - 第四篇打卡文章
    GEE遥感云大数据林业应用典型案例实践及GPT模型应用
    Qt无边框设计
    list.stream().forEach()和list.forEach()的区别
    机器学习作业-交通流量预测综述
    如何一步步优化负载均衡策略
    【input系统】MotionEvent的分解
    【docker】dockerfile优化镜像大小
    健效达海豚妈妈儿保项目推介会盛大启幕,聚焦互联网+精准医疗
  • 原文地址:https://blog.csdn.net/qq_37144341/article/details/125441952