web-dev-qa-db-fra.com

Comment supprimer un noeud du cluster elasticsearch au moment de l'exécution sans temps d'immobilisation

Supposons que j'ai 5 nœuds dans le cluster et que je dois supprimer 2 nœuds au moment de l'exécution. Alors, comment cela peut-il être fait sans affecter les indices?

J'ai eu un flux continu de données venant à près de 10 Gbphour qui est indexé en continu.

Est-ce que le rééquilibrage va aider? Merci d'avance

59
Lav

Vous pouvez mettre hors service un nœud en indiquant au cluster de l'exclure de l'allocation. (De la documentation ici )

curl -XPUT localhost:9200/_cluster/settings -H 'Content-Type: application/json' -d '{
  "transient" :{
      "cluster.routing.allocation.exclude._ip" : "10.0.0.1"
   }
}';echo

Cela obligera Elasticsearch à allouer les fragments sur ce nœud aux nœuds restants, sans que l'état du cluster ne devienne jaune ou rouge (même si la réplication est 0).

Une fois que tous les fragments ont été réaffectés, vous pouvez arrêter le nœud et faire ce que vous devez faire. Une fois que vous avez terminé, incluez le nœud pour l'allocation et Elasticsearch rééquilibrera à nouveau les fragments.

114
towr

Pour supprimer le noeud elasticsearch du cluster, exécutez la commande suivante

curl -XPUT P.P.P.P:9200/_cluster/settings -H 'Content-Type: application/json' -d '{
  "transient" :{
      "cluster.routing.allocation.exclude._ip" : "X.X.X.X"
   }
}';echo

Ici P.P.P.P est l'adresse IP privée du nœud maître, vous pouvez également utiliser localhost si elasticsearch est exécuté sur localhost. X.X.X.X est l'adresse IP privée du nœud à supprimer du cluster.

Cette commande donnera acknowledgementtrue si le nœud est accepté pour être supprimé et le déplacement des données va commencer. Vérifiez si la relocalisation des données est terminée et que le nœud ne contient plus de fragments, puis arrêtez elasticsearch process et stop/terminate l'instance. Les commandes permettant de vérifier le déplacement des données et les fragments restants sont disponibles sur cet article .

9
Ajeet Khan

Vous pouvez toujours arrêter le processus pour supprimer le nœud lors de l'exécution. Le cluster Elasticsearch sera automatiquement rééquilibré dans les nœuds restants. Mais, il y a des inconvénients ici.

  1. Combien de répliques avez-vous dans vos paramètres?
  2. Combien de fragments avez-vous dans vos paramètres?
  3. Si les données présentes dans les fragments sont trop volumineuses (10 Go par heure), le rééquilibrage peut prendre un certain temps.
  4. Si vous avez suffisamment de répliques, l'état du cluster passe au jaune. Dans cet état, vous pouvez indexer et rechercher pendant cette période. Cependant, les fragments vont initialement non assignés, puis se déplacent lentement pour équilibrer les nœuds.
0
Vamsi Krishna