Во время непрерывного обновления / перезапуска, как определить, когда брокер kafka «готов»? - PullRequest
0 голосов
/ 18 января 2019

Мне нужно автоматизировать повторный запуск кластера кафки (3 брокера кафки). Я могу легко сделать это вручную - перезапустить один за другим, проверяя журнал, чтобы увидеть, когда все в порядке (например, когда новый процесс присоединился к кластеру).

Какой хороший способ автоматизировать эту проверку? Как я могу спросить брокера, работает ли он, связан ли он с его коллегами, все ли актуальные темы и тому подобное? В моем скрипте перезапуска у меня есть доступ к метрикам, но, честно говоря, я не видел там такого, который дает мне ясную картину.

Другим способом было бы спросить, какой будет хороший тест "готовности", который не просто проверяет какой-либо порт TCP / IP, но смотрит на реальный сервер ...

Ответы [ 4 ]

0 голосов
/ 05 июля 2019

Kakfa Utils от Yelp - один из лучших инструментов, который можно использовать для определения, когда брокер kafka «готов». В частности, kafka_rolling_restart - это инструмент, который получает сведения о брокере из метрик zookeeper и URP (Under Replicated Partition) от каждого брокера. При перезапуске брокера периодически собираются все URP в кластере Kafka, а когда он обнуляется, он перезапускает другого брокера. Брокер контроллера перезапускается в последний раз.

0 голосов
/ 19 января 2019

В дополнение к тому, что сказал @ cricket_007, вы также можете провести простой опрос на порту брокера, чтобы убедиться, что он работает, а затем выполнить посредническую команду типа kafka.tools.GetOffsetShell, чтобы убедиться, что он работает правильно.

0 голосов
/ 15 марта 2019

Предполагая, что ваш кластер работоспособен в начале операции перезапуска, как минимум, после каждого перезапуска брокера вы должны убедиться, что число недостаточно реплицированных разделов возвращается к нулю, прежде чем перезапускать следующий брокер.

Как упоминали предыдущие респонденты, существует существующий код для автоматизации этого. Я сам не пользуюсь Jolikia, но мое решение (над которым я сейчас работаю) также использует метрики JMX.

0 голосов
/ 18 января 2019

Я бы предложил выставить метрики JMX и отслеживать следующее для работоспособности кластера

  • количество контроллеров (должно быть 1 для всего кластера)
  • для реплицируемых разделов (должно быть ноль)для здорового кластера)
  • выборы нечистого лидера (если вы не отключите это в server.properties, убедитесь, что в метрических счетах их нет)
  • ISR сокращается в течение разумного периода времени, например10-минутное окно (не должно быть ни одного)

Кроме того, Yelp имеет инструмент для повторного запуска , реализованный в Python, для которого требуются агенты Jolokia JMX, установленные на брокерах, и опрашивает метрикичтобы убедиться, что некоторые из вышеуказанных условий выполняются

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...