3

我们的一个 kafka 集群有问题。我们有 6 个 v1.0 节点,所有主题的复制因子为 3 和 10 个分区/主题,这对我们来说似乎已经足够了。

由于电源故障,其中 3 个节点停机了一段时间,现在我们有很多主题被报告为具有复制不足的分区。

我们在论坛上看到的唯一解决方案(并且似乎更被接受)是滚动重启,直到一切都神奇地修复,但我希望有更好的解决方案。有没有人从这种情况中恢复过来?网络或 cpu 不应该成为同步的问题,因为它甚至没有接近极限。

非常感谢!

4

2 回答 2

0

让 Kafka 自动处理它可能是您最好的选择,通常使用主题重新分配工具。 https://www.google.no/search?q=kafka+partition+reassignment+tool

您还可以通过使用所有主题并将所有消息写入新主题来强制重新分发,该主题具有相同的设置但名称与当前主题略有不同。

于 2018-08-03T12:56:10.080 回答
0

最后,我们可以恢复手动删除许多损坏的集群,因此我们将复制不足的分区从大约 4600 个减少到大约 1k。

在那之后,并且所有这些都只在 2 个节点中,我们决定在两个节点中进行有序关闭,之后,复制再次开始。

我想有一种错误使 kafka 停止从节点复制,但这就是诀窍。

更新:

集群稳定后,您还可以尝试重新平衡可用代理之间损坏的分区。根据我的经验,最好生成小的重新平衡文件而不是重新平衡整个集群,因为它通常会卡在过程的中间(至少在旧版本中)

于 2018-08-17T11:47:21.747 回答