我有一个kafka集群(3台机器,每台机器上运行一个zookeeper和一个broker)我正在使用kafka\u exporter来监视消费者滞后度量,正常情况下工作正常。但是,当我杀了一个经纪人,普罗米修斯就不能从他那里得到度量http://machine1:9308/metric(kafka\u exporter metric endpoint),因为获取数据需要很长时间(1,5m),因此将超时。现在,如果我重新启动Kafka导出器,我将看到一些错误:
Cannot get leader of topic __consumer_offsets partition 20: kafka server: In the middle of a leadership election, there is currently no leader for this partition and hence it is unavailable for writes
当我运行命令:kafka-topics.bat--descripe--zookeeper machine1:2181、machine2:2181、machine3:2181--topic\u consumer\u offset时,结果是:
Topic:__consumer_offsets PartitionCount:50 ReplicationFactor:1 Configs:compression.type=producer,cleanup.policy=compact,segment.bytes=104857600
Topic: __consumer_offsets Partition: 0 Leader: -1 Replicas: 1 Isr: 1
Topic: __consumer_offsets Partition: 1 Leader: 2 Replicas: 2 Isr: 2
Topic: __consumer_offsets Partition: 49 Leader: 2 Replicas: 2 Isr: 2
这是配置错误吗?在这种情况下,我怎样才能得到消费者的滞后呢?“leader:-1”是一个错误?如果我永远关闭机器1,它还能正常工作吗?
1条答案
按热度按时间vmdwslir1#
leader为-1意味着集群中没有其他代理拥有分区数据的副本。
本例中的问题是,主题消费偏移量的复制因子是1,这意味着只有一个代理托管主题中任何分区的数据。如果丢失任何一个代理,代理上的所有分区都将不可用,从而导致主题不可用。所以,你的Kafka努出口商将无法阅读这个主题。
如果您想在代理丢失时继续导出使用者偏移量,解决方法是重新配置主题“使用者偏移量”,使复制因子大于1。
建议配置-复制因子-3,min.insync.replicas-2。