En tant que fanatique d’elasticsearch, j’utilise régulièrement l’outil pour réaliser des POC, tester des applicatifs comme Logstash et Kibana, ou plus généralement, pour découvrir les extraordinaires fonctionnalités offertes par ElasticSearch (percolator, aggregations, sharding, scalability,…).

Cependant, il est souvent compliqué et chronophage de mettre en place un cluster ElasticSearch (vagrant cluster) complet simplement pour un POC ou des tests.

A l’inverse, utiliser la configuration minimale et par défaut d’ES (très rapide à mettre en place et qui fonctionne très bien) a ses limites lorsque l’on souhaite travailler en prenant en compte les problématiques suivantes :

  • Sharding sur plusieurs nœuds physiques (routing, filtres, rack, …).
  • Configuration réseau d’un cluster (unicast, multicast, ip:port, …)
  • Configuration de snapshot/recovery
  • Configuration spcécifiques (load balancer, data nodes et master nodes)
  • Simulation de coupure réseaux et autres incidents

J’ai donc décidé de créer un projet permettant de lancer un cluster elasticsearch de machines virtuelles (virtualbox/vagrant) en quelques minutes et en une seule commande bash :

vagrant up

Vous devriez alors obtenir un shell ressemblant à ceci :

$ vagrant up
Cluster size: 5
Cluster IP: 10.0.0.0
Bringing machine 'vm1' up with 'virtualbox' provider...
Bringing machine 'vm2' up with 'virtualbox' provider...
...

ElasticSearch Vagrant cluster

Voici le lien vers le dépôt github du projet : https://github.com/ypereirareis/vagrant-elasticsearch-cluster

La gestion du cluster se fait ensuite en utilisant vagrant et elasticsearch de manière classique. Tout est expliqué sur le dépôt (en anglais) :

  1. Pré-requis
  2. Installation
  3. Configuration
  4. Plugins

J’illustrerai, prochainement et de façon concrète, différentes configurations, problématiques ou bonnes pratiques à prendre en compte ou mettre en œuvre lorsque l’on travaille avec elasticsearch.

Le projet de cluster ES avec Vagrant vous permettra de rapidement reproduire les exemples et de modifier les configurations comme vous le souhaitez.

Publié par Yannick Pereira-Reis

Yannick (@yannickpr69) est Ingénieur études et développement, établit dans la région Lyonnaise. Il publie régulièrement des entrées sur ce blog pour partager ses connaissances en tant qu'expert ElasticSearch, Symfony et AngularJS.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *