Kafka系列之:kafka集群broker节点变化重新分配分区和修改副本数
一、分区重分配场景
Kafka broker节点宕机:
- 当集群中的一个节点突然宕机下线时,如果节点上的分区是单副本的,那么这些分区就变得不可用了,在节点恢复前,相应的数据也就处于丢失状态。
- 如果节点上的分区是多副本的,位于这个节点上的leader副本的角色会转移到集群的其他follower副本中。
- 总而言之,这个宕机节点上的分区副本都已经处于功能失效的状态,Kafka并不会将这些失效的分区副本自动地迁移到集群中剩余的可用broker节点上。
- 如果放任不管,不仅会影响着整个集群的均衡负载,还会影响整体服务的可用性和可靠性。
Kafka broker节点下线:
- 当要对集群中的一个节点进行有计划的下线操作时,为了保证分区及副本的合理分配,希望通过某种方式能够将该节点上的分区副本迁移到其他的可用节点上。
新增Kafka broker节点:
- 当集群新增Kafka broker节点时,只有新创建的主题分区才有可能被分配到这个节点上,而之前的主题分区并不会自动分配到新加入的节点中,因为它们在创建时还没有这个新节点,这样新节点的负载和原先节点的负载之间严重不均衡。
二、分区重分配方法
为了解决上述问题,需要让分区副本再次进行合理的分配,也就是所谓的分区重分配。
- Kafka提供了kafka-reassign-partitions.sh脚本来执行分区重分配的工作。
- 可以在集群扩容、broker节点失效的场景下对分区进行迁移。
Kafka-reassign-partitions.sh脚本的使用