Compréhension de l'architecture
Le but de cet exercice est de vous permettre de manipuler l'architecture d'Elasticsearch, afin d'illustrer le principe de résilience.
Il vous faut pour cela remplir votre base Elasticsearch. Nous allons créer un index boutiques, avec un type restaurant, que nous allons enrichir avec environ 500 restaurants de New-York.
Une fois Elasticsearch et Kibana lancé, ouvrez l'interface de Sense.
Copiez le contenu du fichier ci dessous
Le coller dans la partie requête de Sense
Lancer les deux requêtes
Ouvrez l'interface du plugin Head (http://localhost:9200/_plugin/head/)
Question
Comment s'appelle votre instance d'Elasticsearch ? Est il particulier pour le cluster ?
Le nom des instances d'Elasticsearch par défaut est choisi au hasard parmi une liste de 300 héros Marvel.
Votre cluster est composé d'une seule instance d'Elasticsearch pour le moment.
Le nom de l'instance est écrit en gras, à gauche de l'index boutiques.
Ce instance est le nœud primaire du cluster, puisqu'il n'est composé que de celui-ci. Cette information est marquée par l'étoile à gauche du nom du nœud.
Question
A travers combien de shards votre index est il découpé ? Si l'instance principale est soumis à une panne, est il toujours possible de faire une recherche ?
On peut voir le nombre de shards en dessous du nom de l'index.
Par défaut le nombre de shards est 5. Chacun de ces shard est unique, ce qui provoque l'indisponibilité totale du cluster Elasticsearch en cas de panne de sa seule instance.
Nous allons simuler un cluster de noeud en lancant deux autres instances Elasticsearch.
Aller dans le répertoire d'Elasticsearch
Lancer deux nouvelles instance en lançant deux fois la commande (dans deux nouveaux terminaux)
Linux :
./bin/elasticsearch
Windows :
bin\elasticsearch.bat
Actualiser l'interface du plugin Head en rafraîchissant la page.
Question
Comment s'appellent vos nouvelles instances ? Quelle est l'instance principale ?
Le nom des instances se trouvent à gauche des index
Question
Comment sont réparti les shards de l'index ? Sur quel(s) serveur(s) se trouve(nt) les instances primaires des shards ? Si un des serveurs subit une panne, le cluster est il toujours disponible ?
Les instances primaires des shards sont identifiées par une bordure grise.
Vous pouvez faire l'essai en arrêtant un des serveurs, CTRL+C pour envoyer un signal d’arrêt à une instance dans une console.
Les shards sont maintenant réparti à travers les 3 nœuds, de manière à maximiser la disponibilité en créant automatiquement des répliques. Le cluster est toujours disponible, grâce aux répliques des shards se trouvant sur les autres instances.
Sur l'exemple ci-dessous, le nœud Satana est le nœud principal. Les shards 0 et 2 primaires se trouvent sur le nœud Tabitha Smith, les shards primaires 1, 3 et 4 sur Satana.
Arrêter l'instance principale d'Elasticsearch pour simuler une panne :
Ouvrir le terminal ayant lancé l'instance marquée comme principale d'Elasticsearch
Envoyer la commande stop par CTRL+C, et confirmer
Changez d'adresse pour accéder au plugin Head (car vous avec terminé l'instance), en changeant le port par 9201
Question
Comment Elasticsearch a réorganisé l'architecture des shards pour maintenir la disponibilité du cluster ? Quel est le nœud principal ? Quels sont les shards primaires ?
Le nœud principal est maintenant Mac Gargan. Les shards primaires sont le 4 sur le nœud principal, et le 0, 1, 2 et 3 sur Tabitha. Des répliques ont été créées pour maintenir la disponibilité en cas de panne d'un des deux serveurs restant.