温馨提示×

Debian Kafka集群搭建步骤

小樊
41
2025-12-31 20:07:53
栏目: 智能运维

在 Debian 上搭建高可用 Kafka 集群


一 环境准备与规划

  • 节点与网络:至少准备3 台服务器(建议同内网),规划好主机名/IP防火墙放行端口。Kafka 客户端端口为9092;如使用 KRaft 模式,还需开放9093(控制器通信)。
  • Java:安装 OpenJDK 8/11(Kafka 3.x 推荐 11)。
  • 存储:为日志目录(如 /var/lib/kafka/logs/data/kafka/logs)挂载高性能磁盘
  • 版本建议:选择稳定版 Kafka(如 3.5.x/3.6.x),下载地址可用官方或镜像源。
  • 高可用:Topic 的 replication.factor ≥ 3,分区数与业务并发匹配。

二 安装与初始化

  • 安装 Java
    • 更新索引并安装:sudo apt update && sudo apt install -y openjdk-11-jdk
    • 验证: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 && sudo mv kafka_2.12-3.5.2 /opt/kafka
    • 可选:配置环境变量(/etc/profile 或 ~/.bashrc)
      • export KAFKA_HOME=/opt/kafka
      • export PATH=$PATH:$KAFKA_HOME/bin
  • 创建数据与日志目录
    • sudo mkdir -p /var/lib/kafka/logs
    • sudo chown -R $USER:$USER /var/lib/kafka
  • 主机名与解析
    • /etc/hosts 写入各节点主机名与 IP,确保相互解析。

三 部署方案选择

  • 方案 A:Zookeeper 模式(传统,兼容性好)
    • 部署 Zookeeper 集群(至少 3 节点),配置 server.X=host:2888:3888,clientPort=2181
    • 每台 Kafka Broker 配置 server.properties:
      • broker.id=唯一ID(每台不同)
      • listeners=PLAINTEXT://:9092
      • advertised.listeners=PLAINTEXT://本机IP:9092
      • zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
    • 启动:bin/kafka-server-start.sh config/server.properties
  • 方案 B:KRaft 模式(去 Zookeeper,Kafka 3.0+)
    • 每台 Broker 配置 server.properties:
      • process.roles=broker,controller
      • listeners=PLAINTEXT://:9092,CONTROLLER://:9093
      • inter.broker.listener.name=PLAINTEXT
      • controller.listener.names=CONTROLLER
      • controller.quorum.voters=1@10.0.0.1:9093,2@10.0.0.2:9093,3@10.0.0.3:9093
      • node.id=唯一节点ID(每台不同)
      • log.dirs=/var/lib/kafka/logs
    • 首次初始化(仅一次):
      • bin/kafka-storage.sh format -t $(bin/kafka-storage.sh random-uuid) -c config/server.properties
    • 启动:bin/kafka-server-start.sh -daemon config/server.properties
  • 说明:Zookeeper 模式使用 zookeeper.connect;KRaft 模式使用 controller.quorum.voters 与 node.id。

四 关键配置与建议

  • 通用建议
    • 唯一性:broker.id/node.id 每台唯一;listeners 与 advertised.listeners 正确暴露本机 IP。
    • 副本与分区:生产环境建议 replication.factor=3num.partitions 结合并发与吞吐规划。
    • 默认策略:auto.create.topics.enable=true 时,配合合理的 num.partitions 与 default.replication.factor。
  • 生产者性能要点
    • acks=all 提升可靠性;batch.size 与 linger.ms 提升吞吐;compression.type=snappy/gzip
  • Broker 性能要点
    • num.network.threads / num.io.threads 匹配 CPU;合理设置 log.flush 策略;min.insync.replicas 与 replica.lag.time.max.ms 平衡一致性与可用性。
  • 监控与诊断
    • 使用 kafka-topics.sh、kafka-consumer-groups.sh 巡检;结合 Prometheus + Grafana 做可视化监控。

五 启动与验证

  • 启动顺序
    • Zookeeper 模式:先启动 Zookeeper 集群,再逐台启动 Kafka Broker
    • KRaft 模式:完成 format 后,逐台启动 Kafka Broker
  • 基础验证
    • 查看进程:jps -l | grep Kafka(或 ps -ef | grep kafka)
    • 创建 Topic:
      • Zookeeper 模式:bin/kafka-topics.sh --zookeeper zk1:2181 --create --topic test --partitions 3 --replication-factor 3
      • KRaft 模式:bin/kafka-topics.sh --bootstrap-server 10.0.0.1:9092,10.0.0.2:9092,10.0.0.3:9092 --create --topic test --partitions 3 --replication-factor 3
    • 生产/消费测试:
      • 生产:bin/kafka-console-producer.sh --bootstrap-server 10.0.0.1:9092 --topic test
      • 消费:bin/kafka-console-consumer.sh --bootstrap-server 10.0.0.1:9092 --topic test --from-beginning
    • 查看详情:bin/kafka-topics.sh --bootstrap-server 10.0.0.1:9092 --describe --topic test
  • 常见问题
    • 无法连接:检查 防火墙/安全组 是否放行 9092/90932181(Zookeeper)。
    • 主机名解析:确保 /etc/hosts 或 DNS 正确。
    • 副本不足:创建 Topic 时 replication.factor 不得超过 可用 Broker 数

0