centos

kafka在centos如何稳定配置

小樊
45
2025-09-17 21:47:37
栏目: 智能运维

一、环境准备:基础依赖与用户配置

  1. 安装JDK:Kafka依赖Java 8+运行,使用OpenJDK简化部署:
    sudo yum install -y java-1.8.0-openjdk-devel
    java -version  # 验证安装(需显示1.8.0版本)
    
  2. 创建专用用户:避免权限问题,创建kafka用户并授权:
    sudo useradd kafka
    sudo mkdir -p /opt/kafka/{data,logs}  # 创建数据与日志目录
    sudo chown -R kafka:kafka /opt/kafka  # 赋予所有权
    

二、Kafka核心配置:server.properties关键参数 编辑/opt/kafka/config/server.properties,设置以下核心参数以保障稳定性:

三、Zookeeper配置:集群高可用保障 Kafka依赖Zookeeper管理集群元数据,需先部署Zookeeper集群(建议3/5节点):

  1. 下载与解压
    wget https://downloads.apache.org/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz
    tar -zxvf apache-zookeeper-3.8.1-bin.tar.gz -C /opt/
    mv /opt/apache-zookeeper-3.8.1-bin /opt/zookeeper
    
  2. 配置zoo.cfg
    cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
    echo "dataDir=/opt/zookeeper/data" >> /opt/zookeeper/conf/zoo.cfg
    echo "clientPort=2181" >> /opt/zookeeper/conf/zoo.cfg
    echo "server.1=zoo1_ip:2888:3888" >> /opt/zookeeper/conf/zoo.cfg  # 多节点配置
    echo "server.2=zoo2_ip:2888:3888" >> /opt/zookeeper/conf/zoo.cfg
    echo "server.3=zoo3_ip:2888:3888" >> /opt/zookeeper/conf/zoo.cfg
    
  3. 启动Zookeeper
    cd /opt/zookeeper/bin
    ./zkServer.sh start  # 启动服务
    ./zkServer.sh status # 检查状态(Leader/Follower)
    

四、开机自启动:systemd服务配置 通过systemd实现Kafka自动启动,避免手动操作:

  1. 创建服务文件
    sudo vi /etc/systemd/system/kafka.service
    
  2. 添加以下内容
    [Unit]
    Description=Apache Kafka Server
    After=network.target zookeeper.target  # 依赖网络和Zookeeper
    
    [Service]
    Type=simple
    User=kafka
    Group=kafka
    Environment="KAFKA_LOG_DIRS=/opt/kafka/logs"
    ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
    ExecStop=/opt/kafka/bin/kafka-server-stop.sh
    Restart=on-failure  # 失败时自动重启
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    
  3. 启用并启动服务
    sudo systemctl daemon-reload
    sudo systemctl enable kafka
    sudo systemctl start kafka
    sudo systemctl status kafka  # 检查状态(需显示active(running))
    

五、性能优化:关键调优项

  1. 操作系统优化
    • 关闭swap(避免磁盘IO拖慢性能):
      sudo swapoff -a
      sudo sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab  # 永久关闭
      
    • 调整内核参数(提升网络与磁盘性能):
      echo "vm.swappiness=1" | sudo tee -a /etc/sysctl.conf
      echo "vm.dirty_background_ratio=5" | sudo tee -a /etc/sysctl.conf
      echo "vm.dirty_ratio=10" | sudo tee -a /etc/sysctl.conf
      echo "fs.file-max=1000000" | sudo tee -a /etc/sysctl.conf
      echo "net.core.somaxconn=1024" | sudo tee -a /etc/sysctl.conf
      sudo sysctl -p  # 生效配置
      
    • 增加文件描述符限制(避免连接数过多报错):
      echo "kafka hard nofile 1000000" | sudo tee -a /etc/security/limits.conf
      echo "kafka soft nofile 1000000" | sudo tee -a /etc/security/limits.conf
      
  2. Kafka Broker配置
    • 调整线程池(提升并发处理能力):
      num.network.threads=8(CPU核数+1);
      num.io.threads=16(CPU核数×2)。
    • 优化日志刷新(平衡性能与可靠性):
      log.flush.interval.messages=10000(每1万条消息刷新一次);
      log.flush.interval.ms=1000(每1秒刷新一次)。
    • 使用高性能磁盘(SSD优先):将log.dirs指向SSD挂载目录,提升IO吞吐量。

六、监控与维护:保障长期稳定

  1. 常用命令监控
    • 查看集群状态:kafka-topics.sh --describe --bootstrap-server localhost:9092(检查Leader/ISR数量);
    • 监控消费延迟:kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group your_group(查看LAG值);
    • 检查日志文件:tail -f /opt/kafka/logs/server.log(实时查看Kafka运行日志)。
  2. 第三方监控工具
    推荐使用Prometheus+Grafana组合,采集Kafka的JMX指标(如kafka_server_BrokerTopicMetrics_MessagesInPerSeckafka_server_ReplicaManager_UnderReplicatedPartitions),实现可视化监控与告警。
  3. 日志清理
    Kafka默认保留7天日志,可通过log.retention.hours调整保留时间,或定期执行kafka-log-dirs.sh --clean清理过期日志,避免磁盘空间耗尽。

0
看了该问题的人还看了