O rebalanceamento automático de fragmentos está em conformidade com restrições e regras como filtragem de alocação e reconhecimento forçado, levando ao cluster mais eficiente e bem balanceado possível.
NOTA: Não confunda a realocação de shard, que é o processo de localizar e mover shards não atribuídos para os nós em que residem, com rebalanceamento. O rebalanceamento pega os fragmentos atribuídos e os move uniformemente para vários nós, com o objetivo de distribuir igualmente os fragmentos por nó.
Como ativar o reequilíbrio automático
Para habilitar o rebalanceamento automático do cluster no Elasticsearch, podemos usar a solicitação PUT to_cluster API endpoint e adicionar as configurações de que precisamos.
As configurações disponíveis para rebalanceamento de shard dinâmico incluem:
- grupo.roteamento.reequilibrar.habilitar: Controla o rebalanceamento automático para vários tipos de fragmentos, como:
- Tudo: Os conjuntos permitem o rebalanceamento de fragmentos para todos os índices.
- Nenhum: Desativa o rebalanceamento de fragmentos para todos os índices.
- Réplicas: Apenas o rebalanceamento de fragmento de réplica é permitido.
- Primário: Apenas o rebalanceamento do shard primário é permitido.
- grupo.roteamento.alocação.allow_rebalance: Define o valor para rebalanceamento de shard. As opções incluem:
- Sempre: Ativa o rebalanceamento indefinidamente.
- Indices_primaries_active: Permite o rebalanceamento apenas quando todos os fragmentos primários no cluster são alocados.
- Indices_all_active: Permite o rebalanceamento quando apenas os fragmentos do cluster são alocados. Isso inclui os fragmentos primários e de réplica.
- grupo.roteamento.alocação.grupo.concorrente.reequilibrar: Esta opção define o número de rebalanceamentos simultâneos permitidos no cluster. O valor padrão é 2.
Considere a solicitação abaixo para permitir o rebalanceamento automático de shards para o cluster.
PUT / _cluster / settings"persistente":
"grupo.roteamento.reequilibrar.habilitar ":" primários ",
"grupo.roteamento.alocação.allow_rebalance ":" sempre " ,
"grupo.roteamento.alocação.cluster_concurrent_rebalance ":" 2 "
A seguir está o comando cURL:
curl -XPUT "http: // localhost: 9200 / _cluster / settings" -H 'Content-Type: application / json' -d '"persistent": "cluster.roteamento.reequilibrar.habilitar ":" primários "," cluster.roteamento.alocação.allow_rebalance ":" sempre "," cluster.roteamento.alocação.cluster_concurrent_rebalance ":" 2 " 'Este comando deve retornar uma resposta quando o objeto JSON reconhece as configurações que são atualizadas.
“Reconhecido”: verdadeiro,
"persistente":
"grupo" :
"roteamento":
"rebalancear":
"ativar": "primários"
,
"alocação":
"allow_rebalance": "sempre",
"cluster_concurrent_rebalance": "2"
,
"transitório":
Rebalanceamento de índice manual
Você também pode rebalancear um fragmento manualmente para um índice específico. Eu não recomendaria essa opção porque as opções de rebalanceamento padrão do Elasticsearch são muito eficientes.
No entanto, caso surja a necessidade de realizar o rebalanceamento manual, você pode usar a seguinte solicitação:
“Reconhecido”: verdadeiro,
"persistente":
"grupo" :
"roteamento":
"rebalancear":
"ativar": "primários"
,
"alocação":
"allow_rebalance": "sempre",
"cluster_concurrent_rebalance": "2"
,
"transitório":
O comando cURL é:
curl -XPOST "http: // localhost: 9200 / _cluster / reroute" -H 'Content-Type: application / json' -d '"commands": ["move": "index": "kibana_sample_data_flights", "shard": 0, "from_node": "instance-0000000001", "to_node": "instance-0000000002"] 'NOTA: Lembre-se de que, se você realizar um rebalanceamento manual, o Elasticsearch pode mover os fragmentos automaticamente para garantir o melhor rebalanceamento possível.
Conclusão
Este guia o ajudou a atualizar e modificar as configurações de um cluster Elasticsearch para habilitar o rebalanceamento automático de shard. O artigo também abordou o rebalanceamento manual, se necessário.