kafka集群两个broker,kill掉一台后,consumer收不到消息

两个broker节点A(10.7.24.201)和B(10.7.21.240)
A主机上部署了zookeeper+kafka
B主机上部署了zookeeper+kafka+logstash

A和B都启动的前提下,通过命令:

bin/kafka-console-producer.sh --topic panda --broker-list 10.7.24.201:9092,10.7.21.240:9092

logstash能收到消息

kill掉240,发消息,logstash也能收到消息
但是如果保留240 kill掉201,logstash就报错:

[2018-08-31T18:13:07,119][WARN ][org.apache.kafka.clients.NetworkClient] [Consumer clientId=chen-3, groupId=logstash] Connection to node 0 could not be established. Broker may not be available.
[2018-08-31T18:13:07,216][WARN ][org.apache.kafka.clients.NetworkClient] [Consumer clientId=chen-4, groupId=logstash] Connection to node 0 could not be established. Broker may not be available.

执行如下命令:

bin/kafka-consumer-groups.sh  --describe --bootstrap-server 10.7.24.201:9092,10.7.21.240:9092  --group logstash

报错如下:

Note: This will not show information about old Zookeeper-based consumers.
[2018-08-31 18:14:15,459] WARN Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2018-08-31 18:14:15,537] WARN Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
Error: Executing consumer group command failed due to The consumer group command timed out while waiting for group to initialize:

不知道什么原因,求解答。。。。。







发表于: 22天前   最后更新时间: 21天前   游览量:341
上一条: 到头了!
下一条: 已经是最后了!

评论…


  • kafka0.9版本以后,consumer消费的offset默认保存到kafka系统topic中,所以你这种很可能是因为保存offset的topic只有一个副本。
    你可以通过命令查看topic有没有副本,命令如下:
    bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic __consumer_offsets

    这个是存储offset的主题,如果副本只有1个,那么就会导致集群挂掉一个,你消费者再也不消费的情况。把该主题增加副本就行了。
    http://orchome.com/454 命令大全里面,执行增加副本。
    • 非常感谢,问题确实解决了!
      修改server.properties 如下:
      ############################# Internal Topic Settings  #############################
      # The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state"
      # For anything other than development testing, a value greater than 1 is recommended for to ensure availability such as 3.
      offsets.topic.replication.factor=3
      transaction.state.log.replication.factor=3
      transaction.state.log.min.isr=3

      不管是重启还是新建topic,topic的副本依然是一个,似乎只能按照您提供的方式和命令去修改topic的副本数量。。。。
      有点迷惑。。。。
        • 一 .以json文件的形式,来进行添加:

          1.查看 主题的信息 
                  bin/kafka-topics.sh --describe --zookeeper 127.0.0.1:2181  --topic myTopic1 
                  确定分区数

          2. 可以指定分区绑定副本(前提是副本id的broker服务要启动了) 
          到bin目录下,添加文件 increase-replication-factor.json
          [root@localhost bin]# vim increase-replication-factor.json

          {"version": 1, "partitions": [
                  {
                      "topic": "AA_topic",
                      "partition": 0,
                      "replicas": [
                          4,
                          5
                      ]
                  },
                  {
                      "topic": "AA_topic",
                      "partition": 1,
                      "replicas": [
                          4,
                          5
                      ]
                  }
              ]
          }
          其中 replicas 填写的值,就是 kafka 的对应的broker.id 【在kafka的conf目录的 server.properties 文件里能找到】。

          3. 执行命令
          [root@localhost bin]# ./kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file increase-replication-factor.json --execute

          4. 再看主题的信息
          bin/kafka-topics.sh --describe --zookeeper 127.0.0.1:2181  --topic AA_topic

          我这边操作记录,试下能不能帮你解决问题
            • 我也与到同样的问题,部署了三台,kill 其中一台,consumer收不到消息,按照:
              offsets.topic.replication.factor=3
              transaction.state.log.replication.factor=3
              transaction.state.log.min.isr=3
              修改后,问题依然。
              请问是否还要修改其他配置,谢谢

              • 评论…
                • in this conversation