温馨提示×

centos kafka配置如何调整参数

小樊
36
2025-12-29 08:23:30
栏目: 智能运维

CentOS 上调整 Kafka 参数的实用步骤

一 操作前准备

  • 备份配置并选择合适版本:修改前先备份配置文件,例如 cp server.properties server.properties.bak;Kafka 2.8 之前依赖 Zookeeper,2.8+ 可使用 KRaft 模式摆脱 Zookeeper。
  • 安装 Java:建议 OpenJDK 8/11,执行 java -version 验证。
  • 目录与权限:为日志与数据目录(如 /var/lib/kafka)创建专用用户与权限,便于 systemd 管理与安全隔离。
  • 防火墙:开放端口(如 9092、Zookeeper 2181),或在内网安全组放行对应端口。

二 修改 server.properties 的关键参数

  • 基础网络与身份
    • broker.id:集群内唯一整数(每台 Broker 不同)。
    • listeners:Broker 监听地址,如 PLAINTEXT://0.0.0.0:9092SASL_PLAINTEXT://内网IP:9092
    • advertised.listeners:客户端实际连接的地址(NAT/云环境需填可被客户端访问的 IP/域名)。
    • 元数据与存储
      • zookeeper.connect:Zookeeper 地址(如 zk1:2181,zk2:2181,zk3:2181;KRaft 模式则配置 process.roles、controller.quorum.voters 等)。
      • log.dirs:日志目录(多盘用逗号分隔提升 IO 并行度)。
    • Topic 默认策略
      • num.partitions:新 Topic 默认分区数(按并发与并行度设定)。
      • default.replication.factor:默认副本因子(生产建议 ≥3)。
      • min.insync.replicas:写入需确认的最小副本数(需 副本因子,建议 2)。
    • 日志保留与段
      • log.retention.hours:保留时长(如 168 小时=7 天)。
      • log.segment.bytes:段大小(如 1GB)。
      • log.retention.check.interval.ms:检查间隔(如 300000ms)。

三 线程网络与磁盘 I O 调优

  • 线程与网络
    • num.network.threads:网络请求处理线程(常见 3–8,可按 CPU 核数微调)。
    • num.io.threads:磁盘 IO 线程(常见 8–16,磁盘多/快可上调)。
    • socket.send.buffer.bytes / socket.receive.buffer.bytes:网络缓冲(如 100KB 起,可按带宽与延迟调优)。
    • socket.request.max.bytes:单请求最大字节数(如 100MB)。
  • 磁盘与刷盘
    • 多磁盘:log.dirs 指定多个目录(如 /data1/kafka,/data2/kafka)提升吞吐。
    • 刷盘策略:log.flush.interval.messages / log.flush.interval.ms(权衡性能与持久性,批量场景可适当放宽)。

四 安全与 JVM 参数

  • SASL/PLAIN 认证示例
    • server.properties:
      • security.inter.broker.protocol=SASL_PLAINTEXT
      • sasl.enabled.mechanisms=PLAIN
      • sasl.mechanism.inter.broker.protocol=PLAIN
    • JAAS 文件(/opt/kafka/config/kafka_server_jaas.conf):
      • KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username=“admin” password=“admin-secret” user_admin=“admin-secret” user_producer=“producer-secret” user_consumer=“consumer-secret”; };
    • 启动前导出:export KAFKA_OPTS=“-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf”
  • JVM 堆与 GC
    • 建议堆大小不超过物理内存的 70%,如:export KAFKA_HEAP_OPTS=“-Xmx4G -Xms4G”(按内存与负载调整)。

五 应用变更与验证

  • 重启方式
    • 手动:bin/kafka-server-stop.sh && bin/kafka-server-start.sh config/server.properties
    • systemd:systemctl daemon-reload && systemctl restart kafka(建议配置为服务单元管理)
  • 验证
    • 端口监听:ss -lntp | grep 9092 或 netstat -tuln | grep 9092
    • 功能自检:创建测试 Topic、生产/消费消息,确认连通与权限
      • kafka-topics.sh --create --topic test_topic --bootstrap-server :9092 --partitions 3 --replication-factor 3
      • kafka-console-producer.sh --topic test_topic --bootstrap-server :9092
      • kafka-console-consumer.sh --topic test_topic --from-beginning --bootstrap-server :9092
  • 监控与系统优化
    • JMX:在启动脚本中导出 JMX_PORT=9999,配合 JConsole/Prometheus+Grafana 监控吞吐、延迟、请求耗时等
    • OS 优化:适当调大文件句柄与网络缓冲(如 fs.file-max、net.core.rmem_default/wmem_default、net.ipv4.tcp_rmem/wmem)、使用 XFS/noatime 挂载日志盘、必要时降低 vm.swappiness

0