0
votes

Elasticsearch - Comment le nœud détecte l'échec de la mèche

J'ai eu des connaissances de base sur la recherche élastique. Je rencontre la phrase suivante. De https://www.elastic.co/Guide /en/elasticsearch/reference/current/docs-replication.html

Dans le cas où le primaire lui-même échoue, le nœud hébergeant le primaire enverra un message au maître à ce sujet. L'opération d'indexation attendra (jusqu'à 1 minute, par défaut) pour que le maître de promouvoir l'une des répliques soit un nouveau primaire.

La question, comment hébergeant le shard hébergeant la défaillance du shard? Si je comprends bien, Shard est une instance Lucene qui fonctionne sur un nœud de données.


0 commentaires

3 Réponses :


0
votes

C'est déroutant à première vue. Mais si vous regardez plus profondément, c'est toujours un scénario valide et même mentionné dans le document à haut niveau.

Nous disons que le nœud de coordinateur reçoit une demande d'indexation des données. Le nœud principal conserve la liste des éclats de synchronisation. Ensuite, le maître transmet la demande au nœud qui a le shard principal. Comme vous l'avez dit, Shard est un noyau de Lucene. Le nœud qui a reçu doit indiquer les données dans le fragment primaire. Incase si ce n'est pas possible en raison de la portion de Shard corrompue, il en informera le maître d'élire un autre primaire.

et le maître surveille également chaque éclat et informe l'autre nœud pour préparer un fragment primaire si nécessaire. Délecte un fragment de primaire si nécessaire. Master fait plus dans ce cas.

Elasticsearch conserve une liste des copies de shard qui devraient recevoir l'opération. Cette liste s'appelle les copies en synchronisation et est maintenue par le noeud principal

Une fois que le groupe de réplication a été déterminé, l'opération est transmise à l'intérieur du fralon principal actuel du groupe


3 commentaires

Votre réponse est une grosse erreur car Master reçoit une demande d'indexation des données en tant que noeud maître ne reçoit pas les demandes d'index.


Merci @ Java-Dev pointant sur. N'hésitez pas à me dire si ma compréhension est fausse.


Je ne suis pas un expert ES c'est ce que j'ai lu depuis longtemps, alors pensé à le corriger



1
votes

Très probablement (avec quelques améliorations depuis ElasticseSearch Version 1.4), ceci serait détecté via une somme de contrôle si un fichier de segment dans le Shard a une checke incorrect, le Shard est marqué corrompu. Cela peut arriver lors de la récupération (après le démarrage de la noeud) ou lorsque toute opération IO est effectuée sur le segment (c'est-à-dire lorsqu'elle est lue en effectuant la recherche ou via la stratégie de fusion)

Potentiellement, cette page pour 7.8 (Sélectionnez la version que vous utilisez pour DOC précise) Mentions Comment rejeter les données corrompues ou si les données sont importantes, c'est que la meilleure façon est de restaurer à partir de l'instantané: https://www.elastic.co/ Guide / EN / ELASTISECHECH / Référence / 7.8 / Shard-Tool.HTML # _Description_7


0 commentaires

1
votes

Je suppose que vous êtes confus dans cette déclaration

Comment héberger le shard hébergeant la défaillance du fragment? Comme je Comprendre, Shard est une instance Lucene qui fonctionne sur un nœud de données.

Bien que c'est vrai que chaque shard est une instance Lucene (index), mais ce n'est pas un mappage de 1: 1 et 1 noeud de données d'Elasticsecearch peut héberger plusieurs éclats et non seulement 1 mèche et une échec de Lucene Shard ne pas toujours signifie l'échec du noeud de données.

nœud tenant le fragège principal sait s'il est connecté au réseau, qu'il soit capable d'indexer que les données ou non ou non sont corrompues ou non comme mentionnés par @julian, puis il peut ensuite envoyer ces informations au noeud maître, qui promouvoir ensuite les autres réplicas au primaire contenu dans l'état de cluster que tous les nœuds détiennent.

Dans le cas de panne de réseau, toutes les fesses principales hébergées sur les nœuds seront remplacées par d'autres fragments et il est facile de détecter en tant que maître ne sera pas un cœur battant de ce nœud de données.

espoir une partie audacieuse de ma réponse est ce que vous recherchiez, sinon vous n'hésitez pas à commenter et tenterait d'expliquer plus loin.


2 commentaires

Si un nœud peut détecter une défaillance au fralle, si elle est, existe-t-il une API que ES expose pour détecter une défaillance au gaz? Ou est-ce juste qu'il est "interne" comme dans détection en examinant la somme de contrôle du fichier de segment?


@Nag Afaik es Ne les exposez pas en termes d'API, mais vous pouvez activer le journal de module spécifique qui cracherait cet événement, peut-être que vous ne pouvez même pas activer le journal supplémentaire si ES les enregistre au niveau d'erreur.