首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Docker安装Kafka(docker-compose)、EFAK监控

Docker安装Kafka(docker-compose)、EFAK监控

作者头像
鱼找水需要时间
发布2023-02-16 17:05:52
发布2023-02-16 17:05:52
4K0
举报
文章被收录于专栏:SpringBoot教程SpringBoot教程

安装Docker

Docker安装mysql EFAK监控面板会用到

EFAK监控面板

容器安装

1、kafka需要zookeeper管理,所以需要先安装zookeeper。 (PS:2.8版本以后kafka-Kraft 模式不再依赖zk,目前别的很多组件都依赖zk注册,所以还是以zk举例)

2、下载zookeeper镜像

代码语言:javascript
复制
$ docker pull wurstmeister/zookeeper
$ docker pull wurstmeister/kafka

启动zk镜像生成容器

代码语言:javascript
复制
docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
$ 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镜像生成容器

代码语言:javascript
复制
## docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.16.0.13:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.13:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
$ 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=172.16.0.13:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.13: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=172.16.0.13:2181/kafka 配置zookeeper管理kafka的路径172.16.0.13:2181/kafka

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.13:9092 把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP,类如Java程序访问出现无法连接。

-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口

-v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间

3、验证kafka是否可以使用

代码语言:javascript
复制
$ docker exec -it kafka bash

进入 /opt/kafka_2.12-2.3.0/bin/ 目录下

代码语言:javascript
复制
$ cd /opt/kafka_2.12-2.3.0/bin/

运行kafka生产者发送消息

代码语言:javascript
复制
$ ./kafka-console-producer.sh --broker-list localhost:9092 --topic sun

发送消息

代码语言:javascript
复制
> hello world

运行kafka消费者接收消息

代码语言:javascript
复制
$ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sun --from-beginning

docker-compose

安装docker-compose

新建 /opt/mydocker/docker-compose.yml

代码语言:javascript
复制
version: "2"
 
services:  #服务名,也可自定义
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    expose:
      - "9999"
    ports:
      - "9092:9092"
      - "9999:9999"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 192.168.233.129
      KAFKA_ZOOKEEPER_CONNECT:  zookeeper:2181
      JMX_PORT: 9999  #启用远程JMX 监控面板用
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
代码语言:javascript
复制
docker-compose config -q  # 检查配置,有问题才有输出,进入docker-compose.yml文件目录执行
docker-compose up -d  # 启动所有docker-compose服务并后台运行
docker ps  # 查看容器

zookeeper查看节点

进入容器

代码语言:javascript
复制
docker exec -it 容器id或容器name bash
cd bin
./zkCli.sh
ls /

查看kafka集群节点

代码语言:javascript
复制
ls /brokers/ids
ls /brokers/topics

安装EFAK

官网下载

EFAK V2.0.7Kafka-Eagle 重命名为 EFAK(Eagle For Apache Kafka)

代码语言:javascript
复制
tar -zxvf kafka-eagle-bin-2.0.7.tar.gz
tar -zxvf efak-web-2.0.7-bin.tar.gz -C /opt/module/
mv efak-web-2.0.7/ efak

修改配置文件 /opt/module/efak/conf/system-config.properties

代码语言:javascript
复制
# 第一处
efak.zk.cluster.alias=cluster1
cluster1.zk.list=192.168.233.129:2181


# 第二处
######################################
# kafka offset storage
cluster1.efak.offset.storage=kafka
# cluster2.efak.offset.storage=zk


# 第三处
######################################
# kafka sqlite jdbc driver address
######################################
# sqlite 和 mysql 都可以
######################################
# kafka mysql jdbc driver address
######################################
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://192.168.233.129:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=123456

添加环境变量

代码语言:javascript
复制
sudo vim /etc/profile.d/my_env.sh
# kafkaEFAK
export KE_HOME=/opt/module/efak
export PATH=$PATH:$KE_HOME/bin
代码语言:javascript
复制
source /etc/profile

先启动zk和kafka

代码语言:javascript
复制
# 启动kafka-eagle
bin/ke.sh start

记得开放端口

代码语言:javascript
复制
#查看进程,启动失败控制台不会报错,只能去看日志
 ps -ef|grep efak

遇到情况:内存不足。最少2个G内存

容器编排启动时,Kafka命令行操作报错

进入/opt/kafka_2.13-2.8.1/bin

加一句

代码语言:javascript
复制
ISKAFKASERVER="false"
if [[ "$*" =~ "kafka.Kafka" ]]; then
    ISKAFKASERVER="true"
fi

改动这一行

代码语言:javascript
复制
if [  $JMX_PORT ] && [ -z "$ISKAFKASERVER" ]; then

参考1

参考2

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 容器安装
  • docker-compose
  • zookeeper查看节点
  • 安装EFAK
  • 容器编排启动时,Kafka命令行操作报错
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档