centos

kafka在centos怎样配置最佳

小樊
46
2025-10-22 00:25:15
栏目: 智能运维

一、基础环境准备

  1. 系统要求:选择CentOS 7及以上版本(推荐CentOS Stream 9),确保系统已更新至最新稳定版;Kafka 3.5+版本需兼容Java 11及以上,建议使用OpenJDK 11(sudo yum install -y java-11-openjdk-devel)。
  2. 安装Zookeeper:Kafka依赖Zookeeper进行集群管理,建议部署3/5节点Zookeeper集群(避免单点故障)。编辑zoo.cfg配置文件,设置dataDir(数据目录)、clientPort(2181)、initLimit(5)、syncLimit(2)及服务器列表(server.x=ip:2888:3888);启动Zookeeper(./zkServer.sh start)并验证状态(./zkServer.sh status)。

二、Kafka核心配置优化(server.properties)

1. 基础身份与连接

2. 性能关键参数

3. 安全配置(必选)

三、操作系统优化

  1. 内核参数调整
    • 增加文件描述符限制(sudo sysctl -w fs.file-max=1000000);
    • 调整网络缓冲区(sudo sysctl -w net.core.rmem_default=262144net.core.wmem_default=262144);
    • 优化TCP参数(sudo sysctl -w net.ipv4.tcp_wmem="4096 16384 131072"net.ipv4.tcp_rmem="4096 65536 1048576");
    • 禁用内存交换(sudo sysctl -w vm.swappiness=1,避免磁盘IO瓶颈)。
  2. 文件系统选择
    使用XFS文件系统(挂载时添加noatime选项,减少文件访问时间戳更新的开销),如:
    sudo mkfs.xfs /dev/sdb
    sudo mount -o noatime /dev/sdb /data/kafka
    
    并添加至/etc/fstab实现开机自动挂载。

四、开机自启配置

  1. 创建Systemd服务文件/etc/systemd/system/kafka.service):
    [Unit]
    Description=Apache Kafka Server
    After=network.target zookeeper.service
    
    [Service]
    Type=simple
    User=kafka
    Group=kafka
    Environment="KAFKA_OPTS=-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"
    ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
    ExecStop=/opt/kafka/bin/kafka-server-stop.sh
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    
  2. 创建Kafka用户与目录
    sudo useradd kafka
    sudo mkdir -p /opt/kafka/{logs,data}
    sudo chown -R kafka:kafka /opt/kafka
    
  3. 启用并启动服务
    sudo systemctl daemon-reload
    sudo systemctl enable kafka
    sudo systemctl start kafka
    
    验证状态:sudo systemctl status kafka

五、监控与维护

  1. 监控工具:集成Prometheus+Grafana监控Kafka集群(关键指标包括Broker CPU/内存使用率、磁盘IO、网络吞吐量、Topic分区Leader分布、Consumer Lag);或使用Kafka自带的JMX指标(通过jconsolekafka-run-class.sh查看)。
  2. 日志清理:定期检查Kafka日志目录(log.dirs),避免磁盘空间耗尽;可通过log.retention.bytes(单个分区最大日志大小)和log.retention.check.interval.ms(日志检查间隔)参数自动清理旧日志。
  3. 备份与恢复:定期备份Zookeeper数据目录(dataDir)和Kafka日志目录(log.dirs);灾难恢复时,可通过备份数据恢复Zookeeper集群和Kafka Broker。

0
看了该问题的人还看了