Rolling restart / rolling upgrade (nó a nó, sem movimentação desnecessária de shards)
ElasticsearchCluster/NóComando
# 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=10mO que faz
Dá a ordem para reiniciar ou fazer upgrade dos nós um de cada vez, evitando que as réplicas sejam recopiadas para outros nós enquanto um nó está fora; quando o nó volta, os shards se recuperam rapidamente a partir da cópia local.
Quando usar
Ao reiniciar nós em sequência para um patch do SO, mudança de JVM/heap, mudança no elasticsearch.yml ou upgrade de versão minor/major.
Atenção
Não passe para o próximo nó sem esperar o green; com dois nós fora ao mesmo tempo, todas as cópias de um shard podem sumir. Reinicie os nós master-eligible por último e um de cada vez; se a maioria for perdida, o cluster não consegue eleger um master. Se você esquecer de reabilitar allocation.enable, as réplicas ficam não atribuídas. Durante um upgrade, os nós de dados são atualizados primeiro (frozen/cold primeiro, hot por último), depois os masters.