ZooKeeper玩转大数据大数据 爬虫Python AI Sql

记一次Kafka集群的故障恢复

2018-04-13  本文已影响325人  扫帚的影子

集群故障发生

故障解决

[2017-10-12 16:52:38,141] ERROR Processor got uncaught exception. (kafka.network.Processor)
java.lang.ArrayIndexOutOfBoundsException: 18
        at org.apache.kafka.common.protocol.ApiKeys.forId(ApiKeys.java:68)
        at org.apache.kafka.common.requests.AbstractRequest.getRequest(AbstractRequest.java:39)
        at kafka.network.RequestChannel$Request.<init>(RequestChannel.scala:79)
        at kafka.network.Processor$$anonfun$run$11.apply(SocketServer.scala:426)
        at kafka.network.Processor$$anonfun$run$11.apply(SocketServer.scala:421)
        at scala.collection.Iterator$class.foreach(Iterator.scala:742)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1194)
        at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
        at scala.collection.AbstractIterable.foreach(Iterable.scala:54)

集群恢复


然而, 事件并没有结束, 而是另一个恶梦的开始

集群故障再次发生

故障解决

Group "xxx" coordinator is xxx.xxx.xxx.xxx:9092 id 3
Broker: Not coordinator for group
  1. 第一条日志 说明consumer已经确认了当前的coordinator, 连接没有问题;
  2. 第二条日志显示没有 Not coordinator, 对应broker端是说虽然coordinator确认了,但是没有在这个 coodinator上找到这个group对应的metada信息;
  3. group的metada信息在coordinator启动或__consuser_offsets的partion切主时被加载到内存,这么说来是相应的__consumer_offsets的partition没有被加载;
  4. 关于coordinator, __consumer_offsets, group metada的信息可以参考 Kafka的消息是如何被消费的?
  1. 查找对应的__consumer_offsets的partition的加载情况, 发现对应的__consumer_offsets正在被Loading;
Loading offsets and group metadata from [__consumer_offsets,19] (kafka.coordinator.GroupMetadataManager)
  1. 没有找到下面类似的加载完成的日志:
Finished loading offsets from [__consumer_offsets,27] in 1205 milliseconds. (kafka.coordinator.GroupMetadataManager)

也没有发生任何的exception的日志

  1. **使用jstack来dump出当前的线程堆栈多次查看, 证实一直是在加载数据,没有卡死;

故障恢复


总结


Kafka源码分析-汇总

上一篇下一篇

猜你喜欢

热点阅读