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.02.2 安装bitnami版(推荐)
BitNami是一个开源项目,该项目产生的开源软件包括安装 Web应用程序和解决方案堆栈,以及虚拟设备.
个人觉得使用bitnami的好处:
镜像文档在dockerhub介绍齐全,地址:https://hub.docker.com/r/bitnami/zookeeper
有配套的zk、kafka、还有控制台。
更新也跟官方同步
设置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以下两种方式解决:
修改服务名称为其他的,例如
kafka-server添加环境变量
KAFKA_PORT=9092
3.2 安装bitnami版
参数参考官方地址:https://hub.docker.com/r/bitnami/kafka
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
