需要在每个代理和控制器上运行 kafka-storage.sh

问题描述 投票:0回答:1

基本上就是标题。

我们多年来一直与 Zookeeper 一起运行 kafka。设置是形成 Zookeeper 集群,然后让代理连接到它。一切尽在傀儡之中。没有额外的步骤,经过一些重新启动后,集群最终启动了。

现在我们正在迁移到 Kraft(就地),我注意到我需要使用

kafka-storage.sh
实用程序格式化每个控制器上的存储。我认为这只是 Kraft 迁移过程的一部分,但显然即使从头开始构建新的 Kraft 集群也是需要的。根据https://kafka.apache.org/documentation/#quickstart

我想我需要吞下我的“为什么他们不能将其自动化作为启动过程的一部分”,但我有一些后续问题我找不到答案:

  1. 我是否需要生成一次 UUID,然后使用相同的 UUID 分别格式化每个 Kraft 控制器节点上的存储?
  2. 我需要对每个经纪商做同样的事情还是有点自动化?
  3. 当涉及到 Zookeeper -> Kraft 迁移时,我只需要在新控制器上执行此操作?:https://docs.confluence.io/platform/current/installation/migrate-zk-kraft.html#step-3-使用您之前保存的 id 格式化存储
apache-kafka apache-zookeeper kraft
1个回答
0
投票

我也一直在找这个信息。

我发现在多节点集群上下文中解释这些步骤的最佳资源来自 Confluence:

https://docs.confluence.io/platform/current/installation/installing_cp/deb-ubuntu.html#ak-in-kraft-mode

引用上述文档中的相关文字来回答您的问题...:

  1. 是的,生成一个ID并在所有集群节点上使用相同的ID。

您必须创建唯一的集群 ID 并格式化日志目录 使用该 ID...在启动 Kafka 之前,必须使用 kafka-storage 工具使用 random-uuid 命令为每个生成一个集群 ID 新集群。 您只需要一个集群 ID,您将用它来 格式化集群中的每个节点

  1. 您需要使用相同集群 ID 在每个节点上运行存储工具脚本:
    bin/kafka-storage.sh 格式 -t -c

使用集群 ID 格式化集群中每个节点的存储 使用 kafka 存储工具

  1. 我不确定你关于迁移的第三个问题。

但是关于您的其他元问题:“为什么他们不能将其自动化作为启动过程的一部分”...

之前Kafka会自动格式化空白存储目录 并自动生成新的簇ID。改变的原因之一 问题是自动格式化有时会掩盖错误情况。这 对于维护的元数据日志尤为重要 控制器和代理服务器。如果大多数控制者是 能够从一个空的日志目录开始,领导者也许能够 在缺少提交数据的情况下当选。

© www.soinside.com 2019 - 2024. All rights reserved.