En esta entrada vamos a ver cómo instalar Elasticsearch en Debian 10 Buster paso a paso, de modo que puedas trabajar con este conocido sistema de búsqueda y análisis de grandes cantidades de datos en tu servidor o VPS Debian.
Tabla de contenidos
Antes de instalar Elasticsearch en Debian 10 Buster
Si quieres completar los pasos de esta guía de instalación de Elasticsearch en Debian 10 Buster debes cumplir estos requisitos mínimos:
- Una máquina Debian 10 Buster actualizada.
- El entorno de ejecución de Java.
- Un usuario con permisos de sudo o el mismo root.
- Acceso a Internet.
Si no tienes listo aún el entorno, puedes consultar nuestra guía de instalación de Java en Debian 10 Buster.
Además, necesitamos alguna herramienta para este tutorial, que obtendremos desde los repositorios de Debian 10, por lo que el primer paso será actualizar las listas de paquetes:
~$ sudo apt update
E instalamos lo que necesitamos:
~$ sudo apt install -y gnupg
Cómo configurar el repositorio de Elasticsearch para Debian 10 Buster
Instalamos la clave pública para verificar las firmas de los paquetes de este repositorio:
~$ wget -qO- https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Creamos el archivo de repositorio:
~$ sudo nano /etc/apt/sources.list.d/elasticsearch.list
El contenido será la siguiente línea:
deb http://artifacts.elastic.co/packages/7.x/apt stable main
Guardados los cambios y cerrado el archivo, actualizamos la información de los repositorios:
~$ sudo apt update
Cómo instalar Elasticsearch en Debian 10 Buster
Vamos a instalar Elasticsearch en Debian 10 Buster desde el nuevo repositorio oficial recién configurado, para lo que necesitaremos el paquete elasticsearch, que instalaremos con apt:
~$ sudo apt install -y elasticsearch
Tras la descarga e instalación de Elasticsearch se crea un nuevo servicio en Debian 10 Buster, el servicio elasticsearch.service o elasticsearch, que no queda en ejecución ni habilitado, siendo estas tareas que realizaremos manualmente.
Iniciamos el servicio manualmente:
~$ sudo systemctl start elasticsearch
El servicio puede tardar unos segundos en arrancar, así que tras liberarse la consola podremos comprobar su estado con el comando systemctl status elasticsearch
:
Con el servicio en ejecución, podemos habilitarlo para que Elasticsearch inicie automáticamente con cada arranque de Debian 10:
~$ sudo systemctl enable elasticsearch
Cómo probar Elasticsearch en Debian 10 Buster
Podemos comprobar localmente desde consola que el servicio Elasticsearch se encuentra listo con el comando wget:
~$ wget -qO- localhost:9200/ { "name" : "debian10", "cluster_name" : "elasticsearch", "cluster_uuid" : "1muWLkCES9uVgk52xnVGeQ", "version" : { "number" : "7.12.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "3186837139b9c6b6d23c3200870651f10d3343b7", "build_date" : "2021-04-20T20:56:39.040728659Z", "build_snapshot" : false, "lucene_version" : "8.8.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Podemos ver que el servicio funciona correctamente y nos da información básica sobre el mismo, incluyendo la versión actual instalada.
Cómo configurar Elasticsearch en Debian 10 Buster
Para configurar Elasticsearch en Debian 10 Buster trabajaremos sobre sus archivos de configuración, alojados en la ruta /etc/elasticsearch/. Cualquier cambio que realicemos exigirá el reinicio del servicio (no existe la opción de recargar la configuración sin reiniciar):
~$ sudo systemctl restart elasticsearch
Acceso remoto a Elasticsearch en Debian 10 Buster
Por defecto el servicio Elasticsearch sólo atiende peticiones locales en el puerto 9200, pero podemos hacer que también responda a peticiones desde red editando el archivo elasticsearch.yml:
~$ sudo nano /etc/elasticsearch/elasticsearch.yml
Buscaremos la directiva network.host:
... #network.host: 192.168.0.1 ...
La activaremos eliminando el carácter # inicial y le daremos un valor 0.0.0.0 para que escuche peticiones desde red:
... network.host: 0.0.0.0 ...
No basta con este cambio, ya que como Elasticsearch puede trabajar como servicio distribuido, con la configuración por defecto en Debian 10 tratará de descubrir otros nodos y el servicio fallará, dejando un error «the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured«:
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
En una instalación como la de este ejemplo con un sólo nodo habrá que indicar que no se intente descubrir otros nodos. Para ello buscamos la directiva discovery.seed_hosts:
... #discovery.seed_hosts: ["host1", "host2"] ...
Está desactivada, podemos modificarla o añadir una nueva con una lista formada tan sólo por la máquina local:
... #discovery.seed_hosts: ["host1", "host2"] discovery.seed_hosts: ["localhost"] ...
Algo similar podemos hacer con la directiva cluster.initial_master_nodes, aunque no es necesario:
... #cluster.initial_master_nodes: ["node-1", "node-2"] cluster.initial_master_nodes: [] ...
Guardados los cambios será necesario reiniciar el servicio.
Cómo configurar el firewall de Debian 10 para Elasticsearch
Si tienes activado el firewall UFW en Debian 10 será necesario añadir una regla para permitir conexiones entrantes al servicio Elasticsearch, concretamente al puerto 9200:
~$ sudo ufw allow 9200/tcp
Probar el acceso remoto a Elasticsearch
Una vez configurados el acceso remoto a Elasticsearch y el firewall ya podemos comprobar que el servicio atiende conexiones desde red. La forma más sencilla es accediendo desde un navegador, especificando la dirección IP, nombre DNS o dominio del servidor Debian 10 añadiendo el puerto 9200.
Por ejemplo, el sevidor Debian 10 que hemos utilizado en este tutorial es accesible en el subdominio debian10.local.lan, por lo que podemos usar la URL http://debian10.local.lan:9200/ para realizar la prueba:
Deberíamos obtener el mismo resultado que en la prueba local desde consola.
¡Ya puedes empezar a trabajar con Elasticsearch!
Conclusión
Ahora que sabes cómo instalar Elasticsearch en Debian 10 Buster ya puedes trabajar con este potentísimo sistema de búsqueda y analítica sobre texto, imprescindible en muchos entornos de Big Data.
Si tienes dudas, preguntas, sugerencias de mejora o actualización de este artículo, quieres notificar un posible error, etc. puedes dejar un comentario.
Ah, y en caso de que te haya servido este tutorial de instalación y configuración de Elasticsearch en Debian 10 Buster y quieras expresar tu gratitud, puedes invitarme a un café:
O puedes dejarme 1 $ de propina a través de PayPal:
¡Gracias!
Gracias por tu artículo, estoy empezando con Elasticsearch a ver si lo implemento en un proyecto.
Seguí tu tutorial, pero me daba error al reinciar el servicio:
~$ sudo systemctl restart elasticsearch
Job for elasticsearch.service failed because the control process exited with error code.
See «systemctl status elasticsearch.service» and «journalctl -xe» for details.
Lo solucioné poniendo el archivo de esta manera:
# ———————————- Network ———————————–
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
#network.host: 192.168.0.1
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
#
# ——————————— Discovery ———————————-
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is [«127.0.0.1», «[::1]»]
#
#discovery.seed_hosts: [«host1», «host2»]
discovery.seed_hosts: [«0.0.0.0», «[::0]»]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
#cluster.initial_master_nodes: [«node-1», «node-2»]
cluster.initial_master_nodes: []
#
# For more information, consult the discovery and cluster formation module docu$
#
# ———————————- Various ———————————–
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
¡Hola, Idafe! Hubiera sido interesante conocer el error exacto que se estaba generando. Es extraño, porque acabo de actualizar esta guía de instalación de Elasticsearch sobre una máquina Debian 10 y funciona perfectamente, pero los cambios que has realizado en la configuración también son válidos.