kafka报 1 partitions have leader brokers without a matching listener

開開新新 发表于: 2020-11-19   最后更新时间: 2021-09-16 14:49:08   15,960 游览

broker集群每台主机上都没有显示错误信息,但是kafka之类的工具启动的话会报错,提示“1 partitions have leader brokers without a matching listener”,在这之前我滚动升级过kafka集群。

WARN 1 [ XNIO-1 task-5] k.c.NetworkClient$DefaultMetadataUpdater : [Consumer clientId=kafdrop-consumer, groupId=null] 1 partitions have leader brokers without a matching listener, including [IIoT-0]

./kafka-topics.sh --zookeeper localhost:2181 --describe --topic IIoT
Topic: IIoT    PartitionCount: 3    ReplicationFactor: 1    Configs: 
    Topic: IIoT    Partition: 0    Leader: none    Replicas: 3    Isr: 3
    Topic: IIoT    Partition: 1    Leader: 1    Replicas: 1    Isr: 1
    Topic: IIoT    Partition: 2    Leader: 2    Replicas: 2    Isr: 2
./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.10.145:9092 --topic IIoT
Error: partition 0 does not have a leader. Skip getting offsets
[2020-11-19 08:50:35,271] WARN [Consumer clientId=GetOffsetShell, groupId=null] 1 partitions have leader brokers without a matching listener, including [IIoT-0] (org.apache.kafka.clients.NetworkClient)
IIoT:1:20213
IIoT:2:11589

我已经设置了auto.leader.rebalance.enable=true,感觉是不是数据丢了?

这种只有一个分区没有leader的情况,修复的方法 也是重新选举分区leader吗?

发表于 2020-11-19
添加评论

你做了什么操作?leader都不选举了。

開開新新 -> 半兽人 4年前

有什么办法可以在保留现有分区消息的情况下,删除掉这个错误分区?

半兽人 -> 開開新新 4年前

第一次见这种副本在,但是不切的错误。

開開新新 -> 半兽人 4年前

给点处理思路

分享下有什么方法

開開新新 -> 半兽人 4年前
./kafka-leader-election.sh --election-type preferred --path-to-json-file replica-election.json --bootstrap-server 192.168.10.145:9092
Exception in thread "main" kafka.admin.AdminOperationException: Replica election data is empty
at kafka.admin.LeaderElectionCommand$.parseReplicaElectionData(LeaderElectionCommand.scala:115)
at kafka.admin.LeaderElectionCommand$.$anonfun$run$1(LeaderElectionCommand.scala:56)
at kafka.admin.LeaderElectionCommand$.run(LeaderElectionCommand.scala:55)
at kafka.admin.LeaderElectionCommand$.main(LeaderElectionCommand.scala:41)
at kafka.admin.LeaderElectionCommand.main(LeaderElectionCommand.scala)

重分区也没行。 有没有办法删除这个分区?

半兽人 -> 開開新新 4年前

你broker.id有3的吗?

開開新新 -> 半兽人 4年前

原先有的(broker 1,2,3),后来我升级的时候忘记改了(用了默认的broker 0开始,1,2)。

開開新新 -> 半兽人 4年前

你是怎么想到broker3的?

開開新新 -> 半兽人 4年前

今天我找了个工具一看所有topic的信息都缺胳膊少腿(都是少了某个分区),我将broker编号从1,2,3 恢复到0,1,2,然后从kafkatool看到每个topic的分区数显示是正常了。 有没什么方法查看当前kafka集群topic和broker的健康状态?topic健康的话只能一个个查看分区信息?

改回去后,开发那边就无法写入topic,读取也会显示超时。 咋办?

[2020-11-20T11:35:17,800][INFO ][org.apache.kafka.clients.consumer.internals.AbstractCoordinator] [Consumer clientId=kafka-nginx-access-dev01-0, groupId=kafka-nginx-access-dev] Group coordinator 192.168.10.145:9092 (id: 2147483646 rack: null) is unavailable or invalid, will attempt rediscovery
[2020-11-20T11:35:17,802][INFO ][org.apache.kafka.clients.consumer.internals.AbstractCoordinator] [Consumer clientId=kafka-nginx-access-dev01-1, groupId=kafka-nginx-access-dev] Group coordinator 192.168.10.145:9092 (id: 2147483646 rack: null) is unavailable or invalid, will attempt rediscovery
[2020-11-20T11:35:17,803][INFO ][org.apache.kafka.clients.consumer.internals.AbstractCoordinator] [Consumer clientId=kafka-nginx-error01-3, groupId=kafka-nginx-error] Group coordinator 192.168.10.145:9092 (id: 2147483646 rack: null) is unavailable or invalid, will attempt rediscovery
[2020-11-20T11:35:17,803][INFO ][org.apache.kafka.clients.consumer.internals.AbstractCoordinator] [Consumer clientId=kafka-nginx-error01-1, groupId=kafka-nginx-error] Group coordinator 192.168.10.145:9092 (id: 2147483646 rack: null) is unavailable or invalid, will attempt rediscovery
[2020-11-20T11:35:17,803][INFO ][org.apache.kafka.clients.consumer.internals.AbstractCoordinator] [Consumer clientId=kafka-nginx-access-dev01-3, groupId=kafka-nginx-access-dev] Group coordinator 192.168.10.145:9092 (id: 2147483646 rack: null) is unavailable or invalid, will attempt rediscovery

我截一段logstash的日志

开发反馈指定分区0可以写入,如果使用分区轮训写入会报错

半兽人 -> 開開新新 4年前

我看到你Isr: 3,但是其他分区并没有它。

半兽人 -> 開開新新 4年前
## topic列表查询(支持0.9版本+)
bin/kafka-topics.sh --list --bootstrap-server localhost:9092

参考:https://www.orchome.com/454

半兽人 -> 開開新新 4年前

生产者客户端是java的么?
可参考:https://www.orchome.com/303
(ps:你上面的日志是消费者,而且是info信息)

開開新新 -> 半兽人 4年前

你是说kafka-run-class.sh kafka.tools.GetOffsetShell 结果中没有broker 3?

開開新新 -> 半兽人 4年前

我已经恢复集群了。

原先broker.id改了,部分topic无法显示丢失的broker分区。我将broker.id 改回去,然后重启zookeeper(因为里面保存broker信息),但是前面这个过程产生的数据都丢了。

半兽人 -> 開開新新 4年前
./kafka-topics.sh --zookeeper localhost:2181 --describe --topic IIoT

这里看到的。

broker.id是kafka集群识别每个节点的身份标识,如果身份是错的,那数据是错乱的(如分区交集),不可逆。

開開新新 -> 半兽人 4年前

题外话,我想在正式环境 建一个topic,生产者应该给什么配置能保证数据高可用和稳定? 比如副本因子,broker几个给几个。

半兽人 -> 開開新新 4年前

你新提个问题吧,把生产的规模,场景,大致的吞吐量、业务的高可用程度描述一下。

Andy -> 半兽人 3年前

你好,请问我三台kafka服务是用docker起的,也都没有挂掉,但是还是报了这个错,请问有什么解决措施吗?

2021-06-18 13:25:38.094 WARN 6 --- [ool-13-thread-1] org.apache.kafka.clients.NetworkClient : [Consumer clientId=consumer-di_gn_test-3, groupId=di_gn_test] 1 partitions have leader brokers without a matching listener, including [lineage_impala_log2-0]

半兽人 -> Andy 3年前

只是个警告了,第一次都会这样,正常输出。

我执行了滚动升级,其他topic都没有问题。

你的答案

查看kafka相关的其他问题或提一个您自己的问题