Cómo configurar un cluster de Elasticsearch con 3 nodos en Ubuntu

Elasticsearch es una base de datos no-sql. Es el motor de búsqueda y análisis distribuido, de búsqueda y análisis en tiempo real para todo tipo de datos. Elasticsearch puede almacenar eficazmente cualquier tipo de datos, ya sean textos estructurados o no estructurados, datos numéricos, e indexarlos de forma que se puedan realizar búsquedas rápidas. Elasticsearch proporciona una sencilla API REST para gestionar el clúster e indexar/escribir y buscar los datos.

Elasticsearch está construido con Java e incluye una versión de OpenJDK.

Para entender Elasticsearch con más detalle, consulta su documentación oficial.

En este artículo, nos centraremos únicamente en cómo configurar un clúster de 3 nodos.

Requisitos previos

  1. Ubuntu 18.04 LTS

Qué vamos a hacer

  1. Descargar Elasticsearch
  2. Instalar Java 1.8
  3. Instalar y configurar Elasticsearch
  4. Probar el clúster

Descargar Elasticsearch

Para linux, la versión actual 7.4.2, a partir de ahora, de Elasticsearch puede descargarse utilizando el siguiente comando en tus sistemas linux.

Descarga en cada nodo (El nombre de la carpeta puede variar)

mkdir elastic1
cd elastic1/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-linux-x86_64.tar.gz

Si buscas una versión específica, siempre puedes navegar por los archivos en el sitio de Elasticsearch. Siempre es bueno ir con la última versión, ya que contiene todas las correcciones de los problemas de las versiones anteriores.

Instalar Java

Elasticsearch necesita que Java esté disponible en el sistema.

Para instalar OpenJDK 8, utiliza los siguientes comandos en tu servidor Ubuntu 18.04

En cada nodo

sudo apt update
sudo apt install openjdk-8-jdk
java --version

Instalar y configurar Elasticsearch

Ahora, es el momento de instalar Elasticsearch desde el archivo.

Extrae el paquete que acabamos de descargar en el paso anterior utilizando el siguiente comando.

Instala Elasticsearch en cada nodo

tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz

Configura Elasticsearch

Antes de iniciar el servicio, es necesario configurar Elasticsearch para que funcione en modo Cluster.

Aquí tenemos 3 servidores

es-nodo-1: 10.11.10.62 (Maestro inicial)
es-nodo-2: 10.11.14.248
es-nodo-3: 10.11.13.158

Abre el archivo config/elasticsearch.yml y añade lo siguiente en él. (Comprueba tus IPs)

vim config/elasticsearch.yml

Añade en el maestro es-node-1 enconfig/elasticsearch.yml

#give your cluster a name.
cluster.name: my-cluster

#give your nodes a name (change node number from node to node).
node.name: "es-node-1"

#define node 1 as master-eligible:
node.master: true

#define nodes 2 and 3 as data nodes:
node.data: true

#enter the private IP and port of your node:
network.host: 10.11.10.62
http.port: 9200

#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.62", "10.11.14.248","10.11.13.158"]

cluster.initial_master_nodes:
- 10.11.10.62

Añadir On es-node-2 enconfig/elasticsearch .yml (Este nodo no contiene: cluster.initial_master_nodes)

#give your cluster a name.
cluster.name: my-cluster

#give your nodes a name (change node number from node to node).
node.name: "es-node-2"

#define node 1 as master-eligible:
node.master: true

#define nodes 2 and 3 as data nodes:
node.data: true

#enter the private IP and port of your node:
network.host: 10.11.14.248
http.port: 9200

#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.62", "10.11.14.248","10.11.13.158"]

Añade es-node-3 en config/elasticsearch.yml (Este nodo no contiene: cluster.initial_master_nodes)

#give your cluster a name.
cluster.name: my-cluster

#give your nodes a name (change node number from node to node).
node.name: "es-node-3"

#define node 1 as master-eligible:
node.master: true

#define nodes 2 and 3 as data nodes:
node.data: true

#enter the private IP and port of your node:
network.host: 10.11.13.158
http.port: 9200

#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.62", "10.11.14.248","10.11.13.158"]

Iniciar y probar el clúster

Inicia el clúster

En cada nodo (primero inicia el nodo maestro es-node1)

Utiliza el siguiente comando para iniciar Elasticsearch en primer plano

bin/elasticsearch

Nota:

Elasticsearch utiliza un mmapfs por defecto para almacenar sus índices. Es probable que los límites por defecto del sistema operativo en los recuentos de mmap sean demasiado bajos, lo que puede dar lugar a las siguientes excepciones de falta de memoria.

[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

En Ubuntu 18.04 podemos podemos aumentar los límites ejecutando el siguiente comando como root/sudo:

sudo sysctl -w vm.max_map_count=262144

Añade -d a startpara iniciar Elasticsearch en segundo plano

bin/elasticsearch -d

Una vez que se inicia el clúster, puedes ver los siguientes registros en es-nodo-1. Observa cómo los nodos se añaden a es-nodo-1 cuando se inician.

[2019-11-30T08:43:05,766][INFO ][o.e.c.s.ClusterApplierService] [es-node-1] added {{es-node-2}{V9-rBKeJRe2S8UPW96_XzA}{65Bu-WtmTj-Hce_lFAK-ng}{10.11.14.248}{10.11.14.248:9300}{dilm}{ml.machine_memory=4135120896, ml.max_open_jobs=20, xpack.installed=true},}, term: 1, version: 18, reason: Publication{term=1, version=18}
[2019-11-30T08:43:30,317][INFO ][o.e.c.s.MasterService    ] [es-node-1] node-join[{es-node-3}{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true} join existing leader], term: 1, version: 19, reason: added {{es-node-3}{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true},}
[2019-11-30T08:43:30,820][INFO ][o.e.c.s.ClusterApplierService] [es-node-1] added {{es-node-3}{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true},}, term: 1, version: 19, reason: Publication{term=1, version=19

Prueba el clúster

Abre un nuevo terminal desde el que se pueda acceder al clúster y prueba los siguientes comandos

curl http://10.11.10.62:9200/_cluster/stats?pretty

curl http://10.11.10.62:9200/_nodes/process?pretty

curl http://10.11.10.62:9200/_cluster/stats?pretty

Conclusión

En este artículo hemos visto los pasos para descargar la última versión de elasticsearch, instalar Java 8, configurar Elasticsearch, iniciar y probar el clúster.

También te podría gustar...