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吗?
你做了什么操作?leader都不选举了。
有什么办法可以在保留现有分区消息的情况下,删除掉这个错误分区?
第一次见这种副本在,但是不切的错误。
给点处理思路
分享下有什么方法
./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)
重分区也没行。 有没有办法删除这个分区?
你broker.id有3的吗?
原先有的(broker 1,2,3),后来我升级的时候忘记改了(用了默认的broker 0开始,1,2)。
你是怎么想到broker3的?
今天我找了个工具一看所有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可以写入,如果使用分区轮训写入会报错
我看到你
Isr: 3
,但是其他分区并没有它。## topic列表查询(支持0.9版本+) bin/kafka-topics.sh --list --bootstrap-server localhost:9092
参考:https://www.orchome.com/454
生产者客户端是java的么?
可参考:https://www.orchome.com/303
(ps:你上面的日志是消费者,而且是info信息)
你是说kafka-run-class.sh kafka.tools.GetOffsetShell 结果中没有broker 3?
我已经恢复集群了。
原先broker.id改了,部分topic无法显示丢失的broker分区。我将broker.id 改回去,然后重启zookeeper(因为里面保存broker信息),但是前面这个过程产生的数据都丢了。
./kafka-topics.sh --zookeeper localhost:2181 --describe --topic IIoT
这里看到的。
broker.id是kafka集群识别每个节点的身份标识,如果身份是错的,那数据是错乱的(如分区交集),不可逆。
题外话,我想在正式环境 建一个topic,生产者应该给什么配置能保证数据高可用和稳定? 比如副本因子,broker几个给几个。
你新提个问题吧,把生产的规模,场景,大致的吞吐量、业务的高可用程度描述一下。
你好,请问我三台kafka服务是用docker起的,也都没有挂掉,但是还是报了这个错,请问有什么解决措施吗?
只是个警告了,第一次都会这样,正常输出。
我执行了滚动升级,其他topic都没有问题。
你的答案