我有4个Kafka与Debezium一起运行。几天运行良好后,三台kafka机器在一段时间内退出网络,并且在connectDistributed.out日志文件上,我收到了很多带有以下错误的消息:

[2020-05-04 13:27:02,526] WARN [Consumer clientId=connector-consumer-sink-warehouse-6,
groupId=connect-sink-warehouse] 133 partitions have leader brokers without a matching listener,
 including [SCT010-2, SC2010-2, SC1010-0, SC1010-1, SF4010-0, SUB010-0, SUB010-1, SWP010-0,
SWP010-1, ACO010-2] (org.apache.kafka.clients.NetworkClient:1044)


我有4台Kafka机器,经纪人从0到3

192.168.240.70 - Broker 0
192.168.240.71 - Broker 1
192.168.240.72 - Broker 2
192.168.240.73 - Broker 3


动物园管理员:

192.168.240.70

遵循我的server.properties-除了listenersadvertised.listeners指向与安装Kafka的计算机相同的IP,并且broker.id必须唯一(从0到3)之外,其他内容相同:

broker.id=0
listeners=CONTROLLER://192.168.240.70:9091,INTERNAL://192.168.240.70:9092
advertised.listeners=CONTROLLER://192.168.240.70:9091,INTERNAL://192.168.240.70:9092
listener.security.protocol.map=CONTROLLER:PLAINTEXT,INTERNAL:PLAINTEXT
control.plane.listener.name=CONTROLLER
inter.broker.listener.name=INTERNAL
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/home/william/kafka/data/kafka/
num.partitions=3
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=1
log.retention.hours=150
log.retention.bytes=200000000000
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000

zookeeper.connect=192.168.240.70:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=3


kafka主题(配置/偏移和状态)显示复制中的问题。有一些与监听器相关的配置吗?

java - 卡夫卡在一段时间后停止,经纪人流失-LMLPHP

关于连接器的运行状况:

java - 卡夫卡在一段时间后停止,经纪人流失-LMLPHP

并且,在kafka上连接。仅介绍一位经纪人:

java - 卡夫卡在一段时间后停止,经纪人流失-LMLPHP

如何解决此错误?似乎与领导者选举或长时间没有经纪人访问权而找到领导者有关。

最佳答案

经过研究,我发现了问题所在。因此,要在此处提供帮助,请遵循有关问题的概念:

当我们创建分布式Kafka系统时,我们围绕经纪人分布主题并创建领导者选举人。以我为例,我有4位经纪人由Zookeeper即时选择,他们将成为某些主题的负责人。

由于四台Kafka服务器中的三台停机了一个多小时,Zookeeper试图联系但无法联系领导者。由于我的配置指出需要将同一主题复制到三个代理,因此Zookeeper无法保持该主题的健康。

我们有重新平衡配置:group.initial.rebalance.delay.ms=3,它尝试每3秒重新平衡一次。而且,在一名Kafka经纪人破产之前,我们尝试重新连接的次数有限。发生了尝试,而Zookeeper无法联系到丢失的经纪人。

换句话说,经纪人并没有失败,他们只是无法通过网络问题到达Zookeeper,因此,过了一段时间,来自Zookeeper的尝试被停止了,过了一段时间,Kafka经纪人又可以到达了,但是,重新平衡被停止。

只是,只需重启我的经纪人以告诉Zookeeper重新连接就解决了我的问题,因为在重启时,Kafka经纪人告诉Zookeeper:-我在这里,等待您的指示。 Zookeeper意识到失去的领导者后,将所有东西重新连接到正确的位置。

因此,试图有所帮助。

07-26 07:07