• 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

  • 相关阅读:
    「Android」浅析viewBinding和DataBinding
    【C++】静态库.a和动态库.so文件的生成和使用
    反诈中心拦截网站域名措施与申诉方法
    【Jvm】性能调优(上)线上问题排查工具汇总
    通用密钥,无需密码,在无密码元年实现Passkeys通用密钥登录(基于Django4.2/Python3.10)
    在vmware中给linux添加硬盘
    helm的使用
    这些专业配音软件你值得拥有
    散列表的查找
    云数一体机
  • 原文地址:https://blog.csdn.net/qq_37144341/article/details/125441952