Le Touilleur Express

  • Accueil
  • A propos de l’auteur
  • A propos du Touilleur Express
Next Previous

Environnement de développement ElasticSearch 2.4 avec Docker

21 septembre, 2016

Vous avez besoin de développer avec ElasticSearch ? Voici un mini-tutorial pour vous donner quelques pistes, et vous partager une expérience récente.

Docker est un système simple qui permet d’isoler une application dans une boîte, tout en partageant les ressources d’une machine hôte. C’est mieux qu’une machine virtuelle car cela ne demande pas autant de ressources. C’est surtout plus simple. Allez faire un tour sur le site de Docker, et installez simplement Docker pour votre environnement. Une fois installé, pour les développeurs sous Mac, vous retrouverez l’icône de Docker dans votre bar d’activité en haut.

Cliquez sur l’icône de Docker, puis sélectionnez « Open Kitematic » comme sur la capture ci-dessus. Cliquez ensuite sur « + New », pour pouvoir ensuite chercher l’image docker « sebp/elk ». Vous pouvez aussi faire « docker pull sebp/elk » en ligne de commande, si vous n’utilisez pas Kitematic.

docker_capture

A noter qu’il sera nécessaire de créer avant tout un compte sur Docker Hub et passer par une étape de vérification de votre email, avant que Kitematic ne fonctionne complètement. Si vous voyez des erreurs 401 plus tard => vérifiez que vous avez correctement ouvert une session sur Docker Hub.

Sélectionnez ici la deuxième image et cliquez sur « Create »

docker_kitematic

Ceci permet de télécharger la dernière version d’ElasticSearch + LogStash + Kibana, correctement configuré, avec un environnement Java.

Si vous souhaitez une autre version d’ElasticSearch, il suffit d’utiliser un des tags du projet. Pratique pour aller chercher une version plus ancienne.

Vous allez me dire : mettre 3 applications dans un conteneur c’est un anti-pattern. Ici il s’avère que pour du développement, c’est parfaitement adapté et non, ce n’est pas un anti-pattern.

J’utilise l’excellent projet elk-docker (https://elk-docker.readthedocs.io/) qui est plutôt bien documenté et qui peut servir de base pour se faire une image de travail intéressante.

Et si je veux rejoindre un Cluster ?

Si vous souhaitez configurer le serveur ElasticSearch dans un cluster, il suffit d’abord de démarrer une image elk, puis de se connecter sur une instance (via le bouton Exec, sur Kitematic / ou via un term avec la commande docker exec -it elk si elk est le nom de votre image). 

Ensuite, vous pouvez éditer le fichier /etc/elastichsearch/elasticsearch.yml, et configurer votre node :

# Fichier /etc/elasticsearch/elasticsearch.yml
# cluster name est le nom du cluster (par defaut elasticsearch)
cluster.name: es-test
# Donner un nom à votre node
node.name: captaindash-dev-1
# En mode Dev, je ne souhaite pas etre master mais juste data node
node.master: false
node.data: true
# Binding special (on est dans un conteneur Docker)
network.host: 0.0.0.0
# L'adresse publique de la machine hôte (ici l'IP de mon MacBook Pro dans le réseau du client)
network.publish_host: "10.99.88.70"
# Le ou les noms des masters à contacter (ici un serveur ES dans un cluster chez mon client... que j'ai anonymisé)
discovery.zen.ping.unicast.hosts: ["srv00193000.info.superclient.fr"]

Vous pouvez alors relancer ElasticSearch (/etc/init.d/elasticsearch restart sur cette image Docker).

Les soucis que vous allez rencontrez :

  • pas la même version d’ElasticSearch que le master (=> utilisez une version identique au(x) master(s))
  • pas la même version majeure de Java (7 au lieu de 8) (=> elk est en Java 8)

Si votre image et votre master n’ont pas les mêmes plugins ElasticSearch, vous devriez avoir cette erreur (j’ai retiré les IP et le nom ici du master du client) :

[WARN ][transport] [captaindash-dev-1] Transport response handler not found of id [8263]
[INFO ][discovery.zen] [captaindash-dev-1] failed to send join request to master [{es-super-master-du-client}{NZD9efGSSpegtM1knKCaGw}{188.xx.xx.xx}{188.xx.xx.xx:9300}], reason [RemoteTransportException[[es-super-master-client][188.xx.xx.xx:9300][internal:discovery/zen/join]]; nested: IllegalStateException[failure when sending a validation request to node]; nested: RemoteTransportException[[captaindash-dev-1][172.xx.xx.xxx:9300][internal:discovery/zen/join/validate]]; nested: IllegalArgumentException[No custom metadata prototype registered for type [licenses], node like missing plugins]; ]

Pour résoudre ce problème, nous avons désactivé les plugins inutiles avec les commandes ES de la 2.4.

Au final, cela permet d’avoir un serveur ElasticSearch en local, qui fonctionne aussi lorsque vous n’êtes plus sur le réseau du client, pour développer.

C’est tout pour aujourd’hui !

Articles similaires:

Default ThumbnailTrojan et sécurisation avec ElasticSearch Hadoop et Elasticsearch, comment indexer vers ES Default ThumbnailDocker, un outil simple et génial Default ThumbnailInstaller Docker
  • David Pilato 28 septembre 2016 at 18 h 23 min

    Il existe aussi cette image https://github.com/elastic/elasticsearch-docker
    Officielle d’un point de vue elasticsearch.

    La version courante est la 5.0.0-beta1.

Chercher

Derniers articles

  • Un monolithe, c’est quoi ?
  • Vis ma vie de Staff/Principal Engineer
  • Devenir Staff Engineer : comment et pourquoi ?
  • WeAreDevelopers 2022, conférence à Berlin – jour 1
  • Le chiffrement de bout en bout et la signature d’enveloppe

Commentaires récents

  • Antoine dans Un monolithe, c’est quoi ?
  • Nicolas Martignole dans Vis ma vie de Staff/Principal Engineer
  • Matt dans Vis ma vie de Staff/Principal Engineer
  • Sébastien dans Vis ma vie de Staff/Principal Engineer
  • BLA dans Devenir Staff Engineer : comment et pourquoi ?

Les plus lus

  • Les revenus d’un informaticien indépendant en EURL - 89 235 affichage(s)
  • Optional en Java 8 - 69 321 affichage(s)
  • Changer la batterie d’un MacBook Pro de 2011 - 65 052 affichage(s)
  • Retour sur la soirée du lundi 12 juillet chez Doctolib - 62 300 affichage(s)
  • Quelle est la différence entre volatile et synchronized ? - 62 193 affichage(s)
  • Un modèle de Product Backlog et de Sprint Backlog avec Excel - 56 733 affichage(s)
  • Redis, découverte d’un moteur clé-valeur simple et puissant - 50 385 affichage(s)
  • Comment simuler le navigateur de l'iphone avec Firefox ou Safari ? - 45 104 affichage(s)
  • serialVersionUID mythes et légendes - 41 421 affichage(s)
  • Développeur après 31 ans ? Ridé et chauve tu seras - 38 973 affichage(s)

Mots clés

agile ajax Apple architecture barcamp BarCampJavaParis ddd devoxx esb exo flex geek google grails groovy humeur humour independant iphone Java javascript jazoon jboss jboss seam jsf jug Linux mac mule paris jug parisjug pjug play playframework portlet recrutement ria Scala scrum spring Startup usi usi2010 web xebia

Derniers articles

  • Monolithic software in the healthcare industry

    Un monolithe, c’est quoi ?

    Dans cet article, je vous propose de découvrir ce qu’est un monolithe,

    12 juillet, 2023
  • Vis ma vie de Staff/Principal Engineer

    Suite de l’article précédent sur le Staff Engineer. Aujourd’hui, voyons un peu

    20 juillet, 2022
  • Inari

    Devenir Staff Engineer : comment et pourquoi ?

    Après une dizaine d’années en tant que développeur, vous serez un jour

    17 juillet, 2022

Tweets @nmartignole

Mots clés

Apple (32) Architecture (13) Big Data (5) Conference (8) Devoxx (55) Dev Web (37) Doctolib (2) geekevent (1) groovy (2) Innoteria (11) Java (517) Linux (10) Non classé (15) Perso (266) Recrutement (3) Scala (30) scrum (43) Société (3) Startup (20) Web 2.0 (67)

Le Touilleur Express

Blog par Nicolas Martignole

Contactez-moi : nicolas@touilleur-express.fr

Suivez-moi sur Twitter : @nmartignole

Copyright© 2008 - 2020 Nicolas Martignole | Tous droits réservés
  • A propos de l’auteur
  • A propos du Touilleur Express
  • Log In
  • My Account
  • My Profile
  • Reset Password

Le Touilleur Express