Skip to content

kafka安装

docker安装

一、环境介绍

使用docker安装,由于kafka需要依赖zookeeper进行节点管理,所以在安装kafka之前必须安装zookeeper,而kafka本身没有控制台,需要安装一个控制台ui的程序。

控制台ui程序选择:

  • 雅虎的cmak:cmak是雅虎开源的kafka控制台,但是很久没有更新。

github地址:https://github.com/yahoo/cmak

  • 滴滴的LogiKM:滴滴开源的一个kafka控制台

github地址:https://github.com/didi/LogiKM

  • kafka-map:一个开源的kafka界面管理工具,推荐

github地址:https://github.com/dushixiang/kafka-map

二、安装zookeeper

2.1 安装官方镜像

一个日志映射卷,一个数据映射卷

docker run -d --name zookeeper -p 2181:2181 -v /software/zookeeper/datalog:/datalog -v /software/zookeeper/data:/data --restart=unless-stopped zookeeper:3.8.0

2.2 安装bitnami版(推荐)

BitNami是一个开源项目,该项目产生的开源软件包括安装 Web应用程序和解决方案堆栈,以及虚拟设备.

个人觉得使用bitnami的好处:

  1. 镜像文档在dockerhub介绍齐全,地址:https://hub.docker.com/r/bitnami/zookeeper

  2. 有配套的zk、kafka、还有控制台。

  3. 更新也跟官方同步

设置zookeeper连接的账号密码

docker run -d --name zookeeper -p 2181:2181 \
-v /software/zookeeper:/bitnami/zookeeper -e ZOO_ENABLE_AUTH=yes \
               -e ZOO_SERVER_USERS=user1,user2 \
               -e ZOO_SERVER_PASSWORDS=pass4user1,pass4user2 \
               -e ZOO_CLIENT_USER=user1 \
               -e ZOO_CLIENT_PASSWORD=pass4user1 \  --restart=unless-stopped bitnami/zookeeper:3.8.0

三、安装kafka

3.1 安装常用镜像

这个镜像在别的博客推荐的,通过link连接zookeeper,注意ip地址,这里用的是本机的ip

docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper -e HOST_IP=192.168.1.108 -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 -e KAFKA_ADVERTISED_HOST_NAME=192.168.1.108 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.23:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e KAFKA_AUTO_CREATE_TOPICS_ENABLE=true -v /var/run/docker.sock:/var/run/docker.sock -v /software/kafka:/kafka --restart=unless-stopped  wurstmeister/kafka:2.13-2.8.1

参数说明:

  • KAFKA_BROKER_ID=0 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己

  • KAFKA_ZOOKEEPER_CONNECT=10.9.44.11:2181/kafka 配置zookeeper管理kafka的路径10.9.44.11:2181/kafka

  • KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.9.44.11:9092 把kafka的地址端口注册给zookeeper

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

  • KAFKA_AUTO_CREATE_TOPICS_ENABLE=true 是否自动创建topic

  • TZ= Asia/Shanghai 时区

如果使用的是rancher安装,报了以下错误:

Invalid value tcp://10.43.115.36:9092 for configuration port: Not a number of type INT

以下两种方式解决:

  1. 修改服务名称为其他的,例如 kafka-server

  2. 添加环境变量 KAFKA_PORT=9092

3.2 安装bitnami版

参数参考官方地址:https://hub.docker.com/r/bitnami/kafka

console
docker run -d --name kafka-server \
    --network app-tier \
    -e ALLOW_PLAINTEXT_LISTENER=yes \
    -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 \
    bitnami/kafka:3.8.0

开头的环境变量KAFKA_CFG_都将映射到其对应的 Apache Kafka 密钥

  • KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 zk地址

  • KAFKA_ZOOKEEPER_USER zk账号

  • KAFKA_ZOOKEEPER_PASSWORD zk密码

  • ALLOW_PLAINTEXT_LISTENER=yes

  • KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT 安全类型

  • KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093 暴露的地址

  • KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka:9092,EXTERNAL://localhost:9093 如果要暴露给外网,localhost改成主机ip

  • KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT

  • KAFKA_CLIENT_USERS=user 使用 SASL 进行客户端通信时将创建到 Zookeeper 中的用户。被逗号隔开。默认值:用户

  • KAFKA_CLIENT_PASSWORDS=bitnami 在 中指定的用户的密码KAFKA_CLIENT_USERS。被逗号隔开。默认值:bitnami