Kafka在CentOS上的配置技巧
导读:CentOS 上 Kafka 配置技巧与最佳实践 一 基础环境与安全网络 安装并验证 Java 8(Kafka 3.x 常用版本):sudo yum install java-1.8.0-openjdk-devel -y,java -ve...
CentOS 上 Kafka 配置技巧与最佳实践
一 基础环境与安全网络
- 安装并验证 Java 8(Kafka 3.x 常用版本):sudo yum install java-1.8.0-openjdk-devel -y,java -version 验证。
- 下载解压 Kafka(示例版本 3.5.2):wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz & & tar -xzf kafka_2.12-3.5.2.tgz -C /opt。
- 开放防火墙端口:firewall-cmd --zone=public --add-port=9092/tcp --permanent & & firewall-cmd --zone=public --add-port=2181/tcp --permanent & & firewall-cmd --reload。
- 外部访问必须正确设置 listeners 与 advertised.listeners,否则会出现能连上但无法生产/消费的情况。
- 生产建议:优先采用 KRaft 模式(Kafka ≥ 2.8.0)替代外部 Zookeeper,减少依赖与故障点。
二 关键配置 server.properties
- 基础唯一性与目录
- broker.id:每个 Broker 唯一(如 0、1、2)。
- log.dirs:日志目录(如 /var/lib/kafka/logs),确保磁盘与权限正确。
- 网络与对外可达
- listeners:监听地址与协议(如 PLAINTEXT://0.0.0.0:9092 或 SASL_PLAINTEXT://your_ip:9092)。
- advertised.listeners:对客户端“广告”的地址(云服务器请填 公网或内网可达 IP,不要用 127.0.0.1)。
- 主题与副本
- num.partitions:默认分区数(如 8)。
- default.replication.factor:默认副本因子(如 3,需满足 broker 数量)。
- 可靠性与一致性
- min.insync.replicas:建议设为 2(与 acks=all 配合,提高持久性)。
- unclean.leader.election.enable:建议 false,避免脏 leader 导致数据丢失。
- 示例片段
- broker.id=0
- listeners=PLAINTEXT://0.0.0.0:9092
- advertised.listeners=PLAINTEXT://your_server_ip:9092
- log.dirs=/var/lib/kafka/logs
- num.partitions=8
- default.replication.factor=3
- min.insync.replicas=2
- unclean.leader.election.enable=false
三 运行模式选择与部署
- KRaft 模式(推荐)
- 适用版本:Kafka ≥ 2.8.0;优势:去 Zookeeper、部署更简单、可用性更好。
- 思路:按官方步骤生成/配置 cluster.id,设置 process.roles=broker,controller 与 controller.quorum.voters,使用 –bootstrap-controller 启动。
- Zookeeper 模式(传统)
- 使用自带或外部 Zookeeper;server.properties 中配置 zookeeper.connect=zk_ip:2181。
- 注意:Zookeeper 仅用于元数据与协调,性能与运维复杂度高于 KRaft。
- 服务化与自启(systemd)
- 建议为 Zookeeper 与 Kafka 分别创建 systemd 单元,设置 User/Group、ExecStart/ExecStop、Restart=on-failure,并启用开机自启。
- 示例:/etc/systemd/system/kafka.service 与 zookeeper.service,启用命令:systemctl daemon-reload & & systemctl enable --now zookeeper kafka。
四 性能与安全优化
- 操作系统层面
- 降低 swap:vm.swappiness=1;适度提高文件描述符与内存映射:ulimit -n 655360,vm.max_map_count 调大(如 262144 或更高)。
- 存储与文件系统:优先 SSD;文件系统建议 XFS(大数据量场景表现更佳)。
- 网络:优化 TCP 缓冲区与内核网络参数(如 rmem/wmem 默认值与最大值)。
- JVM 与线程
- 堆大小:KAFKA_HEAP_OPTS=“-Xmx4G -Xms4G”(按内存与负载调整)。
- I/O 与网络线程:num.network.threads(如 3)、num.io.threads(如 8)。
- 生产者与消费者
- 生产者:增大 batch.size 与 linger.ms 提升吞吐;启用压缩(如 snappy)。
- 消费者:适当提高 fetch.max.bytes 与 max.poll.records,减少往返次数。
- 副本与可用性
- 监控 ISR 变化;调整 replica.lag.time.max.ms(如 60000 ms);谨慎设置 unclean.leader.election.enable=false。
- 认证与加密
- 启用 SASL/PLAIN 或 SSL:配置 listeners、security.inter.broker.protocol、sasl.enabled.mechanisms,并提供 JAAS 文件(通过 KAFKA_OPTS 指定)。
五 快速验证与常用命令
- 创建 Topic:
- bin/kafka-topics.sh --create --topic test --bootstrap-server your_ip:9092 --replication-factor 3 --partitions 3。
- 生产/消费测试:
- bin/kafka-console-producer.sh --topic test --bootstrap-server your_ip:9092
- bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server your_ip:9092
- 查看与诊断:
- 查看 Topic:bin/kafka-topics.sh --list --bootstrap-server your_ip:9092
- 消费组延迟:bin/kafka-consumer-groups.sh --bootstrap-server your_ip:9092 --describe --group group_id
- 进程检查:jps(应看到 Kafka/Zookeeper 进程)
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Kafka在CentOS上的配置技巧
本文地址: https://pptw.com/jishu/759173.html
