Elasticsearch Shard Rublancing Tutorial

Elasticsearch Shard Rublancing Tutorial
Un shard di ElasticSearch è un'unità che consente al motore Elasticsearch di distribuire i dati in un cluster. In Elasticsearch, diciamo che un cluster è "bilanciato" quando contiene un numero uguale di frammenti su ogni nodo senza avere una grande concentrazione di frammenti su un singolo nodo. A seconda di come si configura ElaSticSearch, esegue automaticamente frammenti di riequilibrio nel cluster per migliorare le prestazioni.

Il ribilanciamento automatico del frammento è conforme a restrizioni e regole come il filtraggio di allocazione e la consapevolezza forzata, portando al cluster più efficiente e ben bilanciato possibile.

NOTA: Non confondere la riallocazione del frammento, che è il processo di ricerca e spostamento di frammenti non assegnati ai nodi in cui risiedono, con il riequilibrio. Il riequilibrio prende frammenti assegnati e li sposta in modo uniforme a vari nodi, lo scopo è la pari distribuzione di frammenti per nodo.

Come abilitare il ribilanciamento automatico

Per abilitare il riequilibrio del cluster automatico in ElaSticSearch, possiamo utilizzare l'endpoint API TO_CLEST PUT e aggiungere le impostazioni di cui abbiamo bisogno.

Le impostazioni disponibili per il riequilibrio di shard dinamico includono:

  • grappolo.routing.riequilibrare.abilitare: Controlla il ribilanciamento automatico per vari tipi di frammenti, come:
  • Tutto: Set Abilita il riequilibrio di frammenti per tutti gli indici.
  • Nessuno: Disabilita il riequilibrio di frammenti per tutti gli indici.
  • Repliche: È consentito solo il riequilibrio di shard replica.
  • Primario: È consentito solo un ribilanciamento del frammento primario.
  • grappolo.routing.allocazione.abilit_rebalance: Imposta il valore per il riequilibrio shard. Le opzioni includono:
    • Sempre: Abilita il riequilibrio indefinitamente.
    • Indici_primaries_active: Consente il riequilibrio solo quando vengono assegnati tutti i frammenti primari nel cluster.
    • Indici_all_active: Consente il riequilibrio quando vengono assegnati solo i frammenti nel cluster. Ciò include sia i frammenti primari che quelli di replica.
  • grappolo.routing.allocazione.grappolo.simultaneo.Ribilanciamento: Questa opzione imposta il numero di riequilibri simultanei consentiti nel cluster. Il valore predefinito è 2.

Prendi in considerazione la richiesta di seguito per consentire il riequilibrio del frammento automatico per il cluster.

Put /_cluster /Impostazioni

"persistente":
"grappolo.routing.riequilibrare.Abilita ":" Primarie ",
"grappolo.routing.allocazione.abilit_rebalance ":" sempre " ,
"grappolo.routing.allocazione.cluster_concurrent_rebalance ":" 2 "

Quello che segue è il comando Curl:

Curl -xput "http: // localhost: 9200/_cluster/impostazioni" -H 'Content -Type: Application/Json' -d '"persistente": "cluster.routing.riequilibrare.Abilita ":" primarie "," cluster.routing.allocazione.abilit_rebalance ":" sempre "," cluster.routing.allocazione.cluster_concurrent_reberance ":" 2 " '

Questo comando dovrebbe restituire una risposta poiché l'oggetto JSON riconosce le impostazioni che vengono aggiornate.


"Riconosciuto": vero,
"persistente":
"grappolo" :
"Routing":
"Ribilanciamento":
"Abilita": "Primarie"
,
"Allocazione":
"Ambito_rebalance": "SEMPRE",
"cluster_concurrent_rebalance": "2"



,
"transitorio":

Indice manuale Ribilanciamento

Puoi anche riequilibrare manualmente un frammento per un indice specifico. Non consiglierei questa opzione perché le opzioni di riequilibrio predefinite di Elasticsearch sono molto efficienti.

Tuttavia, se dovesse sorgere la necessità di eseguire un riequilibrio manuale, è possibile utilizzare la seguente richiesta:


"Riconosciuto": vero,
"persistente":
"grappolo" :
"Routing":
"Ribilanciamento":
"Abilita": "Primarie"
,
"Allocazione":
"Ambito_rebalance": "SEMPRE",
"cluster_concurrent_rebalance": "2"



,
"transitorio":

Il comando Curl è:

Curl -xpost "http: // localhost: 9200/_cluster/reroute" -h 'content -type: applicazione/json' -d '"comandi": ["move": "indice": "kibana_sample_data_flights", " "shard": 0, "from_node": "istanza-0000000001", "to_node": "istanza-0000000002"] '

NOTA: Tieni presente che se si esegue un riequilibrio manuale, Elasticsearch può spostare automaticamente i frammenti per garantire il miglior ribilanciamento possibile.

Conclusione

Questa guida ti ha accompagnato attraverso l'aggiornamento e la modifica delle impostazioni per un cluster Elasticsearch per abilitare il riequilibrio automatico del frammento. L'articolo ha anche coperto il riequilibrio manuale, se lo hai bisogno.