本文介绍如何使用docker-compose一键部署kafka环境及对应的管理系统
docker及docker-compose的安装本文不做过多介绍
镜像
本文选取的镜像是wurstmeister/kafka
镜像地址:hub.docker.com/r/wurstmeis…
注意:kafka启动必须配合zookeeper一起使用,所以docker-compose中必须编排好zookeeper
docker-compose.yml 如下:
version: '3'
services:
zookeeper:
image: zookeeper
ports:
- 2181:2181
kafka1:
image: wurstmeister/kafka
container_name: kafka1
expose:
- "9999" # JMX-PORT 用于监控kafka集群
ports:
- "9093:9093"
- "9999:9999"
environment:
KAFKA_BROKER_ID: 0
KAFKA_NUM_PARTITIONS: 1
KAFKA_DEFAULT_REPLICATION_FACTOR: 1
KAFKA_ZOOKEEPER_CONNECT: 192.168.47.211:2181
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.47.211:9093
JMX_PORT: 9999
volumes:
- /home/ubuntu/kafka_data:/kafka
- /var/run/docker.sock:/var/run/docker.sock
请注意:jmx-port是用于监控kafka集群的,可以开启可以不开启,开启时,kafka管理工具能够检测到kafka处理数据的一些指标数据 kafka的数据存在于镜像内/kafka下
wurstmeister/kafka 镜像内基本信息
使用docker run -it wurstmeister/kafka /bin/bash 指令进入kafka镜像内部观察
kafka数据存在/kafka目录下,kafka相关配置以及可执行脚本存在/opt/kafka目录下。
当我们需要修改配置时,可以将配置文件映射至opt/kafka/config下
当我们需要将数据保存下次启动数据还在时,需要将镜像内/kafka文件夹映射出来。千万注意,如果你的kafka数据量巨大,一定要将数据映射到磁盘上,否则使用docker运行的kafka没有将数据映射则会保留在docker默认存储路径下,消耗系统盘空间。
kafka管理工具
kafka-manager用于管理kafka集群,同样也可以使用docker-compose直接启动kafka-manager环境,docker-compose文件如下
version: '3'
services:
kafka-manager:
image: sheepkiller/kafka-manager
container_name: kafka-manager
environment:
ZK_HOSTS: 192.168.47.211:2181
KAFKA_MANAGER_AUTH_ENABLED: "true"
KAFKA_MANAGER_USERNAME: admin
KAFKA_MANAGER_PASSWORD: meiyoumima
ports:
- 9000:9000
command: -Dpidfile.path=/dev/null
启动完毕可在浏览器9000端口访问,如下图所示:
查看某个topic相关信息
单机部署多个kafka节点
将注释部分放开即可
version: '3'
services:
zookeeper:
image: zookeeper
ports:
- 2181:2181
kafka1:
image: wurstmeister/kafka
container_name: kafka1
expose:
- "9999"
ports:
- "9093:9093"
- "9999:9999"
environment:
KAFKA_BROKER_ID: 0
KAFKA_NUM_PARTITIONS: 1
KAFKA_DEFAULT_REPLICATION_FACTOR: 1
KAFKA_ZOOKEEPER_CONNECT: 192.168.47.211:2181
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.47.211:9093
JMX_PORT: 9999
volumes:
- /media/yklab/2529aef8-5d05-4b05-9213-3eedbc132894/k_data:/kafka
- /var/run/docker.sock:/var/run/docker.sock
# kafka2:
# image: wurstmeister/kafka
# container_name: kafka2
# ports:
# - "9094:9094"
# environment:
# KAFKA_BROKER_ID: 1
# KAFKA_NUM_PARTITIONS: 1
# KAFKA_DEFAULT_REPLICATION_FACTOR: 1
# KAFKA_ZOOKEEPER_CONNECT: 192.168.47.211:2181
# KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9094
# KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.47.211:9094
# volumes:
# - /home/yklab/myraid0/kafka_data:/kafka
# - /var/run/docker.sock:/var/run/docker.sock
# kafka3:
# image: wurstmeister/kafka
# container_name: kafka3
# ports:
# - "9095:9095"
# environment:
# KAFKA_BROKER_ID: 2
# KAFKA_NUM_PARTITIONS: 1
# KAFKA_DEFAULT_REPLICATION_FACTOR: 1
# KAFKA_ZOOKEEPER_CONNECT: 192.168.47.211:2181
# KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9095
# KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.47.211:9095
# volumes:
# - /home/yklab/myraid0/kafka_data:/kafka
# - /var/run/docker.sock:/var/run/docker.sock
创作不易,踩坑不易,如果您觉得对您有帮助,请打赏一丢丢植发钱 爱你哟~