Debian系统如何简化Kafka配置
小樊
43
2025-12-29 21:21:57
Debian上简化Kafka配置的可复制方案
一 单节点极简部署步骤
- 安装依赖并准备目录
- 安装 OpenJDK 11:sudo apt update && sudo apt install -y openjdk-11-jdk
- 创建专用用户与目录:sudo useradd -r -m -d /opt/kafka -s /sbin/nologin kafka;sudo mkdir -p /data/kafka/logs;sudo chown -R kafka:kafka /opt/kafka /data/kafka
- 下载并解压 Kafka(示例版本:3.6.1)
- wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
- tar -xzf kafka_2.13-3.6.1.tgz -C /opt/ && mv /opt/kafka_2.13-3.6.1 /opt/kafka
- 配置环境变量
- echo ‘export KAFKA_HOME=/opt/kafka’ | sudo tee -a /etc/profile
- echo ‘export PATH=$PATH:$KAFKA_HOME/bin’ | sudo tee -a /etc/profile
- source /etc/profile
- systemd服务(Kraft模式,免Zookeeper)
- 生成集群ID:KAFKA_CLUSTER_ID=$(/opt/kafka/bin/kafka-storage.sh random-uuid)
- 格式化存储:/opt/kafka/bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c /opt/kafka/config/kraft/server.properties
- 创建服务文件 /etc/systemd/system/kafka.service(见下文“最小配置清单”),然后:
- sudo systemctl daemon-reload && sudo systemctl enable --now kafka
- 快速自检
- 查看状态:systemctl status kafka
- 列出Topic:/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
- 创建测试Topic:/opt/kafka/bin/kafka-topics.sh --create --topic test --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
- 简单生产消费验证:/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test 与 /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
二 最小配置清单
- server.properties(Kraft,单节点最简可用)
- process.roles=broker,controller
- node.id=1
- controller.quorum.voters=1@localhost:9093
- listeners=PLAINTEXT://:9092,CONTROLLER://:9093
- listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
- inter.broker.listener.name=PLAINTEXT
- advertised.listeners=PLAINTEXT://你的服务器IP:9092
- log.dirs=/data/kafka/logs
- num.partitions=1
- default.replication.factor=1
- min.insync.replicas=1
- unclean.leader.election.enable=false
- kafka.service(systemd)
- [Unit]
- Description=Apache Kafka Server
- After=network.target
- [Service]
- Type=simple
- User=kafka
- Group=kafka
- ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
- ExecStop=/opt/kafka/bin/kafka-server-stop.sh
- Restart=on-failure
- [Install]
- WantedBy=multi-user.target
- 如需使用传统Zookeeper模式(不推荐,仅作兼容)
- server.properties 中设置:zookeeper.connect=localhost:2181
- systemd 服务单元 After=network.target zookeeper.service
三 常用简化命令脚本
- 一键启动/停止/重启
- sudo systemctl start|stop|restart kafka
- 创建Topic(开发环境)
- /opt/kafka/bin/kafka-topics.sh --create --topic demo --partitions 3 --replication-factor 1 --bootstrap-server localhost:9092
- 查看与自检
- /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
- /opt/kafka/bin/kafka-topics.sh --describe --topic demo --bootstrap-server localhost:9092
- /opt/kafka/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group your-group
- 日志查看
- journalctl -u kafka -f
- tail -f /opt/kafka/logs/server.log
四 安全与网络简化建议
- 仅内网使用时,保持 PLAINTEXT,将 advertised.listeners 设为内网 IP:9092,避免误用公网地址
- 需要加密与认证时,再启用 SASL/SSL(按需逐步开启,避免一次性引入过多参数)
- 示例(SASL/PLAIN,server.properties 片段):
- security.protocol=SASL_PLAINTEXT
- sasl.mechanism=PLAIN
- sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username=“admin” password=“admin-secret”;
- 示例(SSL,server.properties 片段):
- security.protocol=SSL
- ssl.keystore.location=/path/to/keystore.jks
- ssl.truststore.location=/path/to/truststore.jks
- 防火墙仅放行 9092(Kraft)与(若使用)2181(Zookeeper)
五 常见问题快速排查
- 远程连不上:确认 advertised.listeners 为服务器真实 IP 而非 localhost;云主机需放通安全组 9092
- 启动失败:检查 log.dirs 目录权限(属主 kafka:kafka)、端口是否被占用(ss -ltnp | grep 9092)
- 分区不足导致并行度不够:开发/测试可适当提高 num.partitions(如设为 3 或 6)
- 需要更可靠:在创建Topic时将 replication-factor≥3、min.insync.replicas=2,并开启 acks=all(生产环境推荐)