Дросселирование задач в диспетчере кластеров OpenSearch: Как использовать и многое другое

Узлы менеджера кластера (до OpenSearch 2.0 они назывались мастер-узлами) отвечают за хранение метаданных кластера, отслеживание состояния кластера и информации о том, какие настройки кластера, какие шарды расположены на каких узлах, а также за выполнение задач администрирования.

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

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

Дросселирование задач менеджера кластера

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

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

Поддерживаемые типы задач:

  • create-index
  • update-settings
  • cluster-update-settings
  • auto-create
  • delete-index
  • delete-dangling-index
  • create-data-stream
  • remove-data-stream
  • rollover-index
  • index-aliases
  • put-mapping
  • create-index-template
  • remove-index-template
  • create-component-template
  • remove-component-template
  • create-index-template-v2
  • remove-index-template-v2
  • put-pipeline
  • delete-pipeline
  • create-persistent-task
  • finish-persistent-task
  • remove-persistent-task
  • update-task-state
  • put-script
  • delete-script
  • put-repository
  • delete-repository
  • create-snapshot
  • delete-snapshot
  • update-snapshot-state
  • restore-snapshot
  • cluster-reroute-api

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

Как использовать дросселирование задач в кластер менеджере

Чтобы использовать эту настройку, пользователи должны применить ее в настройках кластера:

Приведенная выше конфигурация будет отклонять задачи put-mapping после 100 ожидающих задач, а create-index - после 25 ожидающих задач.

Недавний Pull Request позволил динамически настраивать задержку дросселирования с помощью параметров базовой и максимальной задержки.

  • base.delay (по умолчанию 5 с): Этот параметр представляет собой начальную задержку перед первой попыткой повторной отправки после того, как задание было отклонено. Здесь "base.delay" имеет значение "1s", что означает, что система будет ждать 1 секунду, прежде чем попытаться повторно отправить задание после того, как оно было отклонено.
  • max.delay (по умолчанию 30 с): Эта настройка представляет собой максимальную задержку между повторными попытками. Поскольку система продолжает действовать в пределах порога дросселирования и увеличивает задержку в соответствии со стратегией экспоненциального отката, задержка никогда не превысит значение "max.delay". В данном случае оно установлено на "25 с", поэтому, даже если расчеты экспоненциального отката требуют большей задержки, система не будет ждать более 25 секунд между попытками повтора.

Цель этих настроек - обеспечить баланс между оперативным обращением к повторным попыткам и разумным временем повторных попыток.

API статистики

Пользователи могут проверить текущее состояние дросселирования задач менеджера кластера, используя следующее:

Раздел ответа о дросселировании выглядит следующим образом:

Заключение

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

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

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

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий