阅读量:260
Kafka集群故障恢复依赖其高可用机制,核心流程如下:
- 故障检测:通过心跳机制(ZooKeeper/KRaft)检测Broker失联。
- Leader选举:Controller从ISR(同步副本集合)中选择新Leader,优先选
broker.id最小的副本,确保数据一致性。 - 元数据更新:Controller广播新Leader信息,所有Broker更新本地路由表,客户端自动重连。
- 副本同步:故障Broker重启后,从新Leader拉取数据,追平后重新加入ISR。
关键操作与工具:
- 手动恢复分区:若ISR为空,需通过
kafka-reassign-partitions.sh重新分配副本。 - 监控指标:重点关注
UnderReplicatedPartitions(未同步分区数)、IsrShrinksPerSec(ISR收缩频率),使用Prometheus+Grafana实时监控。
预防措施:
- 配置
replication.factor≥3、min.insync.replicas=2,避免单点故障。 - 将Broker分布在不同机架/可用区,降低物理故障影响。
- 禁用
unclean.leader.election.enable,防止非同步副本成为Leader导致数据丢失。
参考来源: