Настройка кластера

Следующие настройки относятся к кластеру OpenSearch.

Чтобы узнать больше о статических и динамических настройках, смотрите раздел Настройка OpenSearch.

Настройки маршрутизации и распределения на уровне кластера

OpenSearch поддерживает следующие настройки маршрутизации на уровне кластера и распределения шардов:

cluster.routing.allocation.enable (Динамическая, строка)

Включает или отключает распределение для определенных типов шардов.

Допустимые значения:

  • all – Разрешает распределение шардов для всех типов шардов.
  • primaries – Разрешает распределение шардов только для первичных шардов.
  • new_primaries – Разрешает распределение шардов только для первичных шардов новых индексов.
  • none – Распределение шардов не разрешено для любых индексов.

По умолчанию установлено значение all.

cluster.routing.allocation.node_concurrent_incoming_recoveries (Динамическая, целое число)

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

cluster.routing.allocation.node_concurrent_outgoing_recoveries (Динамическая, целое число)

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

cluster.routing.allocation.node_concurrent_recoveries (Динамическая, строка)

Используется для установки значений cluster.routing.allocation.node_concurrent_incoming_recoveries и cluster.routing.allocation.node_concurrent_outgoing_recoveries на одно и то же значение.

cluster.routing.allocation.node_initial_primaries_recoveries (Динамическая, целое число)

Устанавливает количество восстановлений для нераспределенных первичных шардов после перезапуска узла. По умолчанию установлено значение 4.

cluster.routing.allocation.same_shard.host (Динамическая, логическое)

При установке в true предотвращает распределение нескольких копий шарда на разные узлы на одном хосте. По умолчанию установлено значение false.

cluster.routing.rebalance.enable (Динамическая, строка)

Включает или отключает перераспределение для определенных типов шардов.

Допустимые значения:

  • all – Разрешает балансировку шардов для всех типов шардов.
  • primaries – Разрешает балансировку шардов только для первичных шардов.
  • replicas – Разрешает балансировку шардов только для реплик.
  • none – Балансировка шардов не разрешена для любых индексов.

По умолчанию установлено значение all.

cluster.routing.allocation.allow_rebalance (Динамическая, строка)

Указывает, когда разрешено перераспределение шардов.

Допустимые значения:

  • always – Всегда разрешать перераспределение.
  • indices_primaries_active – Разрешать перераспределение только когда все первичные шары в кластере распределены.
  • indices_all_active – Разрешать перераспределение только когда все шары в кластере распределены.

По умолчанию установлено значение indices_all_active.

cluster.routing.allocation.cluster_concurrent_rebalance (Динамическая, целое число)

Позволяет контролировать, сколько параллельных перераспределений шардов разрешено в кластере. По умолчанию установлено значение 2.

cluster.routing.allocation.balance.shard (Динамическая, число с плавающей точкой)

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

cluster.routing.allocation.balance.index (Динамическая, число с плавающей точкой)

Определяет весовой коэффициент для количества шардов на индекс, распределенных на узел. По умолчанию установлено значение 0.55.

cluster.routing.allocation.balance.threshold (Динамическая, число с плавающей точкой)

Минимальное значение оптимизации операций, которые должны быть выполнены. По умолчанию установлено значение 1.0.

cluster.routing.allocation.balance.prefer_primary (Динамическая, логическое)

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

cluster.routing.allocation.rebalance.primary.enable (Динамическая, логическое)

При установке в true OpenSearch пытается перераспределить первичные шары между узлами кластера. При включении кластер пытается поддерживать количество первичных шардов на каждом узле, с максимальным буфером, определенным настройкой cluster.routing.allocation.rebalance.primary.buffer. Изменение этой настройки на false после установки в true не вызывает перераспределение первичных шардов. По умолчанию установлено значение false.

cluster.routing.allocation.rebalance.primary.buffer (Динамическая, число с плавающей точкой)

Определяет максимальный допустимый буфер первичных шардов между узлами, когда включена настройка cluster.routing.allocation.rebalance.primary.enable. По умолчанию установлено значение 0.1.

cluster.routing.allocation.disk.threshold_enabled (Динамическая, логическое)

При установке в false отключает решение о распределении по диску. Это также удалит любые существующие блокировки индекса index.blocks.read_only_allow_delete, когда отключено. По умолчанию установлено значение true.

Настройки водяных знаков дискового пространства

cluster.routing.allocation.disk.watermark.low (Динамическая, строка)

Контролирует низкий водяной знак для использования дискового пространства. При установке в процентном соотношении OpenSearch не будет распределять шары на узлы с указанным процентом использования диска. Это также можно указать в виде дробного значения, например, 0.85. Наконец, это можно установить в байтовом значении, например, 400mb. Эта настройка не влияет на первичные шары новых индексов, но предотвратит распределение их реплик. По умолчанию установлено значение 85%.

cluster.routing.allocation.disk.watermark.high (Динамическая, строка)

Контролирует высокий водяной знак. OpenSearch попытается переместить шары с узла, использование диска на котором превышает установленный процент. Это также можно указать в виде дробного значения, например, 0.85. Наконец, это можно установить в байтовом значении, например, 400mb. Эта настройка влияет на распределение всех шардов. По умолчанию установлено значение 90%.

