Como configurar un nodo de Elasticsearch como balanceador de carga

Como configurar un nodo de Elasticsearch como balanceador de carga


Vaya! a este ritmo voy a llegar a las 10.000 horas con el asunto de Elasticsearch, pero estoy muy metido en ello y creo que es el mejor modo de aprovecharlo. Una de las primeras dudas que creo todos tenemos al instalar Elasticsearch es "¿Qué uso para realizar el balanceo de carga?" (para evitar caidas del servicio entre otras cosas), ¿uso Apache?, ¿Nginix?, ¿balancador hardware? ..., una opción bastante buena es dejar que sea Elasticsearch el que lo gestione.

Partimos del siguiente escenario:

  • 3 nodos de datos
  • 1 nodo que acturá como balanceador

Configuración de nodo como balanceador

Comienza por editar el fichero de configuración de Elasticsearch del nodo que acturá como balanceador:

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

Y agrega la siguiente información:

http.enabled: true  
master: false  
data: false  
discovery:  
  zen:
    ping:
      multicast:
        enabled: false
      unicast:
        hosts: 192.168.1.1:9300, 192.168.1.2:9300, 192.168.1.3:9300,

FIjate en los parámetros:

  • http.enabled: true, (por defecto true) habilita el trafico HTTP para este nodo.
  • node.master y node.data con valor false, así el balanceador solo actuará como pasarela para realizar cualquier operación con el resto de nodos. Lo cual es una ventaja ya que apenas consumirá recursos del servidor.
  • discovery.zen.ping.unicast.hosts: 192.168..., donde declaramos los nodos (si quieres saber más lee mi post "Como configurar nuevos nodos en Elasticsearch").

Reinicia el nodo y a partir de este momento todas las peticiones deberán ser remitidas a este nodo.

Configuración de nodo

Una vez habilitado nuestro nodo balanceador basta como, editar el fichero de configuración de Elasticsearch y agregar a cada nodo la propiedad:

http.enabled: false  

Con ello eliminas la posilibilidad de realizar consultas directamente a los nodos y aseguramos que todas las peticiones serán realizadas contra nuestro balanceador. Reinicia los nodos y chequea que todo ha ido bien:

http://nodobalanceador:9200/_plugin/head

Deberia quedarte algo similar a esto (en mi caso tengo 3 nodos y un balanceador):

Si todo esta bien ya puedes trabajar con normalidad y sin interrupciones por caida o mantenimiento en alguno de los nodos. Para seguir leyendo sobre el asunto aquí os dejo el enlace a la documentación oficial de Nodos de Elasticsearch.