Настройки восстановления индексов
Синхронизация восстановления с участником копирует данные с первичного фрагмента на новую или существующую копию фрагмента.
Восстановление с участником автоматически происходит, когда Elasticsearch:
- Восстанавливает фрагмент, потерянный во время сбоя узла
- Перемещает фрагмент на другой узел из-за перебалансировки кластера или изменения настроек распределения фрагментов настроек распределения фрагментов
Вы можете просмотреть список текущих и завершенных восстановлений, используя API cat recovery.
Настройки восстановления
-
indices.recovery.max_bytes_per_sec -
(Динамические) Ограничивает общий трафик входящего и исходящего восстановления для каждого узла. Применяется как к восстановлению с участником, так и к восстановлению со снимка (т. е. восстановлению со снимка). По умолчанию устанавливается значение
40mb, если узел не является узлом типа холодного или замороженного уровня, в этом случае значение по умолчанию связано с общей памятью, доступной узлу:Общий объём памяти Скорость восстановления по умолчанию на холодных и замороженных узлах ≤ 4 ГБ
40 МБ/с
> 4 ГБ и ≤ 8 ГБ
60 МБ/с
> 8 ГБ и ≤ 16 ГБ
90 МБ/с
> 16 ГБ и ≤ 32 ГБ
125 МБ/с
> 32 ГБ
250 МБ/с
Это ограничение применяется к каждому узлу по отдельности. Если несколько узлов в кластере выполняют восстановления одновременно, общий трафик восстановления кластера может превысить это ограничение.
Если это ограничение слишком высокое, текущие восстановления могут потреблять избыточную пропускную способность и другие ресурсы, что может повлиять на производительность кластера и в крайних случаях может дестабилизировать его.
Это динамическая настройка, что означает, что вы можете установить ее в файле конфигурации каждого узла
elasticsearch.yml, и вы можете обновить ее динамически с помощью API обновления настроек кластера. Если вы устанавливаете ее динамически, то одинаковое ограничение применяется ко всем узлам в кластере. Если вы не устанавливаете ее динамически, вы можете установить разные ограничения для каждого узла, что полезно, если некоторые из ваших узлов имеют лучшую пропускную способность, чем другие. Например, если вы используете Управление жизненным циклом индексов, то вы можете предоставить узлам «горячего» уровня более высокое ограничение пропускной способности восстановления, чем узлам «теплого» уровня.
Настройки восстановления с участником (экспертный режим)
Вы можете использовать следующие настройки экспертного уровня для управления ресурсами восстановления с участником.
-
indices.recovery.max_concurrent_file_chunks -
(Динамические, Экспертный) Количество блоков файлов, передаваемых параллельно для каждого восстановления. По умолчанию
2.Вы можете увеличить значение этой настройки, когда восстановление отдельного фрагмента не достигает ограничения трафика, установленного значением
indices.recovery.max_bytes_per_sec, до максимального значения8. -
indices.recovery.max_concurrent_operations -
(Динамические, Экспертный) Количество операций, передаваемых параллельно для каждого восстановления. По умолчанию
1.Одновременное воспроизведение операций во время восстановления может быть очень ресурсоемким и может мешать индексированию, поиску и другим операциям в вашем кластере. Не увеличивайте эту настройку, не проверив тщательно, что ваш кластер обладает ресурсами для обработки дополнительной нагрузки, которая возникнет в результате.
-
indices.recovery.use_snapshots -
(Динамические, Экспертный) Включает восстановление с участником на основе снимков.
Elasticsearch восстанавливает реплики и перемещает первичные фрагменты, используя процесс восстановления с участником, который включает построение новой копии фрагмента на целевом узле. Когда
indices.recovery.use_snapshotsимеет значениеfalseElasticsearch будет создавать эту новую копию, передавая данные индекса с текущего первичного узла. Когда эта настройка имеет значениеtrueElasticsearch будет пытаться скопировать данные индекса из последнего снимка, и будет копировать данные с первичного узла только в том случае, если не сможет найти подходящий снимок. По умолчаниюtrue.Установка этого параметра на значение
trueуменьшает ваши эксплуатационные расходы, если ваш кластер работает в среде, где затраты на передачу данных между узлами выше, чем затраты на восстановление данных со снимка. Это также уменьшает количество работы, которую первичный узел должен выполнить во время восстановления.Кроме того, репозитории, имеющие настройку
use_for_peer_recovery=true, будут использоваться для поиска подходящего снимка при восстановлении фрагмента. Если ни один из зарегистрированных репозиториев не имеет этой настройки, файлы индекса будут восстановлены с исходного узла. -
indices.recovery.max_concurrent_snapshot_file_downloads -
(Динамические, Экспертный) Количество запросов на загрузку файлов снимка, отправляемых параллельно целевому узлу для каждого восстановления. По умолчанию
5.Не увеличивайте эту настройку, не убедившись тщательно, что ваш кластер обладает достаточными ресурсами для обработки дополнительной нагрузки, которая возникнет в результате.
-
indices.recovery.max_concurrent_snapshot_file_downloads_per_node -
(Динамические, Экспертный) Количество параллельных запросов на загрузку файлов снимка, выполняемых на целевом узле для всех восстановлений. По умолчанию
25.Не увеличивайте эту настройку, не убедившись тщательно, что ваш кластер обладает достаточными ресурсами для обработки дополнительной нагрузки, которая возникнет в результате.
Настройки восстановления для управляемых сервисов
Эта функция предназначена для косвенного использования Elasticsearch Service, Elastic Cloud Enterprise и Elastic Cloud on Kubernetes. Прямое использование не поддерживается.
При запуске Elasticsearch в качестве управляемого сервиса следующие настройки позволяют сервису указать абсолютные максимальные значения пропускной способности для чтения с диска, записи на диск и сетевого трафика на каждом узле, а также позволяют управлять максимальной пропускной способностью восстановления на каждом узле в терминах этих абсолютных максимальных значений. Они имеют два эффекта:
- Они определяют пропускную способность, используемую для восстановления, если
indices.recovery.max_bytes_per_secне задано, перезаписывая поведение по умолчанию, описанное выше. - Они накладывают на узел ограничение пропускной способности восстановления, которое независимо от значения
indices.recovery.max_bytes_per_sec.
Если вы не задаёте indices.recovery.max_bytes_per_sec, максимальная пропускная способность восстановления вычисляется как пропорция абсолютной максимальной пропускной способности. Вычисление выполняется отдельно для трафика чтения и записи. Сервис определяет абсолютные максимальные значения пропускной способности для чтения с диска, записи на диск и сетевых передачь с помощью node.bandwidth.recovery.disk.read, node.bandwidth.recovery.disk.write и node.bandwidth.recovery.network соответственно, и вы можете установить пропорцию абсолютной максимальной пропускной способности, которая может использоваться для восстановления, настроив node.bandwidth.recovery.factor.read и node.bandwidth.recovery.factor.write. Если функция привилегий оператора включена, сервис также может установить значения по умолчанию, используя варианты этих настроек, предназначенные только для операторов.
Если вы задаёте indices.recovery.max_bytes_per_sec, Elasticsearch будет использовать это значение для максимальной пропускной способности восстановления, если оно не превышает ограничение по узлу. Elasticsearch вычисляет ограничение по узлу, умножив абсолютные максимальные значения пропускной способности на коэффициент node.bandwidth.recovery.operator.factor.max_overcommit. Если вы задаёте значение indices.recovery.max_bytes_per_sec, превышающее ограничение по узлу, то ограничение по узлу будет иметь приоритет.
Сервис должен определять значения для абсолютных максимальных значений пропускной способности экспериментально, используя рабочую нагрузку, похожую на восстановление, в которой несколько параллельных процессов обрабатывают файлы последовательно в блоках по 512 КБ.
-
node.bandwidth.recovery.disk.read - (значение в байтах в секунду) Абсолютная максимальная скорость чтения с диска для рабочей нагрузки типа восстановления на узле. Если задано, то необходимо также задать
node.bandwidth.recovery.disk.writeиnode.bandwidth.recovery.network. -
node.bandwidth.recovery.disk.write - (значение в байтах в секунду) Абсолютная максимальная скорость записи на диск для рабочей нагрузки типа восстановления на узле. Если задано, то необходимо также задать
node.bandwidth.recovery.disk.readиnode.bandwidth.recovery.network. -
node.bandwidth.recovery.network - (значение в байтах в секунду) Абсолютный максимум пропускной способности сети для рабочей нагрузки типа восстановления на узле, который применяется как для чтения, так и для записи. Если задано, то необходимо также задать
node.bandwidth.recovery.disk.readиnode.bandwidth.recovery.disk.write. -
node.bandwidth.recovery.factor.read - (вещественное число, динамическое) Доля максимальной пропускной способности чтения, которая может быть использована для восстановления, если
indices.recovery.max_bytes_per_secне задана. Должно быть больше0и не больше1. Если не задано, используется значениеnode.bandwidth.recovery.operator.factor.read. Если не заданы никакие параметры, то используется значение0.4. -
node.bandwidth.recovery.factor.write - (вещественное число, динамическое) Доля максимальной пропускной способности записи, которая может быть использована для восстановления, если
indices.recovery.max_bytes_per_secне задана. Должно быть больше0и не больше1. Если не задано, используется значениеnode.bandwidth.recovery.operator.factor.write. Если не заданы никакие параметры, то используется значение0.4. -
node.bandwidth.recovery.operator.factor.read - (вещественное число, динамическое) Доля максимальной пропускной способности чтения, которая может быть использована для восстановления, если
indices.recovery.max_bytes_per_secиnode.bandwidth.recovery.factor.readне заданы. Должно быть больше0и не больше1. Если не задано, используется значениеnode.bandwidth.recovery.operator.factor. Если не заданы никакие параметры, то используется значение0.4. При включенной функции привилегий оператора, это значение может быть обновлено только пользователями-операторами. -
node.bandwidth.recovery.operator.factor.write - (вещественное число, динамическое) Доля максимальной пропускной способности записи, которая может быть использована для восстановления, если
indices.recovery.max_bytes_per_secиnode.bandwidth.recovery.factor.writeне заданы. Должно быть больше0и не больше1. Если не задано, используется значениеnode.bandwidth.recovery.operator.factor. Если не заданы никакие параметры, то используется значение0.4. При включенной функции привилегий оператора, это значение может быть обновлено только пользователями-операторами. -
node.bandwidth.recovery.operator.factor - (вещественное число, динамическое) Доля максимальной пропускной способности, которая может быть использована для восстановления, если не задан ни
indices.recovery.max_bytes_per_sec, ни какие-либо другие параметры. Должно быть больше0и не больше1. По умолчанию равно0.4. При включенной функции привилегий оператора, это значение может быть обновлено только пользователями-операторами. -
node.bandwidth.recovery.operator.factor.max_overcommit - (вещественное число, динамическое) Доля абсолютного максимального значения пропускной способности, которая может быть использована для восстановления независимо от других настроек. Должно быть больше
0. По умолчанию равно100. При включенной функции привилегий оператора, это значение может быть обновлено только пользователями-операторами.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/recovery.html