Утилита автоматического распределения партиций#

Описание#

Утилита автоматически поддерживает оптимальное распределении топиков кластера. Для этого утилита сохраняет историю изменений топологии кластера: состава брокера и распределения партиций топиков. На основе истории принимается решение о необходимости перераспределения. Новое распределение совпадает с выводом kafka-reassign-partitions.sh -generate.

Топик нуждается в перераспределении, если:

  • состав кластера изменился — брокер выпал или был добавлен;

  • прошел тайм-аут добавления (удаления) брокера;

  • распределение не изменялось вручную с момента последнего изменения состава кластера;

  • текущий состав кластера отличается от базового. Базовый состав — состав кластера в момент создания или последнего изменения распределения.

Примечание

В автоматическом режиме работы выполняются только в технологическое окно. Новое и предыдущее распределение перед применением сохраняются в файлы в каталоге, который указан в параметре ru.sbrf.kafka.balancer.work-dir.

Ожидается, что утилита будет настроена на периодический автоматический запуск средствами ОС.

Режимы работы#

Утилита может работать в следующих режимах:

  • --update-history — проверяет топологию кластера и добавляет новое состояние в историю, если требуется;

  • --print-history — выводит историю в консоль и в лог;

  • --print-topics-to-reassign — находит и выводит в консоль и в лог список топиков, для которых требуется изменить распределение;

  • --generate — создает и сохраняет в указанный файл новое распределение для топиков, нуждающихся в перераспределении;

  • --reassignment-json-file — файл для сохранения нового распределения;

  • --execute — создает и применяет новое распределение для топиков, нуждающихся в перераспределении;

  • --auto — полностью автоматический режим работы:

    • обновляет историю;

    • при наличии топиков, нуждающихся в перераспределении, создает и применяет новое распределение.

Внимание

В автоматическом режиме новое распределение применяется только в рамках технологического окна, указанного в параметре ru.sbrf.kafka.balancer.operational-period.

Параметры#

Параметры для запуска утилиты:

  • --bootstrap-server — адрес kafka-сервера для подключения. Обязательный параметр;

  • --command-config — property-файл, содержащий конфигурацию, передаваемую AdminClient для подключения к kafka-брокеру (настройки SSL и т.п.).

Конфигурация#

Параметр

Значение по умолчанию

Описание

ru.sbrf.kafka.balancer.add-node-threshold-ms

3600000 (1 час)

Тайм-аут добавления брокера

ru.sbrf.kafka.balancer.leave-node-threshold-ms

3600000 (1 час)

Тайм-аут ухода брокера

ru.sbrf.kafka.balancer.include-topics

null

Регулярное выражение. Задает шаблон топиков, которые будут перераспределяться утилитой

ru.sbrf.kafka.balancer.exclude-topics

null

Регулярное выражение. Задает шаблон топиков, которые не будут перераспределяться утилитой

ru.sbrf.kafka.balancer.work-dir

./reassign_files

Каталог, в который сохраняются файлы с новым и предыдущим распределением

ru.sbrf.kafka.balancer.compressed

false

Включает сжатие данных истории

ru.sbrf.kafka.balancer.operational-period

null

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

ru.sbrf.kafka.balancer.rack-awareness

false

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

ru.sbrf.kafka.balancer.throttle

-1

Ограничение скорости перемещения партиций между брокерами, Байт/с. Минимальное значение 1 Байт/с. При значении -1 ограничение выключено

ru.sbrf.kafka.balancer.replica-alter-log-dirs-throttle

-1

Ограничение скорости перемещения реплик между директориями, хранящими лог-файлы, на одном и том же брокере, Байт/с. Минимальное значение 1 Байт/с. При значении -1 ограничение выключено

ru.sbrf.kafka.balancer.timeout

10

Максимальное время ожидания назначения директории реплики лог-файлов, мс