Поочерёдный перезапуск / поочерёдное обновление (узел за узлом, без лишних перемещений шардов)
ElasticsearchКластер/УзелКоманда
# 1) Disable replica allocation (only primaries are allocated):
PUT _cluster/settings
{
"persistent": { "cluster.routing.allocation.enable": "primaries" }
}
# 2) Optional: stop indexing and flush to speed up recovery:
POST _flush
# 3) Stop one node, do the maintenance, start it; verify it joined:
GET _cat/nodes?v&h=name,version,node.role,master,heap.percent
# 4) Re-enable allocation:
PUT _cluster/settings
{
"persistent": { "cluster.routing.allocation.enable": null }
}
# 5) Wait for green before moving to the next node:
GET _cluster/health?wait_for_status=green&timeout=10mЧто делает
Задаёт порядок перезапуска или обновления узлов по одному, не давая репликам заново копироваться на другие узлы, пока узел недоступен; когда узел возвращается, шарды быстро восстанавливаются из локальной копии.
Когда использовать
При последовательном перезапуске узлов для патча ОС, изменения JVM/heap, изменения elasticsearch.yml или минорного/мажорного обновления версии.
Внимание
Не переходите к следующему узлу, не дождавшись green; при двух одновременно недоступных узлах могут пропасть все копии шарда. Master-eligible узлы перезапускайте последними и по одному; если большинство потеряно, кластер не сможет избрать master. Если забыть снова включить allocation.enable, реплики останутся неназначенными. При обновлении сначала обновляются data-узлы (сначала frozen/cold, hot в конце), затем master.