Автоматическая ребалансировка лидеров партиций#
По умолчанию в Corax включена автоматическая ребалансировка лидеров партиций. Параметр auto.leader.rebalance.enable установлен в значение true.
Лидер для каждой партиции выбирается независимо от состояния других партиций. Если партиция синхронизирована на брокере, этот брокер может стать лидером. Такой режим вызывает повышенную нагрузку на диск в следующем сценарии:
Брокер остановлен.
Партиции брокера сменили лидера на оставшиеся в кластере реплики.
В часть партиций записаны новые данные.
Брокер вернулся в кластер.
Началась репликация данных на вернувшийся брокер.
Часть партиций синхронизирована, по другим продолжается репликация.
Для синхронизированных партиций сменился лидер — им стал вернувшийся брокер.
На синхронизированные партиции поступила нагрузка на фоне продолжающейся репликации.
Нагрузка на диск выросла, поскольку одновременно шла репликация и обработка запросов.
Параметр auto.leader.rebalance.on.not.isr.broker.enable#
Для предотвращения описанного сценария используйте параметр auto.leader.rebalance.on.not.isr.broker.enable. По умолчанию параметр включен (true), то есть Corax работает в стандартном режиме.
При отключении параметра (auto.leader.rebalance.on.not.isr.broker.enable=false) брокер с несинхронизированными репликами не участвует в выборах лидера для остальных партиций. Лидером может стать только брокер, все партиции которого синхронизированы.
Способы применения#
Укажите параметр в файле server.properties:
auto.leader.rebalance.on.not.isr.broker.enable=false
Или задайте динамически для всех брокеров кластера:
bin/kafka-configs ... --alter \
--add-config 'auto.leader.rebalance.on.not.isr.broker.enable=false' \
--entity-type broker
Внимание
Динамическое изменение параметра возможно только для всего кластера. При попытке изменить значение для конкретного брокера операция завершится ошибкой: Cannot update these configs for specified broker id, please use default cluster level: Set(auto.leader.rebalance.on.not.isr.broker.enable)