¿Qué es Elasticsearch?

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Elasticsearch es un motor de búsqueda y análisis de datos de código abierto, distribuido y basado en documentos. Está diseñado para ofrecer búsqueda en tiempo real y análisis de grandes volúmenes de datos. Utiliza una estructura distribuida, lo que permite escalar horizontalmente agregando más nodos a un clúster. Un clúster de Elasticsearch está compuesto por uno o más nodos, que trabajan juntos para almacenar y buscar datos de manera eficiente.

¿Qué es un clúster en Elasticsearch?

Un clúster en Elasticsearch es un conjunto de nodos (servidores) que trabajan juntos para almacenar y procesar datos. Cada clúster tiene un identificador único llamado "nombre de clúster" que lo distingue de otros clústeres. Los nodos en un clúster pueden ser nodos maestros, nodos de datos o nodos de cliente.

  • Nodos maestros: Son responsables de la gestión del clúster, como la creación de índices y la asignación de shards (fragmentos de datos).
  • Nodos de datos: Almacenan los datos y realizan operaciones de búsqueda y agregación.
  • Nodos de cliente (nodos coordinadores): No almacenan datos, pero dirigen las solicitudes a los nodos apropiados.

Instalación y configuración de un clúster de 3 nodos de Elasticsearch

1. Requisitos previos

  • Java: Elasticsearch requiere Java para ejecutarse. Se recomienda usar la versión OpenJDK 11 o superior.
  • Servidor: Necesitarás tres máquinas o instancias virtuales (pueden ser servidores físicos, máquinas virtuales o contenedores Docker) con acceso a la red entre sí.

2. Instalación de Elasticsearch

Puedes instalar Elasticsearch de varias maneras, como usando paquetes DEB/RPM, tarball o Docker. A continuación, te muestro cómo instalarlo usando paquetes DEB en Ubuntu/Debian.

  1. Descargar e instalar la clave pública PGP:

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
  2. Añadir el repositorio a la lista de fuentes:

    sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'
  3. Actualizar el índice de paquetes e instalar Elasticsearch:

    sudo apt-get update
    sudo apt-get install elasticsearch
  4. Iniciar y habilitar Elasticsearch para que se inicie al arrancar:

    sudo systemctl start elasticsearch
    sudo systemctl enable elasticsearch

Repite estos pasos en cada uno de los tres nodos.

3. Configuración del clúster

La configuración de Elasticsearch se encuentra en el archivo elasticsearch.yml, que está en /etc/elasticsearch/. Las siguientes configuraciones son las mínimas necesarias para configurar un clúster de 3 nodos.

  1. Configurar el nombre del clúster y del nodo: En cada nodo, edita el archivo elasticsearch.yml y establece:

    cluster.name: mi-cluster node.name: nodo-1 # Cambia esto a nodo-2 y nodo-3 en los otros nodos
  2. Configurar las direcciones de red:

    network.host: 0.0.0.0
  3. Configurar la lista de nodos maestros: Agrega la lista de nodos que pueden ser maestros en el clúster (en este caso, los tres nodos):

    discovery.seed_hosts: ["192.168.1.1", "192.168.1.2", "192.168.1.3"] cluster.initial_master_nodes: ["nodo-1", "nodo-2", "nodo-3"]
  4. Configurar el puerto de transporte: Elasticsearch usa un puerto de transporte para la comunicación interna entre nodos, que por defecto es el puerto 9300. Asegúrate de que este puerto esté abierto en los cortafuegos de tus servidores.
  5. Configurar la memoria y otros ajustes (opcional): Puedes ajustar la cantidad de memoria JVM que Elasticsearch utiliza modificando el archivo jvm.options en /etc/elasticsearch/.

4. Iniciar el clúster

Después de haber configurado los tres nodos, inícialos uno por uno:

sudo systemctl restart elasticsearch

Después de iniciar los tres nodos, el clúster debería formarse automáticamente. Puedes verificar el estado del clúster con la siguiente solicitud a través de curl:

curl -X GET "localhost:9200/_cluster/health?pretty"

Esto debería mostrar información sobre el clúster, incluidos los nodos disponibles, el estado general (verde, amarillo, rojo) y otros detalles.

Consideraciones adicionales

  • Seguridad: Considera habilitar la seguridad en Elasticsearch, configurando autenticación, SSL/TLS y control de acceso.
  • Escalabilidad: Puedes agregar más nodos al clúster en el futuro simplemente repitiendo los pasos de instalación y configuración en nuevos servidores.
  • Monitoreo: Elasticsearch tiene herramientas como Kibana y X-Pack que facilitan el monitoreo y la gestión del clúster.

Con esto, habrás configurado un clúster de Elasticsearch de 3 nodos funcional y listo para usar.