Le Touilleur Express

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

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

  • 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
  • L’entretien de recrutement « System Design »

Commentaires récents

  • 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 ?
  • Sébastien dans Devenir Staff Engineer : comment et pourquoi ?

Les plus lus

  • Les revenus d’un informaticien indépendant en EURL - 88 999 affichage(s)
  • Optional en Java 8 - 68 662 affichage(s)
  • Changer la batterie d’un MacBook Pro de 2011 - 64 878 affichage(s)
  • Retour sur la soirée du lundi 12 juillet chez Doctolib - 61 747 affichage(s)
  • Quelle est la différence entre volatile et synchronized ? - 60 744 affichage(s)
  • Un modèle de Product Backlog et de Sprint Backlog avec Excel - 56 053 affichage(s)
  • Redis, découverte d’un moteur clé-valeur simple et puissant - 50 229 affichage(s)
  • Comment simuler le navigateur de l'iphone avec Firefox ou Safari ? - 44 969 affichage(s)
  • serialVersionUID mythes et légendes - 41 181 affichage(s)
  • Développeur après 31 ans ? Ridé et chauve tu seras - 38 854 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

  • 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
  • WeAreDevelopers 2022, conférence à Berlin – jour 1

    Il est 8h40, 19 degrés, vous êtes à Berlin. La queue dehors

    24 juin, 2022

Tweets @nmartignole

  •  @fanf42  Excellent 👌

    1 day ago
  • RT  @iambdxoul :  @TheHackersNews  Lmao

    2 days ago
  • RT  @PR0GRAMMERHUM0R : Finally a GPT feature useful for work https://t.co/8U9FSUwKg5 https://t.co/GkUIJi7qtW

    2 days ago

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é (14) 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