Get it on Google Play
15-08-2018
 

Desplegar un cluster ElasticSearch con Docker

Cluster Elasticsearch

Cluster Elasticsearch

ElasticSearch es muy potente(En lo que se refiere a rendimiento), pero si aún así, requerís para vuestro proyecto un cluster que os proporcione escalabilidad y alta disponibilidad aquí vamos a ver como implementarlo con Docker.

ElasticSearch viene, por defecto, con todo lo necesario para trabajar en cluster. Cuando detecta nuevos nodos(O los pierde) el mismo se gestiona(Copia replicas, crea másters, etc.). Solamente tenemos que configurar lo siguiente en el fichero ‘elasticsearch.yml’:

# Para que conteste desde cualquier host
network.host: 0.0.0.0

# Lista de posible nodos a los que hacer ping al arrancar
discovery.zen.ping.unicast.hosts: ["172.17.0.2", "172.17.0.3", "172.17.0.4", "172.17.0.5", "172.17.0.6", "172.17.0.7", "172.17.0.8"]

# Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):
discovery.zen.minimum_master_nodes: 2 

A continuación os dejo el Dockerfile que generará nuestra imagen, de la que podremos arrancar tantos contenedores como queramos. La única complejidad es que desde(no me acuerdo de que versión ElasticSearch) ElasticSearch no arranca como root.

FROM ubuntu:latest

RUN apt-get update
RUN apt-get -y install openjdk-8-jdk

COPY ./soft /opt

RUN chmod -R 777 /opt

# Add none root user
RUN  useradd usr && echo "usr:usr" | chpasswd && adduser usr sudo
USER usr

CMD /opt/start.sh

Como veis es, partiendo de un Ubuntu, instalar Java, copiar ElasticSearch, crear el nuevo usuario que no es root y arrancar ‘/opt/start.sh’. El fichero ‘start.sh’ es tan simple como lo siguiente:

#!/bin/bash

/opt/elasticsearch-6.3.0/bin/elasticsearch

Y ya está, ya podéis crearos vuestro ejercito de nodos ElasticSearch.

Si te ha servido, por favor comparte

Interesado en formación Docker?

 

Leave a Reply