kafka当手动关掉一个broker节点时,Consumer接收不到消息,报错。

风清云淡 发表于: 2018-02-05   最后更新时间: 2018-02-05  
  •   21 订阅,117 游览

配置3个broker节点,6个partitions
采用监听消息@KafkaListener(topics = "t1" )
在正常的情况下,发送消息与接受消息是正常的。
模拟故障手工关掉其中一个broker节点时,Consumer接收不到消息,报错org.apache.kafka.clients.NetworkClient - Connection to node 2 could not be established. Broker may not be available.







发表于: 18天前   最后更新时间: 18天前   游览量:117
上一条: kafka stream 有没有办法将一条消息拆成多条
下一条: kafka消费者设置成自动提交offset时,如果不提交,会造成什么问题呢?有影响吗?

评论…


  • 补充下,3个broker节点为0、1、2,关掉2节点,Consumer接收不到消息。
    Topic:t1        PartitionCount:6        ReplicationFactor:2     Configs:
            Topic: t1       Partition: 0    Leader: 1       Replicas: 1,2   Isr: 1,2
            Topic: t1       Partition: 1    Leader: 2       Replicas: 2,0   Isr: 0,2
            Topic: t1       Partition: 2    Leader: 0       Replicas: 0,1   Isr: 0,1
            Topic: t1       Partition: 3    Leader: 1       Replicas: 1,2   Isr: 1,2
            Topic: t1       Partition: 4    Leader: 2       Replicas: 2,0   Isr: 0,2
            Topic: t1       Partition: 5    Leader: 0       Replicas: 0,1   Isr: 0,1

    replication配置:
    offsets.topic.replication.factor=2
    transaction.state.log.replication.factor=2
    transaction.state.log.min.isr=2
    问题解决了。
    配置了这几个参数
    offsets.topic.replication.factor=3
    transaction.state.log.replication.factor=3
    transaction.state.log.min.isr=3
    重新调整__consumer_offsets的Replicas才会生效,默认是是一对一的
    Topic: __consumer_offsets       Partition: 0   Leader: 0       Replicas: 0 Isr: 0
    调整后应该是
    Topic: __consumer_offsets       Partition: 0    Leader: 0       Replicas: 0,1,2 Isr: 0,1,2

    调整的命令是:kafka-reassign-partitions --zookeeper 127.0.0.1:2181 --reassignment-json-file reassign.json --execute
    如果是开发环境,可以删掉zookeeper\kafka日志重建。
  • 评论…
    • in this conversation
      提问