KCenter
KCenter copied to clipboard
[新增功能]不支持无zk版本和启用了SSL的kafka
kafka版本 : 3.9.0 没有安装ZK,因为高版本kafka已经有kraft,不需要ZK了。 另外,kafka启用了SSL。 在Kcenter的集群-新增集群界面,ZK为必填,同时也无法指定客户端证书
已确认问题,等待开发
当前环境:
- CentOS 7.x(所有节点)
- 内存:4GB+ 每个节点
- Java 17(所有节点)
- kafka 3.9.1
Kafka 从2.8.0版本开始引入了KIP-500,开始支持在没有ZooKeeper的情况下运行,这种模式称为Kafka Raft Metadata (KRaft)模式。在3.9版本中,KRaft模式已经正式发布,可以用于生产环境。但是,传统的基于ZooKeeper的模式仍然被支持。
因此,kafkaCenter 管理界面需要优化,可以选择KRaft和zk 逻辑控制,很期待看到这样的新版本变化
我当前部署方式为docker 容器
docker-compose.yaml
version: '3.8'
services:
# MySQL 服务(供 KafkaCenter 存储元数据)
mysql:
image: mysql:8.0
container_name: kafkacenter-mysql
environment:
MYSQL_ROOT_PASSWORD: root123 # 根密码
MYSQL_DATABASE: kafkacenter # 自动创建数据库
MYSQL_USER: kcuser # 自定义用户
MYSQL_PASSWORD: kcpwd # 用户密码
volumes:
- $PWD/mysql/data:/var/lib/mysql # 持久化 MySQL 数据
- $PWD/mysql/init:/docker-entrypoint-initdb.d
ports:
- "3306:3306"
restart: always
networks:
- kc-network
kafkacenter:
image: xaecbd/kafka-center:2.3.0
container_name: kafkacenter
ports:
- "9000:8080" # kafkacenter 默认端口8080
environment:
# 连接上面的 MySQL 容器(使用容器名作为主机名)
SPRING_DATASOURCE_URL: "jdbc:mysql://mysql:3306/kafkacenter?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"
SPRING_DATASOURCE_USERNAME: kcuser
SPRING_DATASOURCE_PASSWORD: kcpwd
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.cj.jdbc.Driver # MySQL 驱动(镜像内置)
# Kafka 集群配置(保持不变)
KAFKA_CLUSTER_CONFIG: |
[
{
"clusterName": "MyKRaftCluster",
"bootstrapServers": "node1:9092,node2:9092,node3:9092",
"offsetStore": "kafka",
"securityProtocol": "PLAINTEXT",
"jmxEnabled": "true",
"jmxUser": "",
"jmxPassword": ""
}
]
volumes:
- $PWD/kafkacenter/db:/data/db
- $PWD/kafkacenter/config:/config
restart: always
depends_on:
- mysql # 确保 MySQL 启动后再启动 KafkaCenter
networks:
- kc-network # 加入同一网络
# 自定义网络,使服务间可通过容器名通信
networks:
kc-network:
driver: bridge