Kafka - 经纪人:集团协调员不可用

Yak*_*xey 7 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
Run Code Online (Sandbox Code Playgroud)

使用kafka-topics shell脚本创建具有复制因子3和分区3的主题.

./kafka-topics.sh --create --zookeeper localhost:2181 --topic test-flow --partitions 3 --replication-factor 3
Run Code Online (Sandbox Code Playgroud)

并使用group 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
Run Code Online (Sandbox Code Playgroud)

消费者的日志

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)))
Run Code Online (Sandbox Code Playgroud)

但是如果领导者失败了 - 我在消费者中得到了错误(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
Run Code Online (Sandbox Code Playgroud)

消费者的日志

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
Run Code Online (Sandbox Code Playgroud)

消费者无法连接,直到领导者关闭或重新连接另一个消费者群体.

无法理解为什么会这样?消费者应该重新平衡到另一个经纪人,但事实并非如此.

Ole*_*kin 13

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

offsets.topic.replication.factor=3
default.replication.factor=3
Run Code Online (Sandbox Code Playgroud)

此问题的根本原因是不可能在节点之间分配主题偏移.

自动生成的主题:__ consumer_offsets

./kafka-topics.sh --describe --zookeeper本地主机:2181个--topic __consumer_offsets您可以通过检查

请注意这篇文章:https: //kafka.apache.org/documentation/#prodconfig

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

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

  • 这并没有解决我的环境中的问题。我仍然看到错误组协调器查找失败:协调器不可用 (3认同)
  • @Oleksandr Loushkin谢谢,您救了我的命。我正在运行一个内存卡夫卡进行单元测试,而生产者和消费者都没有工作。然后我将“ offsets.topic.replication.factor”的值更改为“ 1”,并且可以正常工作。显然,如果启用了主题的自动主题创建,则此属性的默认值为3。 (2认同)