【问题标题】:Kafka Broker Goes Down卡夫卡经纪人倒闭
【发布时间】:2021-02-01 08:45:10
【问题描述】:

我们有 5 个节点 kafka-cluster,使用 OpenJDK11 运行 2.3.0 Kafka 版本 [ kafka_2.12-2.3.0 ]。

从上周开始,我们突然发现集群中的一个代理出现故障。

我们注意到此节点的 controller.log 中存在以下错误,不完全确定这指向什么,请有人对此有所了解,在此先感谢

2021-01-27 11:26:59,471 INFO kafka.controller.ZkPartitionStateMachine: [PartitionStateMachine controllerId=5] Stopped partition state machine
2021-01-27 11:26:59,472 INFO kafka.controller.ZkReplicaStateMachine: [ReplicaStateMachine controllerId=5] Stopped replica state machine
2021-01-27 11:26:59,472 INFO kafka.controller.KafkaController: [Controller id=5] Resigned
2021-01-27 11:27:55,955 ERROR kafka.controller.KafkaController: [Controller id=5] Error processing event RegisterBrokerAndReelect
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:130)
    at kafka.zk.KafkaZkClient$CheckedEphemeral.create(KafkaZkClient.scala:1725)
    at kafka.zk.KafkaZkClient.checkedEphemeralCreate(KafkaZkClient.scala:1689)
    at kafka.zk.KafkaZkClient.registerBroker(KafkaZkClient.scala:97)
    at kafka.controller.KafkaController.processRegisterBrokerAndReelect(KafkaController.scala:1547)
    at kafka.controller.KafkaController.process(KafkaController.scala:1586)
    at kafka.controller.QueuedEvent.process(ControllerEventManager.scala:53)
    at kafka.controller.ControllerEventManager$ControllerEventThread.$anonfun$doWork$1(ControllerEventManager.scala:137)
    at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
    at kafka.metrics.KafkaTimer.time(KafkaTimer.scala:31)
    at kafka.controller.ControllerEventManager$ControllerEventThread.doWork(ControllerEventManager.scala:137)
    at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:89)
2021-01-27 11:27:55,977 INFO kafka.controller.ZkPartitionStateMachine: [PartitionStateMachine controllerId=5] Stopped partition state machine
2021-01-27 11:27:55,977 INFO kafka.controller.ZkReplicaStateMachine: [ReplicaStateMachine controllerId=5] Stopped replica state machine
2021-01-27 11:27:55,977 INFO kafka.controller.KafkaController: [Controller id=5] Resigned

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    从您分享的错误来看,控制器/代理与 zookeeper 节点的连接似乎达到了会话超时。

    通常当代理无法在配置的超时时间内到达zookeeper节点时会发生超时。

    还请注意,在新版本中超时 (zookeeper.session.timeout.ms) 设置为 18 秒,但在旧版本中设置为仅 6 秒,这在某些情况下可能太低,我们建议增加至18 秒。也就是说,如果连接当时仍在工作,代理应该尝试在超时错误后自动重新建立连接我怀疑可能发生的情况是另一个代理被重新选为新的控制器。

    并且您的代理/旧控制器尝试将 zookeeper 作为控制器连接以避免脑裂问题不接受旧控制器请求

    为避免这种情况,请检查您的网络并调整 zookeeper.session.timeout.ms 设置

    【讨论】:

    • 明白了!感谢您提供帮助。我们正在努力设置 kafka-metrics 以找出是否存在任何其他违规行为,因为当我做一些功课时,我读到这也可能由于更长的时间而发生GC 时间,我们可能还需要调整 GC.. 将不得不在同一时间获取更多数据..
    • 是的 GC 也是要考虑的。我曾经有融合推荐的 GC 设置
    • -Xms6g -Xmx6g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX: MaxMetaspaceFreeRatio=80
    猜你喜欢
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 2020-07-21
    • 2018-04-07
    相关资源
    最近更新 更多