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

Environnement de développement ElasticSearch 2.4 avec Docker

    Home Big Data Environnement de développement ElasticSearch 2.4 avec Docker

    Environnement de développement ElasticSearch 2.4 avec Docker

    Par Nicolas Martignole | Big Data | 1 commentaire | 21 septembre, 2016 | 0 | 4 039 affichages
         

    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
    docker, elasticsearch
    • Avatar
      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

    • Podcast à (re)découvrir
    • Lorsque le réseau social Parler cherche un nouvel endroit pour poser ses encombrantes valises…
    • Veille technologique janvier 2021
    • Amdahl’s & Gunther’s laws pour l’organisation des équipes de développement
    • Comprendre CSS : de Boostrap à Tailwind.CSS

    Commentaires récents

    • MAROT Francois dans Podcast à (re)découvrir
    • Geoffray Gruel dans Lorsque le réseau social Parler cherche un nouvel endroit pour poser ses encombrantes valises…
    • Clément dans Veille technologique janvier 2021
    • Benjamin dans Lorsque le réseau social Parler cherche un nouvel endroit pour poser ses encombrantes valises…
    • alexis dans Veille technologique janvier 2021

    Les plus lus

    • Les revenus d’un informaticien indépendant en EURL - 85 250 affichage(s)
    • Changer la batterie d’un MacBook Pro de 2011 - 61 025 affichage(s)
    • Optional en Java 8 - 50 776 affichage(s)
    • Quelle est la différence entre volatile et synchronized ? - 49 584 affichage(s)
    • Un modèle de Product Backlog et de Sprint Backlog avec Excel - 48 457 affichage(s)
    • Redis, découverte d’un moteur clé-valeur simple et puissant - 46 146 affichage(s)
    • Comment simuler le navigateur de l'iphone avec Firefox ou Safari ? - 41 234 affichage(s)
    • serialVersionUID mythes et légendes - 35 774 affichage(s)
    • Faut-il gérer une équipe de développeurs ? - 34 444 affichage(s)
    • Développeur après 31 ans ? Ridé et chauve tu seras - 33 632 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 parisjug paris jug pjug play playframework portlet ria Scala scrum spring Startup twitter usi usi2010 web xebia

    Recent Posts

    • Podcast à (re)découvrir

      On me demande parfois comment faire sa veille technologique… je suis assez

      20 janvier, 2021
    • Lorsque le réseau social Parler cherche un nouvel endroit pour poser ses encombrantes valises…

      Nous allons parler architecture et plus exactement, du nombre de machines nécessaires

      19 janvier, 2021
    • Veille technologique janvier 2021

      Nouveau format d’article cette semaine : je vous propose de partager mes

      17 janvier, 2021

    Recent Tweets

    • RT  @welovedevs : On lui a demandé s'il pensait que les développeurs étaient considérés dans son entreprise. Voilà ce qu'il a répondu 😩 #Enqu…

      2 hours ago
    • Lunatech a aussi eu l'excellente idée de devenir partenaire avec le projet FP Tower, et cela permettra à tous les e… https://t.co/wMfT5MhviI

      3 hours ago
    • Le site https://t.co/r90vLjZTQt propose un cours d'introduction sur la prog fonctionnelle avec Scala. La qualité de… https://t.co/cwOyzNhL0N

      3 hours ago
    • RT  @JulienTruffaut : I am so happy of this partnership. Lunatech is a fantastic IT consultancy which invests a lot in the training of its em…

      4 hours ago
    •  @k33g_org   @fcamblor   @waxzce   @bluxte  On a un Channel slack pour le hackbreakfast que nous organisions avant les conf… https://t.co/JfTJ2BAMlP

      8 hours ago

    Mots clés

    agile (18) ajax (11) Apple (11) architecture (5) barcamp (5) BarCampJavaParis (5) ddd (5) devoxx (33) esb (6) exo (6) flex (9) geek (5) google (11) grails (5) groovy (10) humeur (12) humour (7) independant (6) iphone (12) Java (76) javascript (7) jazoon (28) jboss (22) jboss seam (12) jsf (9) jug (16) Linux (11) mac (6) mule (5) parisjug (7) paris jug (22) pjug (6) play (8) playframework (6) portlet (5) ria (8) Scala (19) scrum (44) spring (23) Startup (10) twitter (5) usi (21) usi2010 (9) web (16) xebia (7)

    Le Touilleur Express

    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
    Le Touilleur Express