Quando alguns nós processam um volume de dados quentes significativamente maior que os demais, eles operam sob alta carga enquanto o restante do cluster permanece ocioso. Este tópico explica como diagnosticar esse desequilíbrio e corrigi-lo migrando shards manualmente.
Sintomas
Você provavelmente enfrenta esse problema se observar algum dos seguintes sinais:
Um nó com alta carga concentra um número desproporcional de shards com o mesmo atributo (por exemplo, apenas shards primários)
Um nó com alta carga armazena mais shards de índices de negócio que os outros nós
Antes de começar
A migração manual de shards é uma solução temporária. Se nós saírem do cluster brevemente e a realocação automática de shards for executada, o desequilíbrio pode retornar. Antes de migrar shards, resolva a causa raiz seguindo as orientações em Cargas desequilibradas em um cluster.
Se os shards já estiverem distribuídos uniformemente, mas o cluster ainda apresentar alta carga, atualize a configuração do cluster.
Migrar shards manualmente
Etapa 1: Desativar a alocação de shards
Execute o comando a seguir para desativar temporariamente a alocação de shards. Isso impede que o Elasticsearch mova shards automaticamente durante a migração manual.
PUT /_cluster/settings
{
"transient" : {
"cluster.routing.allocation.enable" : "none"
}
}
Reative a alocação de shards após concluir a migração (etapa 4). Manter a alocação de shards desativada pode comprometer a recuperação e a resiliência do cluster.
Etapa 2: Migrar o shard
Use a API de reroute do cluster para mover um shard específico de um nó para outro. O exemplo a seguir move o Shard 3 do índice index_parkingorder_v1 de 192.168.130.77 para 192.168.130.78.
POST /_cluster/reroute
{
"commands" : [
{
"move" : {
"index" : "index_parkingorder_v1",
"shard" : 3,
"from_node" : "192.168.130.77",
"to_node" : "192.168.130.78"
}
}
]
}
Restrição: O nó de destino não deve conter previamente um shard do mesmo índice com o mesmo número de sequência. Por exemplo, se o Shard Réplica 3 de um índice estiver no Nó A, o Shard Primário 3 desse índice não poderá ser migrado para o Nó A.
Para consultar a referência completa da API de reroute, visualize cluster-reroute.
Etapa 3: Verificar a migração
Execute o comando a seguir para verificar a alocação atual de shards:
GET _cat/shards?v
A saída lista cada shard com seu estado e o nó ao qual está atribuído. Localize o shard migrado na saída e confirme que:
Ele aparece no nó de destino
Seu estado é
STARTED

Etapa 4: Reativar a alocação de shards
Após confirmar a migração, reative a alocação de shards:
PUT /_cluster/settings
{
"transient" : {
"cluster.routing.allocation.enable" : "all"
}
}
Próximos passos
Cargas desequilibradas em um cluster — otimize a alocação de shards para evitar que o desequilíbrio se repita
Atualizar a configuração do cluster — aumente a capacidade se a carga permanecer alta após o rebalanceamento