Перейти к основному содержимому
Версия: 5.0

Политики

Описание

Политики - это конфигурации управления индексами, описывающие:

  • состояния, в которых может находиться индекс, которые отражают этапы его жизненного цикла (например hot, warm, delete и т.д.)
  • действия, которые будут выполняться над индексами в определенном состоянии (например релокация на узлы холодного хранения или удаление)
  • условия, которые должны быть выполнены для перехода индекса из одного состояния в другое. Например, если возраст индекса превышает восемь недель, то его следует перевести в состояние, в котором определено действие удаления

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

В данной таблице перечислены соответствующие поля политики, которые доступны при заполнении через интерфейс (Навигационное меню - Управление индексами - Политики индекса - Создать политику):

Идентификатор поляНазвание поляОписаниеТипОбязательноеИзменяемое
policy_idИдентификатор политикиИдентификатор политики (отображаемое имя)stringДаНет
descriptionОписаниеОписание политикиstringДаДа
ism_templateISM ШаблоныПаттерн индексов к которому будет применяться политикаarray<object>НетДа
statesСостоянияСостояния, которые определены в политикеarray<object>ДаДа

Состояния

Состояние - это описание статуса, в котором в данный момент находится управляемый индекс. Одновременно управляемый индекс может находиться только в одном состоянии.

В данной таблице приведены параметры, которые можно настроить для состояния:

Идентификатор поляНазвание поляОписаниеТипОбязательное
nameНазвание состоянияНазвание состоянияstringДа
actionsДействияДействия, которые необходимо выполнить после входа в состояние. Дополнительная информация описана в разделе «Действия»array<object>Да
Определяется порядком в спискеПорядокРасположение относительно других состояний. Выбирается с помощью выпадающего списка, состоящего из имен созданных состояний.stringДа
transitionsПереходыСледующие состояния и условия, необходимые для перехода в эти состояния. Если переходов нет, то политика считает, что она завершена и может прекратить управление индексом. Если переходов несколько, то переход будет совершён в то состояние, для которого условие выполнилось первым. Дополнительная информация описана в разделе «Переходы».array<object>Да

Действия

Действия - это шаги, которые политика последовательно выполняет над индексом при его переходе в определенное состояние.

ISM выполняет действия в том порядке, в котором они определены. Например, если определены действия [A,B,C,D], ISM выполняет действие A, а затем переходит в период сна, интервал которого задается настройкой кластера plugins.index_state_management.job_interval. После окончания периода сна ISM продолжает выполнять оставшиеся действия одно за другим аналогично. Однако если ISM не может успешно выполнить действие A, операция завершается, а действия B, C и D не выполняются. Для таких случаев существует механизм повторных попыток, который будет описан ниже.

Опционально можно задать период тайм-аута действия, превышение которого приводит к принудительному завершению операции. Например, если тайм-аут установлен на 1d, а ISM не успел выполнить действие над индексом в течение одного дня (даже в рамках повторных попыток), то действие завершится неудачей.

Для любого действия можно задать настройки таймаута и повторных попыток:

Идентификатор поляНазвание поляОписаниеТипОбязательныйПо умолчанию
timeoutTаймаутМаксимально допустимое время выполнения действияstring (time unit, примеры значений: 30m, 4h, 7d)НетНе задано
countКоличество повторных попытокКоличество раз, которое следует повторять действие если оно завершается неудачейnumberДаНе задано
backoffПовторение попытки возвратаФункция обратного отсчета, используемая при ожидании повторных попытокstring (допустимые значения: Exponential, Constant, Linear)НетExponential
delayЗадержка повторной попыткиВремя ожидания между повторными попыткамиstring (time unit)НетНе задано

Следующий пример настройки действия имеет период тайм-аута в один час. Политика повторяет это действие три раза с экспоненциальным обратным отсчётом, с начальной задержкой в 10 минут:

Пример настройки таймаута и повторной попытки

Аналогичная конфигурация в json представлении:

{
"actions": {
"timeout": "1h",
"retry": {
"count": 3,
"backoff": "exponential",
"delay": "10m"
}
}
}

Остальные параметры определяются самим действием.

Список доступных действий

ISM поддерживает следующие действия:

Force Merge

Уменьшает количество сегментов индекса путем слияния сегментов отдельных шардов. Перед началом процесса слияния выполняется попытка перевести индекс в состояние read-only.

ПараметрОписаниеТипОбязательный
max_num_segmentsКоличество сегментов, на которые необходимо уменьшить шардnumberДа
wait_for_completionСледует ли ожидать выполнения действия или же вернуть ответ сразу после запуска действияbooleanНет
task_execution_timeoutТайм-аут выполнения задачи. Применяется только в том случае, если параметр wait_for_completion имеет значение false.string (time unit)Нет

