【问题标题】:Kafka, change broker ip without changing broker idKafka,更改代理 ip 而不更改代理 id
【发布时间】:2022-02-09 00:17:33
【问题描述】:

我有一个 8 节点 kafka 集群(broker.id 范围为 1 到 8),分布在 2 个可用区(1a 和 1b)上的 AWS ec2 实例上。为了拥有多 AZ 集群,我需要将 4 个代理迁移到剩余的两个 AZ(1c 和 1d)中。

如果我在1c中创建一个新的ec2实例,我肯定会得到一个新的ip地址。 我的问题是,在删除具有相同 broker.id 的旧节点后,我可以为新节点使用相同的 broker.id

示例: broker.id = 1,IP = 1.1.1.1,AZ = 1a

现在,我想将此节点移动到 1c,因此我在 (1.1.1.1) 上停止代理服务,并在 1c 中使用空磁盘启动一个新节点

broker.id = 1,IP = 2.2.2.2,AZ = 1c

现在,我将在新节点上启动代理服务。这是否会在 kafka 集群中产生任何问题,因为我们正在更改节点而不更改 broker.id?

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    在包含 clusterId 的代理上生成了一个 meta.properties 文件,这可能会导致您遇到问题。

    否则,旧的 broker 信息仍保留在 Zookeeper 中用于分区副本,并且无需移动主题数据,则需要在新的 broker 正确启动后进行复制(例如,将 broker 间的侦听器配置为跨地区)

    更安全的方法是使用 kafka-reassign-partitions 工具将分区从您要迁移到具有另一个 ID 的代理的代理中移出,然后关闭并安装具有新 ID 的新服务器 ID,然后再次运行该工具以将分区移回这些新 ID。

    【讨论】:

    • 我使用的是 kafka 版本 kafka_2.12-2.3.1,在 meta.properties 文件中我没有看到 clusterId。来自 meta.properties 文件的示例内容 # #Thu Dec 23 09:35:04 UTC 2021 version=0 broker.id=1 可能在以后的版本中添加。
    • 是的,我想说的是 2.8 版左右
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2023-01-30
    • 1970-01-01
    • 2013-10-31
    相关资源
    最近更新 更多