apache-kafka - 卡夫卡经纪人倒闭
问题描述
我们有 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
解决方案
从您共享的错误看来,控制器/代理与 Zookeeper 节点的连接达到了会话超时。
通常当代理无法在配置的超时时间内到达 Zookeeper 节点时会发生超时。
另请注意,在新版本中超时 (zookeeper.session.timeout.ms) 设置为 18 秒,但在旧版本中设置为仅 6 秒,在某些情况下可能太低,我们建议增加至 18 秒。也就是说,如果连接当时仍在工作,代理应该尝试在超时错误后自动重新建立连接我怀疑可能发生的情况是另一个代理被重新选为新的控制器。
并且您的代理/旧控制器尝试将 zookeeper 作为控制器连接以避免脑裂问题不接受旧控制器请求
为避免这种情况,请检查您的网络并调整 zookeeper.session.timeout.ms 设置
推荐阅读
- javascript - 对从客户端到服务器端的 JSON 数据进行签名
- python - 在元素与前一个元素不同时以整数切片列表
- sql-server - 根据大写单词选择字符串
- reactjs - 使用 Redux 容器时如何使用 Jest 访问 App 组件?
- azure - 将受邀来宾用户添加到 Azure AD 中的组
- macos - 用锤子改变鼠标滚动方向
- firebase - 从 firebase 功能设置 Vary head
- parse-platform - Parse Server - 查询最新的对象,但按升序排序结果
- python - 我需要帮助调整包含包裹递送列表的算法以找到最短路径
- .htaccess - 重定向到子目录并更改其名称