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 !

0 no like

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

  • L’instant T où tu poses ta dém…
  • The « Robinson » projection – comprendre son système d’information
  • Réussir son démarrage comme Staff/Principal Engineer dans une nouvelle entreprise
  • Gérer les situations de blocage en tant que Staff Engineer
  • Un monolithe, c’est quoi ?

Commentaires récents

  • Nicolas Martignole dans The « Robinson » projection – comprendre son système d’information
  • Lucas dans The « Robinson » projection – comprendre son système d’information
  • Guillaume dans The « Robinson » projection – comprendre son système d’information
  • Francois Dechery dans The « Robinson » projection – comprendre son système d’information
  • Gaëtan dans The « Robinson » projection – comprendre son système d’information

Les plus lus

  • Les revenus d’un informaticien indépendant en EURL - 89 684 affichage(s)
  • Optional en Java 8 - 70 951 affichage(s)
  • Changer la batterie d’un MacBook Pro de 2011 - 65 588 affichage(s)
  • Quelle est la différence entre volatile et synchronized ? - 65 464 affichage(s)
  • Retour sur la soirée du lundi 12 juillet chez Doctolib - 63 072 affichage(s)
  • Un modèle de Product Backlog et de Sprint Backlog avec Excel - 57 801 affichage(s)
  • Redis, découverte d’un moteur clé-valeur simple et puissant - 51 018 affichage(s)
  • Comment simuler le navigateur de l'iphone avec Firefox ou Safari ? - 45 656 affichage(s)
  • serialVersionUID mythes et légendes - 41 900 affichage(s)
  • Développeur après 31 ans ? Ridé et chauve tu seras - 39 394 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

  • L’instant T où tu poses ta dém…

    Retour d’expérience sur la démission et le moment où vous devez quitter une entreprise.

    6 likes

    24 octobre, 2024
  • The « Robinson » projection – comprendre son système d’information

    Nous sommes en juillet 2022 chez Doctolib. Je travaille sur un projet

    5 likes

    22 octobre, 2024
  • Réussir son démarrage comme Staff/Principal Engineer dans une nouvelle entreprise

    Je prépare une présentation avec mon collègue Théotime pour la conférence Cloud

    3 likes

    6 octobre, 2024

Mots clés

Apple (32) Architecture (14) 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 (2) Scala (30) scrum (43) Société (3) Staff Engineer (5) Startup (21) Web 2.0 (67)

Le Touilleur Express

Blog par Nicolas Martignole

Contactez-moi : nicolas@touilleur-express.fr

Suivez-moi sur X (Twitter) : @nmartignole

Copyright© 2008 - 2024 Nicolas Martignole | Tous droits réservés
  • A propos de l’auteur
  • A propos du Touilleur Express
  • Reset Password

Le Touilleur Express