cluster.routing.allocation.disk.watermark.flood_stage (Динамическая, строка)

Контролирует водяной знак на уровне затопления. Это последний шаг для предотвращения исчерпания дискового пространства на узлах. OpenSearch применяет блокировку индекса только для чтения (index.blocks.read_only_allow_delete) ко всем индексам, на которых есть один или несколько шардов, распределенных на узле, и хотя бы один диск превышает уровень затопления. Блокировка индекса снимается, как только использование диска падает ниже высокого водяного знака. Это также можно указать в виде дробного значения, например, 0.85. Наконец, это можно установить в байтовом значении, например, 400mb. По умолчанию установлено значение 95%.

cluster.info.update.interval (Динамическая, единица времени)

Устанавливает, как часто OpenSearch должен проверять использование диска для каждого узла в кластере. По умолчанию установлено значение 30s.

Настройки распределения шардов по атрибутам

cluster.routing.allocation.include. (Динамическая, перечисление)

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

cluster.routing.allocation.require. (Динамическая, перечисление)

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

cluster.routing.allocation.exclude. (Динамическая, перечисление)

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

Допустимые значения:

  • _name – Совпадение узлов по имени узла.
  • _host_ip – Совпадение узлов по IP-адресу хоста.
  • _publish_ip – Совпадение узлов по публикуемому IP-адресу.
  • _ip – Совпадение по _host_ip или _publish_ip.
  • _host – Совпадение узлов по имени хоста.
  • _id – Совпадение узлов по идентификатору узла.
  • _tier – Совпадение узлов по роли уровня данных.

Настройки перемещения шардов

cluster.routing.allocation.shard_movement_strategy (Динамическая, перечисление)

Определяет порядок, в котором шары перемещаются с исходящих узлов на входящие.

Эта настройка поддерживает следующие стратегии:

  • PRIMARY_FIRST – Первичные шары перемещаются первыми, перед репликами. Эта приоритизация может помочь предотвратить переход состояния здоровья кластера в красный, если узлы, на которые перемещаются шары, выйдут из строя в процессе.
  • REPLICA_FIRST – Репликационные шары перемещаются первыми, перед первичными. Эта приоритизация может помочь предотвратить переход состояния здоровья кластера в красный при выполнении перемещения шардов в кластере OpenSearch с смешанными версиями и включенной репликацией сегментов. В этой ситуации первичные шары, перемещенные на узлы OpenSearch более новой версии, могут попытаться скопировать файлы сегментов на репликационные шары более старой версии OpenSearch, что приведет к сбою шардов. Перемещение репликационных шардов первыми может помочь избежать этого в кластерах с несколькими версиями.
  • NO_PREFERENCE – Поведение по умолчанию, при котором порядок перемещения шардов не имеет значения.

cluster.routing.search_replica.strict (Динамическая, логическое)

Контролирует, как маршрутизируются поисковые запросы, когда для индекса существуют репликационные шары, например, когда index.number_of_search_replicas больше 0. Эта настройка применяется только в случае, если для индекса настроены поисковые реплики. При установке в true все поисковые запросы для таких индексов маршрутизируются только на репликационные шары. Если репликационные шары не назначены, запросы завершаются неудачей. При установке в false, если репликационные шары не назначены, запросы возвращаются к любому доступному шару. По умолчанию установлено значение true.

cluster.allocator.gateway.batch_size (Динамическая, целое число)

Ограничивает количество шардов, отправляемых на узлы данных в одной партии для получения метаданных любых нераспределенных шардов. По умолчанию установлено значение 2000.

cluster.allocator.existing_shards_allocator.batch_enabled (Статическая, логическая)

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

cluster.routing.allocation.total_shards_per_node (Динамическая, целое число)

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

cluster.routing.allocation.total_primary_shards_per_node (Динамическая, целое число)

Максимальное количество первичных шардов, которые могут быть распределены на один узел. Эта настройка применима только для кластеров с удаленной поддержкой. По умолчанию установлено значение -1 (без ограничений). Помогает равномерно распределять первичные шары по узлам, ограничивая количество первичных шардов на узел. Используйте с осторожностью, так как первичные шары могут оставаться нераспределенными, если узлы достигнут своих настроенных лимитов.

Настройки шардов, блокировок и задач на уровне кластера

OpenSearch поддерживает следующие настройки шардов, блокировок и задач на уровне кластера:

action.search.shard_count.limit (Целое число)

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

cluster.blocks.read_only (Логическое)

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

cluster.blocks.read_only_allow_delete (Логическое)

Похоже на cluster.blocks.read_only, но позволяет удалять индексы.

cluster.max_shards_per_node (Целое число)

Ограничивает общее количество первичных и репликационных шардов для кластера. Лимит рассчитывается следующим образом: cluster.max_shards_per_node умножается на количество не замороженных узлов данных. Шары для закрытых индексов не учитываются в этом лимите. По умолчанию установлено значение 1000.

cluster.persistent_tasks.allocation.enable (Строка)

Включает или отключает распределение для постоянных задач.

