Параметр одновременного восстановления узла определяет максимальное количество шардов, которые могут быть восстановлены одновременно с каждого узла.
Что такое настройки одновременного восстановления узлов в OpenSearch?
Восстановление шардов требует как дисковых, так и сетевых ресурсов, поэтому рекомендуется ограничить количество шардов, которые могут быть восстановлены с узла в любой момент времени.
С другой стороны, если параметр одновременного восстановления слишком ограничен и установлен слишком низко, кластер может вообще не восстанавливать шарды, или восстановление может происходить медленнее, чем обычно. Это может привести к проблемам с производительностью, поскольку кластер имеет меньше реплик, чем планировалось, или даже оставить индекс недоступным для записи, в результате чего кластер будет оставаться желтым или красным в течение длительного периода времени.
Существует несколько различных настроек, которые похожи, но имеют тонкие различия:
- cluster.routing.allocation.node_concurrent_incoming_recoveries (по умолчанию 2) - Сколько одновременных входящих восстановлений шардов (обычно реплик) разрешено на узле.
- cluster.routing.allocation.node_concurrent_outgoing_recoveries (по умолчанию 2) - Сколько одновременных исходящих восстановлений шарда разрешено на узле.
- cluster.routing.allocation.node_concurrent_recoveries (по умолчанию 2) - Это удобная функция для одновременного задания параметров cluster.routing.allocation.node_concurrent_incoming_recoveries и cluster.routing.allocation.node_concurrent_outgoing_recoveries.
- cluster.routing.allocation.node_initial_primaries_recoveries (по умолчанию 4)
Эти операции отличаются от описанных выше тем, что для восстановления первичного узла используются данные с локального диска. Поскольку эти операции не требуют подключения к сети, на одном узле можно параллельно выполнять большее количество операций.
Как решить эту проблему
Проверьте текущие настройки кластера:
1 | GET _cluster/settings |
При необходимости измените настройки одновременного восстановления. В общем случае можно использовать значения по умолчанию.
1 2 3 4 5 6 | PUT _cluster/settings { "transient": { "cluster.routing.allocation.node_concurrent_recoveries": "2" } } |
или с помощью curl
1 | curl -k -H 'Content-Type: application/json' -X PUT http://127.0.0.1:9200/_cluster/settings -d '{ "transient": { "cluster.routing.allocation.node_concurrent_recoveries": "2"}}' |