【问题标题】:Why 3 Kafka brokers didnt start after reboot all of them at same time?为什么 3 个 Kafka 代理在同时重启后没有启动?
【发布时间】:2020-02-10 06:20:54
【问题描述】:

帮助我了解 kafka 的工作原理。我有 3 个具有此配置的 kafka 代理:

broker.id=1
listeners=PLAINTEXT://1.2.3.4:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=105906176
message.max.bytes=105906176
replica.fetch.max.bytes=105906176
log.dirs=/opt/kafka_2.12-2.1.0/logs
num.partitions=10
num.recovery.threads.per.data.dir=10
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=2
transaction.state.log.min.isr=2
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=600000
zookeeper.connect=1.2.3.4:2181,5.6.7.8:2181,3.1.2.1:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=3
auto.create.topics.enable=false
delete.topic.enable=true
replica.fetch.wait.max.ms=500
replica.lag.time.max.ms=10000
request.timeout.ms=305000

在我重新启动所有代理后,同时在 3 个代理中的 2 个中,我不断看到此错误:

kafka-server-start.sh[2448]: [2020-02-10 06:01:33,969] 错误 [KafkaApi-2] 活动代理的数量“0”不满足所需的复制因子“2”事务状态主题(通过“transaction.state.log.replication.factor”配置)。如果集群正在启动并且并非所有代理都已启动,则可以忽略此错误。 (kafka.server.KafkaApis)

但是所有服务器都运行,所有 kafka 服务启动,所有 zookeeper 启动(echo stat | nc zookeeper_ip 2181 - 显示一切正常)。为什么 kafka 说 - 活跃的经纪人数量为“0”?

在一个经纪人处,我没有看到任何错误。 当我重新启动没有此错误的 kafka 代理(只是重新启动服务 kafka,而不是所有服务器)时 - kafka 集群开始工作。所有 kafka 代理相互连接,启动复制分区,一切正常。 为什么会发生这种情况?为什么重启后kafka经纪人看不到对方? 可能是当我们使用 3 个 kafka 代理时,我们无法同时重启所有这些代理?

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    你错过了这部分信息吗?

    如果集群正在启动但并非所有代理都已启动,则可以忽略此错误。

    不,您不应该同时重新启动它们。

    为什么 kafka 说 - 活跃的经纪人数量为“0”?

    因为控制器可能还没有被选举出来

    您应该弄清楚哪个是控制器代理,然后重新启动最后一个,然后滚动重新启动其余部分

    如果您的代理多于副本并启用了机架感知,那么您一次可以使用多个代理

    【讨论】:

    • 感谢您的回答,您能解释一下什么是“启用机架感知”吗?
    • 它决定了数据在集群中的分布方式。 “机架”是数据中心中服务器的物理堆栈。在代理属性中搜索“机架”
    【解决方案2】:

    在 Kafka 系统中,Zookeeper 负责维护所有可用代理的列表,如果控制器(代理之一)崩溃,则 Zookeeper 负责为集群选择一个新的控制器。

    同时,如果所有的brokers同时重启,Zookeeper将无法选举Controller,因此不会有其他存活brokers的信息。

    一旦你同时重启所有的代理,第一个代理被选为控制器,而其余的代理仍然不知道其他可用的代理。

    因此,在重新启动 Kafka 时,最初它会抛出这样一个可以忽略的错误。

    【讨论】:

    • 感谢您的回答!重启后我检查动物园管理员:回声转储| nc 1.2.3.4 2181 及其返回的所有代理都在线。我在所有其他 Zookeeper 上检查了这一点 - 结果相同。而这个错误 - 重新启动后不断重复,第一次 - im wait, but when goes more than 2 hours, im 确定出现问题,并尝试解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多