Допустимые значения:

  • all – Разрешает назначение постоянных задач на узлы.
  • none – Распределение для постоянных задач не разрешено. Это не влияет на уже работающие постоянные задачи.

По умолчанию установлено значение all.

cluster.persistent_tasks.allocation.recheck_interval (Единица времени)

Менеджер кластера автоматически проверяет, нужно ли назначать постоянные задачи, когда состояние кластера изменяется значительным образом. Существуют и другие факторы, такие как использование памяти, которые повлияют на то, будут ли постоянные задачи назначены на узлы, но не вызывают изменения состояния кластера. Эта настройка определяет, как часто выполняются проверки назначения в ответ на эти факторы. По умолчанию установлено значение 30 секунд, при этом минимальное значение составляет 10 секунд.

Настройки медленных логов на уровне кластера

Для получения дополнительной информации смотрите раздел Медленные логи запросов поиска.

cluster.search.request.slowlog.threshold.warn (Единица времени)

Устанавливает порог WARN для медленных логов на уровне запросов. По умолчанию установлено значение -1.

cluster.search.request.slowlog.threshold.info (Единица времени)

Устанавливает порог INFO для медленных логов на уровне запросов. По умолчанию установлено значение -1.

cluster.search.request.slowlog.threshold.debug (Единица времени)

Устанавливает порог DEBUG для медленных логов на уровне запросов. По умолчанию установлено значение -1.

cluster.search.request.slowlog.threshold.trace (Единица времени)

Устанавливает порог TRACE для медленных логов на уровне запросов. По умолчанию установлено значение -1.

cluster.search.request.slowlog.level (Строка)

Устанавливает минимальный уровень медленного лога для записи: WARN, INFO, DEBUG и TRACE. По умолчанию установлено значение TRACE.

Настройки индекса на уровне кластера

Для получения информации о настройках индекса на уровне индекса смотрите раздел Настройки индекса на уровне кластера.

Настройки координации на уровне кластера

OpenSearch поддерживает следующие настройки координации на уровне кластера. Все настройки в этом списке являются динамическими:

cluster.fault_detection.leader_check.timeout (Единица времени)

Количество времени, в течение которого узел ждет ответа от избранного менеджера кластера во время проверки лидера, прежде чем считать проверку неудачной. Допустимые значения от 1ms до 60s, включая. По умолчанию установлено значение 10s. Изменение этой настройки на значение, отличное от значения по умолчанию, может привести к нестабильности кластера.

cluster.fault_detection.follower_check.timeout (Единица времени)

Количество времени, в течение которого избранный менеджер кластера ждет ответа во время проверки последователя, прежде чем считать проверку неудачной. Допустимые значения от 1ms до 60s, включая. По умолчанию установлено значение 10s. Изменение этой настройки на значение, отличное от значения по умолчанию, может привести к нестабильности кластера.

cluster.fault_detection.follower_check.interval (Единица времени)

Количество времени, в течение которого избранный менеджер кластера ждет между отправкой проверок последователей другим узлам в кластере. Допустимые значения 100ms и выше. По умолчанию установлено значение 1000ms. Изменение этой настройки на значение, отличное от значения по умолчанию, может привести к нестабильности кластера.

cluster.follower_lag.timeout (Единица времени)

Количество времени, в течение которого избранный менеджер кластера ждет получения подтверждений обновлений состояния кластера от отстающих узлов. По умолчанию установлено значение 90s. Если узел не успешно применяет обновление состояния кластера в течение этого времени, он считается неудавшимся и удаляется из кластера.

cluster.publish.timeout (Единица времени)

Количество времени, в течение которого менеджер кластера ждет, пока каждое обновление состояния кластера будет полностью опубликовано на всех узлах, если только discovery.type не установлен на single-node. По умолчанию установлено значение 30s.

Настройки пределов ответов CAT на уровне кластера

OpenSearch поддерживает следующие настройки пределов ответов CAT API на уровне кластера, все из которых являются динамическими:

cat.indices.response.limit.number_of_indices (Целое число)

Устанавливает предел на количество индексов, возвращаемых API CAT Indices. Значение по умолчанию -1 (без ограничений). Если количество индексов в ответе превышает этот предел, API возвращает ошибку 429. Чтобы избежать этого, вы можете указать фильтр по шаблону индекса в вашем запросе (например, _cat/indices/<index-pattern>).

cat.shards.response.limit.number_of_shards (Целое число)

Устанавливает предел на количество шардов, возвращаемых API CAT Shards. Значение по умолчанию -1 (без ограничений). Если количество шардов в ответе превышает этот предел, API возвращает ошибку 429. Чтобы избежать этого, вы можете указать фильтр по шаблону индекса в вашем запросе (например, _cat/shards/<index-pattern>).

cat.segments.response.limit.number_of_indices (Целое число)

Устанавливает предел на количество индексов, возвращаемых API CAT Segments. Значение по умолчанию -1 (без ограничений). Если количество индексов в ответе превышает этот предел, API возвращает ошибку 429. Чтобы избежать этого, вы можете указать фильтр по шаблону индекса в вашем запросе (например, _cat/segments/<index-pattern>).