【问题标题】:Kafka consumer get "Marking the coordinator dead" error when using group-idsKafka 消费者在使用组 ID 时出现“标记协调器死亡”错误
【发布时间】:2018-07-10 05:16:18
【问题描述】:

我有一个在 Kubernetes(在 AWS 上)上运行的 Kafka 集群。每个代理都有一个相应的外部负载均衡器 (ELB),并且 Kafka 的 advertised.listeners 已适当设置,以便客户端查询代理信息时返回 ELB 的 DNS 名称。大部分设置与提到的here 类似。

我创建了一个 kafka 消费者,但没有指定任何组 ID。有了这个消费者,从一个主题读取消息就可以了。但是,如果我在创建 kafka 消费者时设置了组 ID,我会收到以下错误消息:

2018-01-30    22:04:16,763.763.313055038:kafka.cluster:140735643595584:INFO:74479:Group coordinator for my-group-id is BrokerMetadata(nodeId=2, host=u'a17ee9a8a032411e8a3c902beb474154-867008169.us-west-2.elb.amazonaws.com', port=32402, rack=None)
2018-01-30 22:04:16,763.763.804912567:kafka.coordinator:140735643595584:INFO:74479:Discovered coordinator 2 for group my-group-id
2018-01-30 22:04:16,764.764.270067215:kafka.coordinator.consumer:140735643595584:INFO:74479:Revoking previously assigned partitions set([]) for group my-group-id
2018-01-30 22:04:16,866.866.26291275:kafka.coordinator:140735643595584:INFO:74479:(Re-)joining group my-group-id
2018-01-30 22:04:16,898.898.787975311:kafka.coordinator:140735643595584:INFO:74479:Joined group 'my-group-id' (generation 1) with member_id kafka-python-1.3.5-e31607c2-45ec-4461-8691-260bb84c76ba
2018-01-30 22:04:16,899.899.425029755:kafka.coordinator:140735643595584:INFO:74479:Elected group leader -- performing partition assignments using range
2018-01-30 22:04:16,936.936.614990234:kafka.coordinator:140735643595584:WARNING:74479:Marking the coordinator dead (node 2) for group my-group-id: [Error 15] GroupCoordinatorNotAvailableError.
2018-01-30 22:04:17,069.69.8890686035:kafka.cluster:140735643595584:INFO:74479:Group coordinator for my-group-id is BrokerMetadata(nodeId=2, host=u'my-elb.us-west-2.elb.amazonaws.com', port=32402, rack=None)

my-elb.us-west-2.elb.amazonaws.com:32402 可以从客户端访问。我使用kafkacat,并设置my-elb.us-west-2.elb.amazonaws.com:32402作为代理地址,它可以列出主题、消费主题等。

有什么想法可能是错的吗?

【问题讨论】:

    标签: amazon-web-services apache-kafka kubernetes


    【解决方案1】:

    问题在于 server.properties 中的 3 个配置设置设置不正确。

    默认的最小同步副本为 2 (min.insync.replicas=2)。但是,内部主题设置的复制因子为 1 (offsets.topic.replication.factor=1)。

    当消费者连接到一个 group-ip 时,它的相应条目必须设为 __consumer_offsets 主题。更新此主题时,仅写入了一个副本。这引发了同步副本数量低于所需数量的错误。

    org.apache.kafka.common.errors.NotEnoughReplicasException: Number of insync replicas for partition __consumer_offsets-42 is [1], below required minimum [2]
    

    我将所需的同步副本数更改为 1,然后一切正常。

    【讨论】:

      【解决方案2】:

      当消费者客户端和协调器之间存在网络通信错误时,会发生将协调器标记为死亡的情况(当协调器死亡并且组需要重新平衡时,也会发生这种情况)。有多种情况(偏移提交请求、获取偏移等)可能导致此问题。因此,要找到根本原因问题,您需要将日志记录级别设置为跟踪和调试:

      logging.level.org.apache.kafka=TRACE

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-08
      • 2017-09-17
      • 1970-01-01
      • 2019-04-30
      • 2015-04-01
      • 1970-01-01
      • 2018-09-22
      • 2017-10-16
      相关资源
      最近更新 更多