线上生产集群一直没有动过,却突然有一天一个节点的磁盘IO一直拉满,跑到100%,查看集群其他节点,均无异常流量,所以怀疑是虚机所在宿主机的磁盘有性能瓶颈。于是,第一步换宿主机,结果换好后重启还是不行。
既然不是机器性能问题,那就是机器系统问题喽。第二步,重装系统。重装后,喜剧的一幕出现了,当重装机器启动同步数据时,集群的另外两个节点的主机服务就会抛异常退出,异常如下:
INFO [ReplicaFetcherManager on broker 2] Removed fetcher for partitions topic-xxx (kafka.server.ReplicaFetcherManager)
INFO [Partition topic-xxx-1 broker=2] Cached zkVersion [428] not equal to that in zookeeper, skip updating ISR (kafka.cluster.Partition)
INFO [Partition topic-xxx-1 broker=2] Shrinking ISR from 2,5 to 2 (kafka.cluster.Partition)
多次重启也不成功。 只有在重装主机服务关闭时,这两个节点才能正常启动。既然Cached zkVersion [428] not equal to that in zookeeper 有异常,kafka就不能找到分区leader了,于是就删除了两个无法启动节点的kafka配置文件里 log.dirs 下的目录的recovery-point-offset-checkpoint 与replication-offset-checkpoint 两个文件删除了。再次尝试重启,问题就解决了。