Kafka集群broker宕机后数据迁移是物理复制还是逻辑指向公共存储?
Kafka 副本迁移机制答疑
首先澄清你提到的前提误区:通常所说的「Kafka集群中broker使用相同位置存储数据日志」,指的是各broker本地的log.dirs配置路径一致,默认部署模式下所有broker都使用各自的本地磁盘存储数据,并不共享公共存储位置。
针对你提出的副本迁移问题,分两种部署架构说明:
1. 默认本地存储架构(生产环境绝大多数场景)
- 当brokerX宕机且长时间无法恢复时,如果你开启了自动副本均衡,或者手动触发了副本重分配任务,迁移过程是实打实的物理数据复制:
- Kafka Controller(依赖ZooKeeper或KRaft集群选举产生)只会负责下发副本重分配的元数据指令,本身不参与数据复制
- 接收副本的目标存活broker会主动向对应分区的leader节点拉取全量的分区日志数据,通过网络传输后写入自身的本地磁盘
- 直到数据完全同步完成后,新副本才会被加入分区的ISR列表,原brokerX上的失效副本才会被下线,全程没有逻辑指向调整的操作。
2. 小众共享存储架构
- 只有在极少数采用SAN、分布式文件系统等共享存储的特殊部署场景下,所有broker才会访问统一的公共存储位置存储日志。
- 该场景下brokerX宕机后,Controller仅需要调整分区所有权的元数据,将对应分区的访问权转移给其他存活broker,新的负责broker直接读取公共存储上的现有日志即可,不需要做物理数据复制,也就是你说的逻辑指向调整。这种部署模式性能、可靠性都远不如本地存储架构,官方不推荐生产环境使用。

内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

