быстрое восстановление после перезапуска узла в Elasticsearch
рассмотрим следующие настройки в elasticsearch.в формате YML
gateway.recover_after_data_nodes: 3
gateway.recover_after_time: 5m
gateway.expected_data_nodes: 3
текущие настройки: Скажем, у меня есть 3 узла данных. Теперь, если я решу перезапустить узел данных (из-за небольшого изменения настройки), восстановление начнется сразу после перезапуска узла в соответствии с параметром expected_data_nodes. Будет много неназначенных осколков, которые будут распределяться медленно в зависимости от содержащихся в них данных.
чтобы избежать этого, есть ли способ выделить все неназначенные осколки к определенному узлу?(в моем случае перезапуска узла) и как только это будет сделано, ЕС должен взять на баланс.
в основном я хочу, чтобы избежать тяжелых слаборазвитость из состояния кластера с желтого на зеленый.(в диапазоне часов в моем случае)
могу ли я использовать api перенаправления кластера для этой цели?
или есть какой-либо другой api для передачи всех неназначенных фрагментов на определенный узел за один раз?
1 ответов
для версии Elasticsearch > = 1.0.0:
curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable": "none"}}'
/etc/init.d/elasticsearch restart
curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable": "all"}}'
для более ранней версии ES:
curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.disable_allocation": true}}'
/etc/init.d/elasticsearch restart
curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.disable_allocation": false}}'
осколок держать нераспределенным до " кластера.маршрутизирующий.распределение.disable_allocation": false, затем осколки восстанавливаются на только что перезапущенном сервере (начиная с размера, который они были до завершения работы) Это очень быстро.