Kafka Producer — не удалось загрузить / обновить метаданные после перезапуска брокеров в кластере

#apache-kafka #kafka-producer-api

#apache-kafka #kafka-producer-api

Вопрос:

у нас есть кластер kafka с 5 узлами и 3 хранителями зоопарка, и все темы имеют коэффициент репликации 3. В настоящее время используются клиенты Kafka и kafka (2.2.0) и версия Zookeeper (5.2.1)

Когда пара брокеров не работает, производителям не удается отправить сообщение с приведенной ниже ошибкой.

org.apache.kafka.common.errors.Исключение TimeoutException: тема testTopic отсутствует в метаданных после 120000 мс.

Клиент, похоже, пропускает обновление метаданных, сравнивая последнюю эпоху лидера Журналы отладки от клиента:

Конфигурация кластера :

 --override num.network.threads=3 --override num.io.threads=8 --override default.replication.factor=3 --override auto.create.topics.enable=true --override delete.topic.enable=true --override socket.send.buffer.bytes=102400 --override socket.receive.buffer.bytes=102400 --override socket.request.max.bytes=104857600 --override num.partitions=30 --override num.recovery.threads.per.data.dir=1 --override offsets.topic.replication.factor=3 --override transaction.state.log.replication.factor=3 --override transaction.state.log.min.isr=1 --override log.retention.hours=48 --override log.segment.bytes=1073741824 --override log.retention.check.interval.ms=300000 --override zookeeper.connection.timeout.ms=6000 --override confluent.support.metrics.enable=true --override group.initial.rebalance.delay.ms=0 --override confluent.support.customer.id=anonymous 
 

Конфигурация производителя:

 acks = 1
    batch.size = 8192
    bootstrap.servers = []
    buffer.memory = 33554432
    client.dns.lookup = default
    client.id = C02Z93MPLVCH
    compression.type = none
    connections.max.idle.ms = 540000
    delivery.timeout.ms = 120000
    enable.idempotence = false
    interceptor.classes = []
    key.serializer = class org.apache.kafka.common.serialization.StringSerializer
    linger.ms = 0
    max.block.ms = 120000
    max.in.flight.requests.per.connection = 5
    max.request.size = 1048576
    metadata.max.age.ms = 300000
    metric.reporters = []
    metrics.num.samples = 2
    metrics.recording.level = INFO
    metrics.sample.window.ms = 30000
    partitioner.class = class org.apache.kafka.clients.producer.internals.DefaultPartitioner
    receive.buffer.bytes = 32768
    reconnect.backoff.max.ms = 20000
    reconnect.backoff.ms = 20000
    request.timeout.ms = 300000
    retries = 2
    retry.backoff.ms = 500
 

Кто-нибудь сталкивался с такой же проблемой? — обычно мы ожидаем, что клиенты kafka будут загружать метаданные, если брокеры не работают после нескольких попыток.Нам пришлось бы перезапустить сервер, чтобы снова инициализировать соединения после ожидания в течение нескольких часов.

Это ожидаемое поведение?