TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #178 150
Чиним URP в kafka

В kafka-ui неожиданно обнаружили всего 1 URP (Under-Replicated Partition).

Идем на машину, находим проблемную партицию и "выпавший" брокер:
kafka-topics.sh \
--bootstrap-server <ip>:<port> \
--under-replicated-partitions --describe

Видим что-то вроде:
Topic: <topic_name> Partition: 4 Leader: 3 Replicas: 3,2 Isr: 3


Проблема в <topic_name>, лидер 3, реплики 3,2, но в ISR только 3, значит брокер 2 выпал из ISR.

Смотрим настройки топика:
kafka-topics.sh \
--bootstrap-server <ip>:<port> \
--describe --topic <topic_name> \


Запоминаем значение max.message.bytes. У меня был 10 мегабайт.

На втором брокере смотрим параметры:
kafka-configs.sh \
--bootstrap-server <ip>:<port> \
--entity-type brokers --entity-name <broker_id> \
--describe --all | egrep 'replica\.fetch\.max\.bytes|replica\.fetch\.response\.max\.bytes|message\.max\.bytes'


Параметр replica.fetch.max.bytes=1048576.
Видим несоответствие: топик допускает сообщения до 10мб, а у фолловера всего 1мб. Такая реплика физически не сможет забрать большой батч. Отсюда URP.

Нужно поднять параметр replica.fetch.max.bytes, руками можно так:
for id in 1 2 3; do
kafka-configs.sh --bootstrap-server <ip>:<port> \
--entity-type brokers --entity-name $id --alter \
--add-config 'replica.fetch.max.bytes=20971520';
done


Немного ждем и проверяем URP:
kafka-topics.sh \
--bootstrap-server <ip>:<port> \
--under-replicated-partitions --describe


Ожидаем, что будет пустой вывод.
Также можно проверить сам топик:
kafka-topics.sh \
--bootstrap-server <ip>:<port> \
--describe --topic <topic_name> | grep 'Partition: 4'


Ожидаемый вывод
Topic: <topic_name> Partition: 4 Leader: 3 Replicas: 3,2 Isr: 3, 2


ISR (In-Sync Replicas) - это набор реплик партиций kafka, которые идут в ногу с лидером.
UDR - партиции, где размер ISR < replication.factor.

#kafka
  • 🔥 1
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. Jun 4, 2026Немножко про молекула тесты... У нас принято использовать в переменных lookup плагин для д…
  4. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  5. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  6. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →