首页主机资讯Kafka高可用性Ubuntu配置方案

Kafka高可用性Ubuntu配置方案

时间2026-01-21 06:53:03发布访客分类主机资讯浏览681
导读:Kafka高可用Ubuntu配置方案 一 架构与前置条件 建议至少部署3台 Ubuntu 服务器,每台部署1个 Broker;同时部署3节点 ZooKeeper 集群用于元数据与协调,避免单点故障。Kafka 通过多副本机制、ISR(In...

Kafka高可用Ubuntu配置方案

一 架构与前置条件

  • 建议至少部署3台 Ubuntu 服务器,每台部署1个 Broker;同时部署3节点 ZooKeeper 集群用于元数据与协调,避免单点故障。Kafka 通过多副本机制、ISR(In-Sync Replicas)与 Leader 自动切换实现高可用;生产环境常用副本因子 3min.insync.replicas=2、生产者acks=all来兼顾可靠性与可用性。若使用较新版本 Kafka,可选择KRaft 模式(Kafka Raft Metadata Mode)替代 ZooKeeper。以上做法可在节点故障时实现秒级故障转移与数据不丢。

二 部署步骤

  • 安装 Java
    • 执行:sudo apt update & & sudo apt install -y openjdk-8-jdk;验证:java -version。
  • 部署 ZooKeeper 集群(3节点)
    • 下载解压后编辑 conf/zoo.cfg:
      • tickTime=2000,initLimit=5,syncLimit=2
      • dataDir=/var/lib/zookeeper,clientPort=2181
      • server.1=zk1:2888:3888;server.2=zk2:2888:3888;server.3=zk3:2888:3888
    • 在每台 zk 节点的 dataDir 下创建 myid 文件写入1/2/3;启动:bin/zkServer.sh start;检查:bin/zkServer.sh status。
  • 部署 Kafka 集群(3节点)
    • 下载解压 Kafka(示例:kafka_2.13-3.5.2.tgz);编辑 config/server.properties(每台唯一配置):
      • broker.id=0/1/2(唯一)
      • listeners=PLAINTEXT://< 本机IP或0.0.0.0> :9092
      • advertised.listeners=PLAINTEXT://< 本机可访问IP> :9092
      • log.dirs=/var/lib/kafka/logs
      • zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
    • 启动:bin/kafka-server-start.sh config/server.properties;如需后台常驻,建议使用 systemd 托管。
  • 防火墙与连通性
    • 开放端口:2181(ZK)9092(Kafka);云环境需配置安全组放行。

三 关键配置与验证

  • 主题与副本(高可用基线)

    • 创建测试主题(3分区、副本因子3):
      • bin/kafka-topics.sh --create --topic ha-test --partitions 3 --replication-factor 3 --bootstrap-server < 任一BrokerIP> :9092
    • 查看分区与副本分布:
      • bin/kafka-topics.sh --describe --topic ha-test --bootstrap-server < 任一BrokerIP> :9092
    • 生产消费验证:
      • 生产:bin/kafka-console-producer.sh --broker-list :9092,:9092,:9092 --topic ha-test
      • 消费:bin/kafka-console-consumer.sh --bootstrap-server < 任一BrokerIP> :9092 --topic ha-test --from-beginning
    • 高可靠写入建议:生产者设置 acks=all,配合 replication.factor≥3、min.insync.replicas=2,可在单节点故障时仍保证写入不丢。
  • 核心参数建议(server.properties)

    • 可靠性与一致性
      • replication.factor=3
      • min.insync.replicas=2
      • default.replication.factor=3
      • offsets.topic.replication.factor=3
    • 故障恢复与负载均衡
      • unclean.leader.election.enable=false(避免脏Leader)
      • auto.leader.rebalance.enable=true
      • leader.imbalance.check.interval.seconds=300
      • leader.imbalance.per.broker.percentage=10
    • 网络与性能
      • num.network.threads=8(按CPU/负载调整)
      • num.io.threads=16(按磁盘IO调整)
      • socket.send.buffer.bytes=1048576
      • socket.receive.buffer.bytes=1048576
      • socket.request.max.bytes=104857600
    • 存储与保留
      • log.dirs=/var/lib/kafka/logs
      • log.retention.hours=72
      • log.segment.bytes=1073741824
    • 说明:以上参数覆盖副本/ISR/ACK的可靠性基线、Leader 再均衡I/O性能基线,适用于多数生产入门场景。

四 运维与可用性保障

  • 进程与系统托管
    • 建议使用 systemd 管理 Kafka 服务(示例单元见附录),设置Restart=on-failure,并配置JMX_PORT=12345便于监控。
  • 监控与可视化
    • 通过 JMX 暴露指标,结合 Prometheus + Grafana 监控 Broker 存活、请求时延、ISR 变化、UnderReplicated 分区数、消息堆积等;可用 **CMAK(原 Kafka Manager)**做集群可视化管理。
  • 安全加固(可选但强烈建议)
    • 传输加密:启用 SSL/TLS(配置 ssl.keystore/truststore 等)
    • 身份认证:启用 SASL(如 SASL/PLAIN、SCRAM-SHA-256)
    • 访问控制:基于 ACL 的资源授权
    • 注意:开启安全后,生产/消费与运维命令需同步配置安全协议与凭据。

五 附录 Systemd 单元示例

  • 文件:/etc/systemd/system/kafka.service
    • [Unit]
      • Description=Apache Kafka
      • After=network.target zookeeper.service
    • [Service]
      • Type=simple
      • User=kafka
      • ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
      • ExecStop=/opt/kafka/bin/kafka-server-stop.sh
      • Restart=on-failure
      • Environment=JMX_PORT=12345
    • [Install]
      • WantedBy=multi-user.target
  • 使用:sudo systemctl daemon-reload & & sudo systemctl enable --now kafka。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Kafka高可用性Ubuntu配置方案
本文地址: https://pptw.com/jishu/788243.html
如何优化Ubuntu Kafka存储性能 Ubuntu Kafka网络设置要点解析

游客 回复需填写必要信息