Пример настройки:

{
"force_merge": {
"max_num_segments": 1
}
}

Read Only

Устанавливает индекс в режим только для чтения.

Пример настройки:

{
"read_only": {}
}

Read Write

Устанавливает индекс в режим для записи.

Пример настройки:

{
"read_write": {}
}

Replica Count

Устанавливает количество реплик индекса.

ПараметрОписаниеТипОбязательный
number_of_replicasОпределяет количество реплик индексаnumberДа

Пример настройки:

{
"replica_count": {
"number_of_replicas": 2
}
}

Shrink

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

ПараметрОписаниеТипОбязательный
num_new_shardsМаксимальное количество первичных шардов в уменьшенном индексе.integerДа, однако не может быть использован с max_shard_size или percentage_of_source_shards
max_shard_sizeМаксимальный размер в байтах шарда для целевого индекса.string (size unit, примеры значений: 500mb, 1gb)Да, однако не может быть использован с num_new_shards или percentage_of_source_shards
percentage_of_source_shardsПроцент от числа исходных первичных шардов, подлежащих сокращению. Этот параметр указывает минимальный процент, который следует использовать при сокращении числа первичных шардов. Должен находиться в диапазоне от 0.0 до 1.0 исключая значения.numberДа, однако не может быть использован с max_shard_size или num_new_shards
target_index_name_templateИмя сокращенного индекса. Принимает строки и переменные Mustache and (например {"source": "_shrunken"}).stringНет
aliasesПсевдонимы для добавления в новый индекс.array<object>Нет
force_unsafeСледует ли выполнять действие даже при отсутствии репликbooleanНет

Пример настройки:

{
"shrink": {
"num_new_shards": 1,
"target_index_name_template": {
"source": "_shrunken"
},
"aliases": [
{
"my-alias": {}
}
],
"force_unsafe": false
}
}

Если необходимо добавить псевдонимы к действию, то параметр должен содержать массив объектов псевдонимов. Например:

"aliases": [
{
"my-alias": {}
},
{
"my-second-alias": {
"is_write_index": false,
"filter": {
"multi_match": {
"query": "QUEEN",
"fields": ["speaker", "text_entry"]
}
},
"index_routing" : "1",
"search_routing" : "1"
}
},
]

Delete

Удаляет индекс.

Пример настройки:

"delete": {}

Rollover

Создает новый индекс, если текущий достиг лимитов по размеру, возрасту или количеству документов.

ПараметрОписаниеТипОбязательный
min_index_ageМинимальный возраст индексаstring (time unit)Нет, обязательно указание только одного из параметров.
min_doc_countМинимальное количество документовintegerНет, обязательно указание только одного из параметров.
min_sizeМинимальный общий размер индексаstring (size unit)Нет, обязательно указание только одного из параметров.
min_primary_shard_sizeМинимальный размер первичного шардаstring (size unit)Нет, обязательно указание только одного из параметров.

Пример настройки:

"rollover": {
"min_size": "100gb",
"min_index_age": "1d",
"min_primary_shard_size": "20gb",
"copy_alias": false
}

Allocation

Обновляет параметры аллокации индекса, в следствии чего происходит его перемещение на узел с заданным атрибутами.

ПараметрОписаниеТипОбязательный
requireИндекс размещается только на узлах, у которых указанные атрибуты соответствует всем заданным значениямobjectНет
includeИндекс может размещаться на узлах, у которых указанные атрибуты соответствует хотя бы одному из заданных значенийobjectНет
excludeИндекс не размещается на узлах, у которых указанные атрибут соответствует любому из заданных значенийobjectНет
wait_forПри значении true политика ожидает завершения перемещения всех шардов. При значении false (по умолчанию) действие выполняется в асинхронном режиме.booleanНет
"allocation": {
"require": {
"routing_mode": "cold"
},
"include": {},
"exclude": {},
"wait_for": false
}
Обратите внимание!

При настройке параметров действия необходимо учитывать существующие правила аллокации индексов, подпадающих под данную политику. Например, если исходная конфигурация индекса содержит параметр include: hot, то в настройках действия следует использовать только поле include (без применения require). Совместное использование этих параметров может привести к конфликту условий аллокации, в результате чего шарды не смогут быть размещены ни на одном узле.

Move to ClickHouse

Перемещает данные в ClickHouse.

