Kafka高可用性Ubuntu配置方案
导读: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 自动切换实现高可用;生产环境常用副本因子 3、min.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。
- 下载解压后编辑 conf/zoo.cfg:
- 部署 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 托管。
- 下载解压 Kafka(示例:kafka_2.13-3.5.2.tgz);编辑 config/server.properties(每台唯一配置):
- 防火墙与连通性
- 开放端口: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,可在单节点故障时仍保证写入不丢。
- 创建测试主题(3分区、副本因子3):
-
核心参数建议(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
- [Unit]
- 使用:sudo systemctl daemon-reload & & sudo systemctl enable --now kafka。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Kafka高可用性Ubuntu配置方案
本文地址: https://pptw.com/jishu/788243.html
