我们的Kafka星团有问题。在v1.0中我们有6个节点,所有的主题都有一个复制因子3和10个分区/主题,这对我们来说似乎足够了。
由于电源故障,其中的3个节点宕机了一段时间,现在我们有很多主题报告称分区复制不足。
我们在论坛上看到的唯一解决方案(而且似乎是更被接受的)是滚动重启,直到一切都神奇地修复,但我希望有更好的解决方案。有人从这种情况中恢复过来了吗?网络或cpu不应该是一个问题,以获得同步,因为它甚至不接近极限。
谢谢!
我们的Kafka星团有问题。在v1.0中我们有6个节点,所有的主题都有一个复制因子3和10个分区/主题,这对我们来说似乎足够了。
由于电源故障,其中的3个节点宕机了一段时间,现在我们有很多主题报告称分区复制不足。
我们在论坛上看到的唯一解决方案(而且似乎是更被接受的)是滚动重启,直到一切都神奇地修复,但我希望有更好的解决方案。有人从这种情况中恢复过来了吗?网络或cpu不应该是一个问题,以获得同步,因为它甚至不接近极限。
谢谢!
2条答案
按热度按时间aiqt4smr1#
让Kafka自动处理可能是最好的选择,通常使用主题重新分配工具。https://www.google.no/search?q=kafka+partition+reassignment+tool
您还可以通过使用所有主题并将所有消息写入一个新主题来强制重新分发,该主题的设置相同,但名称与当前主题略有不同。
mzaanser2#
最后,我们可以手动恢复集群删除了许多损坏的分区,因此我们将复制不足的分区从大约4600个减少到大约1k个。
在那之后,我们决定在两个节点中执行有序关闭,并且在这之后,复制再次开始。
我想有一种bug会让kafka停止从节点复制,但这就成功了。
更新:
一旦集群稳定,您还可以尝试重新平衡可用代理之间断开的分区。根据我的经验,最好是生成小的重新平衡文件,而不是重新平衡整个集群,因为它通常会卡在进程的中间(至少在旧版本中)