Утилита автоматического распределения партиций#
Описание#
Утилита автоматически поддерживает оптимальное распределении топиков кластера. Для этого утилита сохраняет историю изменений топологии кластера: состава брокера и распределения партиций топиков. На основе истории принимается решение о необходимости перераспределения. Новое распределение совпадает с выводом 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 и т.п.).
Конфигурация#
Параметр |
Значение по умолчанию |
Описание |
|---|---|---|
|
|
Тайм-аут добавления брокера |
|
|
Тайм-аут ухода брокера |
|
|
Регулярное выражение. Задает шаблон топиков, которые будут перераспределяться утилитой |
|
|
Регулярное выражение. Задает шаблон топиков, которые не будут перераспределяться утилитой |
|
|
Каталог, в который сохраняются файлы с новым и предыдущим распределением |
|
|
Включает сжатие данных истории |
|
|
Cron-выражение, определяющее технологическое окно. В указанный промежуток разрешено автоматически изменять распределение |
|
|
Включает функцию rack awareness, которая распределяет реплики одного и того же раздела по разным стойкам для уменьшения риска потери данных в случае одновременного сбоя всех брокеров в стойке |
|
|
Ограничение скорости перемещения партиций между брокерами, Байт/с. Минимальное значение 1 Байт/с. При значении |
|
|
Ограничение скорости перемещения реплик между директориями, хранящими лог-файлы, на одном и том же брокере, Байт/с. Минимальное значение 1 Байт/с. При значении |
|
|
Максимальное время ожидания назначения директории реплики лог-файлов, мс |