docker-compose部署kafka和kafka-eagle
创建自定义docker网络
docker network create kafkanetwork
创建目录
mkdir -pv /data/kafka/mysql/{data/logs}
cd /data/kafka
编写docker-compose
[root@centos kafka]# vim docker-compose.yml
version: '2'
services:
zookeeper:
image: zookeeper:3.8.1
container_name: zookeeper
restart: always
environment:
- ZOOKEEPER_CLIENT_PORT=2181
# 必须开启 允许匿名登录
- ALLOW_ANONYMOUS_LOGIN=yes
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime
ports:
- 2181:2181
networks:
- kafkanetwork
kafka:
image: bitnami/kafka:3.2.3
container_name: kafka
restart: always
environment:
- KAFKA_BROKER_ID=1
# 内部访问
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
# 外部访问 由于有端口冲突 指定为190092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.118:19092
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
# 是否启用kafka Raft 模式 默认是yes 要给关闭
- KAFKA_ENABLE_KRAFT=no
- JMX_PORT=9999
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime
ports:
- 19092:9092
- 9999:9999
depends_on:
- zookeeper
networks:
- kafkanetwork
mysql-kafka:
image: mysql:5.7
container_name: mysql-kafka
restart: always
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=ke
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime
- /data/kafka/mysql/data:/var/lib/mysql
- /data/kafka/mysql/logs:/var/log/mysql
networks:
- kafkanetwork
ports:
- 13306:3306
eagle:
image: rottenleaf/kafka-eagle:2.0.3
container_name: eagle
volumes:
- /data/kafka/system-config.properties:/kafka-eagle/conf/system-config.properties
environment:
- EFAK_CLUSTER_ZK_LIST=zookeeper:2181
# 所有的做时间同步宿主机 要不然会有时间问题
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime
depends_on:
- kafka
ports:
- 8048:8048
networks:
- kafkanetwork
networks:
kafkanetwork:
driver: bridge
kafka-eagle配置文件
[root@centos kafka]# vim system-config.properties
# 指定zookeeper
######################################
# multi zookeeper & kafka cluster list
######################################
kafka.eagle.zk.cluster.alias=cluster1
cluster1.zk.list=zookeeper:2181
######################################
# zookeeper enable acl
######################################
cluster1.zk.acl.enable=false
cluster1.zk.acl.schema=digest
cluster1.zk.acl.username=test
cluster1.zk.acl.password=test123
######################################
# broker size online list
######################################
cluster1.kafka.eagle.broker.size=10
######################################
# zk client thread limit
######################################
kafka.zk.limit.size=25
######################################
# kafka eagle webui port
######################################
kafka.eagle.webui.port=8048
######################################
# kafka jmx acl and ssl authenticate
######################################
cluster1.kafka.eagle.jmx.acl=false
cluster1.kafka.eagle.jmx.user=keadmin
cluster1.kafka.eagle.jmx.password=keadmin123
cluster1.kafka.eagle.jmx.ssl=false
cluster1.kafka.eagle.jmx.truststore.location=/Users/dengjie/workspace/ssl/certificates/kafka.truststore
cluster1.kafka.eagle.jmx.truststore.password=ke123456
######################################
# kafka offset storage
######################################
cluster1.kafka.eagle.offset.storage=kafka
cluster2.kafka.eagle.offset.storage=zookeeper
######################################
# kafka metrics, 15 days by default
######################################
kafka.eagle.metrics.charts=true
kafka.eagle.metrics.retain=15
######################################
# kafka sql topic records max
######################################
kafka.eagle.sql.topic.records.max=5000
######################################
# delete kafka topic token
######################################
kafka.eagle.topic.token=keadmin
######################################
# kafka sasl authenticate
######################################
cluster1.kafka.eagle.sasl.enable=false
cluster1.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster1.kafka.eagle.sasl.mechanism=SCRAM-SHA-256
cluster1.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka-eagle";
cluster1.kafka.eagle.sasl.client.id=
cluster1.kafka.eagle.blacklist.topics=
cluster1.kafka.eagle.sasl.cgroup.enable=false
cluster1.kafka.eagle.sasl.cgroup.topics=
cluster2.kafka.eagle.sasl.enable=false
cluster2.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster2.kafka.eagle.sasl.mechanism=PLAIN
cluster2.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka-eagle";
cluster2.kafka.eagle.sasl.client.id=
cluster2.kafka.eagle.blacklist.topics=
cluster2.kafka.eagle.sasl.cgroup.enable=false
cluster2.kafka.eagle.sasl.cgroup.topics=
######################################
# kafka ssl authenticate
######################################
cluster3.kafka.eagle.ssl.enable=false
cluster3.kafka.eagle.ssl.protocol=SSL
cluster3.kafka.eagle.ssl.truststore.location=
cluster3.kafka.eagle.ssl.truststore.password=
cluster3.kafka.eagle.ssl.keystore.location=
cluster3.kafka.eagle.ssl.keystore.password=
cluster3.kafka.eagle.ssl.key.password=
cluster3.kafka.eagle.blacklist.topics=
cluster3.kafka.eagle.ssl.cgroup.enable=false
cluster3.kafka.eagle.ssl.cgroup.topics=
# eagle 默认使用hadoop 存储信息
######################################
# kafka sqlite jdbc driver address
######################################
#kafka.eagle.driver=org.sqlite.JDBC
#kafka.eagle.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
#kafka.eagle.username=root
#kafka.eagle.password=www.kafka-eagle.org
# 我们使用MySQL 进行数据存储
######################################
# kafka mysql jdbc driver address
######################################
kafka.eagle.driver=com.mysql.jdbc.Driver
kafka.eagle.url=jdbc:mysql://192.168.0.118:13306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
kafka.eagle.username=root
kafka.eagle.password=123456