Como configurar nuevos nodos en Elasticsearch

Como configurar nuevos nodos en Elasticsearch


Aprovechando mi anterior entrada Como instalar Elasticsearch en Ubuntu en este voy a describir como configurar nodos en Elasticsearch, aunque no en instancias EC2 de AWS, que trataré de abordar en futuras entradas.

Para realizar la configuración de nuevos nodos Elasticsearch dispone del módulo Zen Discovery, que ofrece dos vias de configuración para llevar a cabo la incorporación de nuevos nodos a nuestro cluster:

  • multicast: realiza un barrido en las redes a las que pertenece el nodo en busca de nuevos nodos.
  • unicast en la que centraré la configuración y en la que los nodos son configurados previamente.

Ambas configuraciones pueden usarse conjuntamente entre nodos pero solo es posible configurar una a la vez por nodo. Esto quiere decir que un nodo configurado en unicast solo puede funcionar de este modo.

Configuración en unicast

Partiremos desde un escenario en el que ya disponemos de los dos nodos configurados y arrancados (en distintos servidores). Si tienes dudas de como hacerlo leete como instalar Elasticsearch en Ubuntu.

Edita el fichero de configuración de Elasticsearch:

~ $ sudo vi /etc/elasticsearch/elasticsearch.yml

Y agrega la siguiente información:

discovery:  
  zen:
    ping:
      multicast:
        enabled: false
      unicast:
        hosts: 192.168.1.1, 192.168.1.2:9300, 192.168.1.3[9200-9300]  # [IP:PORT],

Presta atención en las propiedades:

  • discovery.zen.ping.multicast.enabled: false, siempre que unicast este activa esta propiedad debe estar marcada a false.
  • discovery.zen.ping.unicast.hosts: 192.168..., donde agregamos la lista de direcciones IPs:puertos separadas por ,.

Según el equipo de elasticsearch no es necesario declarar todos los nodos en cada uno de los nodos, aunque yo si los declaro. Reiniciamos Elasticsearch:

~ $ sudo /etc/init.d/elasticsearch start

Una vez reiniciados cada uno de los nodos accedemos al nodo que tenga instalado el plugin HEAD y deberiamos ver algo similar a:

3 nodes

Nodo Master o Client

Por defecto el cluster de Elasticsearch elegirá uno de los nodos como master (denominado proceso de elección) a menos que lo determinemos por configuracion. Basta con agregar a la configuración de los nodos que queremos configurar como master la siguiente propiedad:

node.master: true  

Una vez realizado, este nodo quedará marcado como master y aunque solo habra un master activo por cluster lo ideal es tener varios nodos marcados como tal, ya que en caso de caida de nodo siempre habra un nodo que ejercera de master.

Recuerda que a partir del segundo nodo es aconsejable configurar la propiedad discovery.zen.minimum_master_nodes a más de 1 como podeís ver en la documentación de Zen discovery, para determinar cuantos masters elegibles son necesarios para operar en el cluster.