Настройки восстановления индексов
Синхронизация восстановления с другими узлами копирует данные с основного фрагмента на новый или существующий фрагмент-копию.
Восстановление с другими узлами автоматически происходит, когда Elasticsearch:
- Восстанавливает фрагмент, потерянный во время сбоя узла
- Перемещает фрагмент на другой узел из-за перебалансировки кластера или изменения настроек распределения фрагментов
Список текущих и завершенных восстановлений можно просмотреть с помощью API cat recovery.
Настройки восстановления
-
indices.recovery.max_bytes_per_sec -
(Динамическое) Ограничивает общий трафик входящего и исходящего восстановления для каждого узла. Применяется как к восстановлению с другими узлами, так и к восстановлению со снимков (т.е., восстановлениям со снимка). По умолчанию установлено значение
40mb, если узел не является узлом cold или frozen, в этом случае значение по умолчанию относится к общему объему памяти, доступному узлу:Объем памяти Значение по умолчанию для скорости восстановления на холодных и замороженных узлах ≤ 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. Прямое использование не поддерживается. Elastic оставляет за собой право изменять или удалять эту функцию в будущих версиях без предварительного уведомления.
Elasticsearch восстанавливает реплики и перемещает первичные фрагменты с помощью процесса восстановления с другими узлами, который включает создание новой копии фрагмента на целевом узле. Когда
indices.recovery.use_snapshotsимеет значениеfalse, Elasticsearch создаёт эту новую копию, передавая данные индекса с текущего первичного узла. Когда это значениеtrue, Elasticsearch попытается скопировать данные индекса со последнего снимка, и только скопирует данные с первичного узла, если не сможет найти подходящий снимок. По умолчанию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 7.17.1 и 8.0.1 и выше, но не поддерживается в Elasticsearch 8.0.0. Поэтому настройки восстановления для управляемых сервисов следует удалить перед обновлением до 8.0.0. Можно настроить параметры в 7.17.1 и затем напрямую обновить до 8.0.1.
При работе 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.operator.factor.read и node.bandwidth.recovery.operator.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.operator.factor.read - (вещественное число) Доля максимальной пропускной способности чтения, которая может быть использована для восстановления, если
indices.recovery.max_bytes_per_secне задана. Должно быть больше чем0и не больше чем1. Если не задано, используется значениеnode.bandwidth.recovery.operator.factor. Если настройки коэффициентов не заданы, то используется значение0.4. -
node.bandwidth.recovery.operator.factor.write - (вещественное число) Доля максимальной пропускной способности записи, которая может быть использована для восстановления, если
indices.recovery.max_bytes_per_secне задана. Должно быть больше чем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/7.17/recovery.html