java - 卡夫卡 - 经纪人 : Group coordinator not available

标签 java linux apache-kafka apache-zookeeper

我有以下结构:

zookeeper: 3.4.12
kafka: kafka_2.11-1.1.0
server1: zookeeper + kafka
server2: zookeeper + kafka
server3: zookeeper + kafka

通过 kafka-topics shell 脚本创建了复制因子为 3 且分区为 3 的主题。

./kafka-topics.sh --create --zookeeper localhost:2181 --topic test-flow --partitions 3 --replication-factor 3

并使用 localConsumers 组。当领导没问题时,它工作正常。

./kafka-topics.sh --describe --zookeeper localhost:2181 --topic test-flow
Topic:test-flow PartitionCount:3    ReplicationFactor:3 Configs:
    Topic: test-flow    Partition: 0    Leader: 3   Replicas: 3,2,1 Isr: 3,2,1
    Topic: test-flow    Partition: 1    Leader: 1   Replicas: 1,3,2 Isr: 1,3,2
    Topic: test-flow    Partition: 2    Leader: 2   Replicas: 2,1,3 Isr: 2,1,3

消费者日志

Received FindCoordinator response ClientResponse(receivedTimeMs=1529508772673, latencyMs=217, disconnected=false, requestHeader=RequestHeader(apiKey=FIND_COORDINATOR, apiVersion=1, clientId=consumer-1, correlationId=0), responseBody=FindCoordinatorResponse(throttleTimeMs=0, errorMessage='null', error=NONE, node=myserver3:9092 (id: 3 rack: null)))

但是如果 leader 宕机了——我在消费者中得到了错误(systemctl stop kafka):

节点 3 不可用。好的

./kafka-topics.sh --describe --zookeeper localhost:2181 --topic test-flow
Topic:test-flow PartitionCount:3    ReplicationFactor:3 Configs:
    Topic: test-flow    Partition: 0    Leader: 2   Replicas: 3,2,1 Isr: 2,1
    Topic: test-flow    Partition: 1    Leader: 1   Replicas: 1,3,2 Isr: 1,2
    Topic: test-flow    Partition: 2    Leader: 2   Replicas: 2,1,3 Isr: 2,1

消费者日志

Received FindCoordinator response 
ClientResponse(receivedTimeMs=1529507314193, latencyMs=36, 
disconnected=false, 
requestHeader=RequestHeader(apiKey=FIND_COORDINATOR, apiVersion=1, 
clientId=consumer-1, correlationId=149), 
responseBody=FindCoordinatorResponse(throttleTimeMs=0, 
errorMessage='null', error=COORDINATOR_NOT_AVAILABLE, node=:-1 (id: -1 
rack: null)))

- Group coordinator lookup failed: The coordinator is not available.
- Coordinator discovery failed, refreshing metadata

消费者无法连接,直到领导者关闭或与另一个消费者组重新连接。

不明白为什么会这样? 消费者应该重新平衡到另一个经纪人,但事实并非如此。

最佳答案

尝试将属性添加到 server.conf 并清理 zookeeper 缓存。 应该有帮助

offsets.topic.replication.factor=3
default.replication.factor=3

此问题的根本原因是无法在节点之间分配主题偏移量。

自动生成的主题: __consumer_offsets

可以通过

$ ./kafka-topics.sh --describe --zookeeper localhost:2181 --topic __consumer_offsets

关注本文: https://kafka.apache.org/documentation/#prodconfig

默认情况下,它使用 RF - 1 创建 __consumer_offsets

重要的是在 kafka/cluster 启动之前配置复制因子。 否则,它可能会像您的情况一样在重新配置实例时带来一些问题。

关于java - 卡夫卡 - 经纪人 : Group coordinator not available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50952081/

相关文章:

java - 需要 android 计时器秒数重置为 60

java - 使用 writer 在 Clojure 中编写 CSV 文件

linux - 如何在 Linux (Gnome) 中多路复用多个视频流

node.js - AWS Lambda - PutItem Dynamo DB 回调未调用

python - 从 python-kafka 转换为 confluent kafka - 如何使用 SASL_SSL、OAUTHBEARER 和 Tokens 创建奇偶校验

performance - 使用 TLS 的 Kafka 消费者。性能问题

java - 自定义表模型中的 JComboBox

java - DecimalFormat 给出的货币符号看起来无效

linux - 为什么重定向输出会影响 bash 中的测试结果?

linux - 是否有 "who am i"和 "logname"的简单替代方案?