Kafka 在一定时间后停止,丢失经纪人

Kafka stops after a certain period of time, lost brokers

我有 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机器,broker从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.listenersbroker.id指向安装Kafka的机器的相同IP外,其他都是一样的必须是唯一的(从 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 主题(configs/offsets 和状态)显示复制问题。有一些跟listeners config相关的?

关于连接器健康状况:

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

我该如何解决这个错误?好像跟leader选举或者长时间没有broker访问找到leader有关。

经过研究我发现了问题。所以,为了在这里提供帮助,请遵循有关问题的概念:

当我们创建分布式 Kafka 系统时,我们会围绕代理分发主题并创建领导者选举人。就我而言,我有 4 个 Zookeeper 即时选择的经纪人,他们将成为某些主题的领导者。

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

我们有重新平衡配置:group.initial.rebalance.delay.ms=3 每 3 秒尝试重新平衡一次。在一个 Kafka 代理关闭之前,我们尝试重新连接的次数有限。发生了尝试,Zookeeper 无法连接到丢失的代理。

换句话说,broker 没有宕机,它们只是因为网络问题无法访问 Zookeeper,所以过了一段时间,来自 Zookeeper 的尝试停止了,过了一段时间,Kafka broker 又可以访问了但是,重新平衡的尝试已停止。

只需重新启动我的经纪人告诉动物园管理员重新连接就解决了我的问题,因为在重新启动时,卡夫卡经纪人告诉动物园管理员:-我在这里,等待您的指示。 Zookeeper 认识到丢失的领导者,将所有内容重新连接到正确的位置。

所以,努力提供帮助。