ПараметрОписаниеТипОбязательный
table_name_templateРегулярное выражение, определяющее имя таблицы в ClickHouse на основе названия индекса. Именованная группа захвата в регулярном выражении будет использоваться в качестве имени таблицы. Группа захвата должна называться name.string (например (?<name>.*?)-\d+)Да
connection_idИдентификатор подключения к ClickHouse, настроенный в конфигурации OpenSearch.stringДа
batch_sizeКоличество событий, отправляемых в ClickHouse за один раз.integerНет

Примеры настройки политики

Общая информация

Для начала создайте новую политику. Перейдите в раздел Политики индекса (Навигационное меню - Параметры системы - Управление индексами - Политики индекса) и нажмите Создать политику. В открывшемся окне выберите Визуальный редактор и нажмите Далее.

В форме создания укажите значения полей:

  • идентификатор политики — уникальное имя политики
  • описание — краткое описание ее назначения

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

Пример конфигурации приведен ниже:

Создание политики

Настройка политики с rollover

  1. Добавление состояния init

Перейдите в раздел Состояния и нажмите Добавить состояние. Задайте имя состояния — init, затем нажмите Добавить действие и выберите тип действия Rollover. Укажите необходимые параметры, соответствующие требованиям вашей конфигурации.

В данном примере заданы значения для следующих параметров:

  • минимальный возраст индекса
  • минимальный размер первичного шарда

Подробнее о параметрах действия Rollover смотрите в соответствующем разделе.

Создание действия

  1. Настройка параметров повторной попытки

В блоке Настройки таймаута и повторной попытки рекомендуется установить следующие значения:

  • количество повторных попыток: 144
  • задержка повторной попытки: 10m

Эти параметры обеспечивают выполнение повторных попыток в течение 24 часов с интервалом 10 минут, что увеличивает надежность выполнения действия.

Настройка повторной попытки

После ввода параметров нажмите Добавить действие, затем - Сохранить состояние.

Примечание

Разделы Порядок и Переходы на данном этапе не настраиваются.

  1. Добавление состояния delete

Нажмите Добавить состояние, укажите имя — delete, и настройте его, как показано на примере ниже:

Создание удаления

Добавьте действие delete и задайте соответствующие параметры в блоке Настройки таймаута и повторной попытки:

Действие Delete

После завершения конфигурации нажмите Добавить действие, затем Сохранить состояние.

  1. Настройка порядка и переходов

Вернитесь к состоянию init и в разделе Порядок выберите Добавить перед и укажите состояние delete.

Далее нажмите Добавить переход. Укажите:

  • состояние назначения: delete
  • условия: параметр, при котором будет происходить переход между состояниями

Настройка перехода

Завершите настройку нажатием Добавить переход, затем - Обновить состояние.

  1. Создание политики

После завершения всех этапов нажмите Создать.

На этом конфигурация политики с использованием rollover завершена.

Настройка политики с релокацией

Настройка действия будет выполнена на примере существующей политики.

  1. Добавление состояния

Создайте новое состояние, например с именем cold. В параметрах Порядок укажите: Добавить после и выберите состояние init.

  1. Настройка действия allocation

Добавьте новое действие, выбрав тип действия — allocation. Заполните параметры, например, следующим образом:

{
"require": {},
"include": {
"routing_mode": "cold"
},
"exclude": {},
"wait_for": false
}
Обратите внимание!

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

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

  1. Настройка перехода

Для настройки перехода нажмите Добавить переход. Укажите следующие параметры:

  • состояние назначения — выберите целевое состояние
  • условия — задайте условие, при котором будет выполнен переход

Пример настройки:

Переход релокация

Затем нажмите Добавить переход, после чего - Сохранить состояние.

  1. Актуализация порядка состояний init и delete
  • откройте состояние init и задайте порядок: Добавить перед - cold
  • для состояния delete укажите порядок: Добавить после - cold

На этом настройка политики с релокации завершена.

Настройка политики с ожиданием данных до отсчёта rollover

Для выполнения данной настройки требуется наличие ранее настроенной политики с использованием rollover, дополнительная информация приведена в соответствующем разделе настройка политики с rollover.

  1. Создание состояния

Добавьте новое состояние с именем, например, wait_events. Откройте его для редактирования и в разделе Порядок укажите: Добавить перед - init.

Для состояния wait_events действия не добавляются.

  1. Настройка перехода

Нажмите Добавить переход и задайте параметры:

  • состояние назначения — выберите целевое состояние
  • условия — определите условие для выполнения перехода

Пример настройки перехода:

Переход ожидание

После заполнения параметров нажмите Добавить переход, затем - Сохранить состояние.

  1. Обновление порядка состояний

Откройте состояние init и в разделе Порядок задайте: Добавить после - wait_events.

На этом настройка политики с ожиданием данных до отсчета rollover завершена.