Kafka服务器搭建核心为环境准备、服务安装、安全加固和启动管理四步:推荐KRaft无ZooKeeper模式,需JDK 8/11,配置process.roles、生成UUID并format目录,叠加SSL单向认证、SCRAM用户认证与ACL权限控制,最后通过jps、kafka-topics等命令验证运行。

Kafka 服务器搭建与配置,核心在于环境准备、服务安装、安全加固和启动管理四步。当前主流推荐使用 KRaft 模式(无 ZooKeeper),尤其适合单机测试或轻量级生产场景;若需高可用集群,仍可沿用 ZooKeeper 模式,但 KRaft 更简洁、运维负担更低。
Java 环境与基础依赖必须到位
Kafka 运行在 JVM 上,JDK 是硬性前提:
- 推荐 OpenJDK 8 或 11(避免 JDK 17+ 在旧版 Kafka 中的兼容问题)
- 验证命令:
java -version,输出应为openjdk version "1.8.0_XXX"或类似 - 若系统多版本共存,用
alternatives --config java切换默认 JDK - CentOS/Ubuntu 可直接安装:
sudo yum install -y java-1.8.0-openjdk-devel # CentOS sudo apt install -y openjdk-8-jdk-headless # Ubuntu
KRaft 模式单机部署(推荐新手首选)
跳过 ZooKeeper,直接启用 Kafka 自带的元数据管理机制:
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
- 下载 Kafka 3.9+(如
kafka_2.13-3.9.2.tgz),解压到/opt/kafka - 创建数据目录并授权:
sudo mkdir -p /data/kafka/logs /data/kafka/data sudo chown -R $USER:$USER /data/kafka /opt/kafka
- 修改配置文件
/opt/kafka/config/kraft/server.properties:process.roles=broker,controllernode.id=1controller.quorum.voters=1@localhost:9093listeners=PLAINTEXT://:9092,CONTROLLER://:9093advertised.listeners=PLAINTEXT://localhost:9092log.dirs=/data/kafka/data
- 生成集群 ID 并格式化存储目录:
bin/kafka-storage.sh random-uuid # 得到一串 UUID bin/kafka-storage.sh format -t <UUID> -c config/kraft/server.properties
- 启动服务:
bin/kafka-server-start.sh -daemon config/kraft/server.properties
SSL + SCRAM + ACL 安全增强(生产环境必备)
仅开启 PLAINTEXT 协议不适用于真实业务,三层防护建议按序叠加:
-
SSL 单向认证:客户端验证服务端证书(无需双向)
- 用
keytool生成kafka.keystore.jks和kafka.truststore.jks - 在
server.properties中启用:listeners=SSL://:9093 ssl.keystore.location=/opt/kafka/ssl/kafka.keystore.jks ssl.keystore.password=123456 ssl.key.password=123456 ssl.truststore.location=/opt/kafka/ssl/kafka.truststore.jks ssl.truststore.password=123456
- 用
-
SCRAM-SHA-256 用户认证:
- 创建用户(如
admin):bin/kafka-configs.sh --bootstrap-server localhost:9093 \ --add-config 'SCRAM-SHA-256=[password=admin123]' \ --entity-type users --entity-name admin --alter
- 创建用户(如
-
ACL 权限控制:
- 允许
admin对所有 topic 读写:bin/kafka-acls.sh --bootstrap-server localhost:9093 \ --add --allow-principal "User:admin" \ --operation read --operation write --topic "*" --group "*" \ --cluster
- 启用 ACL 必须在
server.properties中添加:authorizer.class.name=kafka.security.authorizer.AclAuthorizer allow.everyone.if.no.acl.found=false
- 允许
验证与日常管理要点
- 查看服务是否运行:
jps | grep Kafka或ps aux | grep kafka-server-start - 创建测试 topic:
bin/kafka-topics.sh --create --topic test --partitions 1 --replication-factor 1 \ --bootstrap-server localhost:9093
- 发送/消费消息(带 SASL/SSL):
bin/kafka-console-producer.sh --topic test --bootstrap-server localhost:9093 \ --producer-property security.protocol=SSL \ --producer-property ssl.truststore.location=... \ --producer-property sasl.mechanism=SCRAM-SHA-256 \ --producer-property sasl.jaas.config="org.apache.kafka.common.security.scram.ScramLoginModule required username='admin' password='admin123';"
- 日志路径默认为
/opt/kafka/logs/,重点关注server.log和kafkaServer.out
不复杂但容易忽略


















