En esta ocasión vamos a ver cómo instalar Elasticsearch en Fedora 36, 35 y 34 paso a paso, de modo que puedas trabajar con este potente sistema de búsquedas y analíticas de datos en formato JSON sobre tu servidor o VPS Fedora.
Contenido
Antes de instalar Elasticsearch en Fedora 36/35/34
Para poder completar los pasos de esta guía de instalación de Elasticsearch en Fedora 36, 35 y 34 es necesario partir de los siguientes requisitos:
- Una instalación actualizada de Fedora 36, 35 ó 34.
- Un usuario con permisos de sudo.
- Conexión a Internet.
También será necesaria alguna herramienta que obtendremos desde los repositorios de Fedora, por lo que actualizamos la información de los mismos:
~$ sudo yum update
E instalamos los paquetes necesarios:
~$ sudo yum install -y chkconfig
Cómo configurar el repositorio de Elasticsearch para Fedora 36/35/34
Vamos a configurar el repositorio oficial de Elasticsearch para Fedora 36, 35 y 34, ya que los paquetes existentes en el repositorio de la distribución no están al día. Hay que tener en cuenta que tienes dos posibilidades de trabajar con Elasticsearch, dependiendo de si sólo quieres software Open Source (OSS) o si quieres también el software con licencia privativa.
Creamos el archivo de configuración del nuevo repositorio:
~$ sudo nano /etc/yum.repos.d/elasticsearch.repo
El contenido podría ser el siguiente, para el caso del repositorio OSS:
[elasticsearch] name=Elasticsearch 7.x para Fedora 36 baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Si prefieres obtener también el software privativo, sustituye la directiva baseurl por esta otra:
... baseurl=https://artifacts.elastic.co/packages/7.x/yum ...
En cualquier caso, guardamos el archivo y actualizamos la información de los repositorios para incluir los paquetes de Elasticsearch:
~$ sudo yum update
Cómo instalar Elasticsearch en Fedora 36/35/34
Vamos a instalar Elasticsearch en Fedora 36, 35 y 34 desde el repositorio que acabamos de descargar, para lo que necesitaremos únicamente el paquete elasticsearch con yum:
~$ sudo yum install -y elasticsearch
O el paquete elasticsearch-oss, según el repositorio que hayamos configurado:
~$ sudo yum install -y elasticsearch-oss
El paquete supera los 200 ó 300 MB, así que la instalación puede tomar algunos minutos. Una vez terminada la descarga e instalación de Elasticsearch se crea un nuevo servicio en Fedora 36, llamado elasticsearch.service o elasticsearch si prefieres el nombre corto. Este servicio no queda arrancado tras la instalación, ni habilitado para su inicio automático, pero aún no nos vamos a ocupar de eso.
Cómo configurar la cantidad de memoria RAM para Elasticsearch en Fedora 36/35/34
La configuración por defecto hará que el servicio trate de reservar 1 GB de RAM que, dependiendo del caso, puede ser mucho o poco. Para ajustar la memoria que reserva Elasticsearch editaremos su archivo de configuración jvm.options:
~$ sudo nano /etc/elasticsearch/jvm.options
Buscaremos las directivas Xms y Xmx:
... -Xms1g -Xmx1g ...
La terminación 1g de ambas directivas quiere decir que su valor es 1 GB, así que si quisiéramos que Elasticsearch trabajara con 2 GB las modificaríamos de la siguiente forma:
... -Xms2g -Xmx2g ...
Mientras que si estuviésemos haciendo pruebas en un sistema modesto, podríamos configurar 512 MB de memoria RAM:
... -Xms512m -Xmx512m ...
Si haces algún cambio, guarda el archivo.
Cómo iniciar Elasticsearch en Fedora 36/35/34
Es el momento de iniciar Elasticsearch por primera vez con el comando systemctl:
~$ sudo systemctl start elasticsearch
El servicio debería quedar en ejecución, cosa que podemos comprobar en cualquier momento con el comando systemctl status elasticsearch
:
Para que Elasticsearch inicie automáticamente con Fedora tendremos que habilitar el servicio:
~$ sudo systemctl enable elasticsearch
Error de tiemout al iniciar Elasticsearch en Fedora 36/35/34
Si la máquina Fedora 36, 35 ó 34 sobre la que hemos instalado Elasticsearch no es demasiado potente podría ocurrir un error de «timeout» o tiempo de espera agotado al intentar iniciar el servicio:
~$ sudo systemctl start elasticsearch Job for elasticsearch.service failed because a timeout was exceeded. See "systemctl status elasticsearch.service" and "journalctl -xe" for details.
Job for elasticsearch.service failed because a timeout was exceeded.
Esto podría ser debido a que el proceso de inicio de la aplicación es lento y por defecto el límite de espera es de 90 segundos, como podremos comprobar con el comando systemctl:
~$ systemctl show elasticsearch |grep -i ^timeout TimeoutStartUSec=1min 30s TimeoutStopUSec=infinity
Podemos configurar mayores tiempos de espera añadiendo un archivo de configuración para el servicio elasticsearch
~$ sudo nano /lib/systemd/system/elasticsearch.service
Dentro de la sección Service añadimos una directiva TimeoutStartSec con el valor en segundos que consideres necesario:
... [Service] ... TimeoutStartSec=180 ...
Guardamos los cambios y recargamos la configuración de los servicios:
~$ sudo systemctl daemon-reload
Es fácil comprobar que ahora el valor del tiempo de espera máximo ha cambiado:
~$ systemctl show elasticsearch |grep -i ^timeout TimeoutStartUSec=3min TimeoutStopUSec=infinity
Y probamos a lanzar de nuevo el servicio:
~$ sudo systemctl start elasticsearch
Podemos repetir este proceso tantas veces como sea necesario hasta encontrar el tiempo de espera óptimo para nuestra máquina Fedora 36, 35 ó 34.
En algunos casos, este ajuste puede ser fundamental para conseguir que Elasticsearch inicie automáticamente en el arranque de Fedora.
Cómo probar el servicio localmente
Para comprobar que el servicio funciona es posible realizar una prueba local desde consola conectando con cualquier cliente HTTP al puerto 9200:
~$ curl localhost:9200 { "name" : "fedora", "cluster_name" : "elasticsearch", "cluster_uuid" : "Lw-X9-BJR26sxTWNff5WEQ", "version" : { "number" : "7.10.2", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "747e1cc71def077253878a59143c1f785afa92b9", "build_date" : "2021-01-13T00:42:12.435326Z", "build_snapshot" : false, "lucene_version" : "8.7.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Cómo configurar Elasticsearch en Fedora 36/35/34
Aunque ya hemos visto algunos ajustes, vamos a ver cómo configurar Elasticsearch en Fedora 36, 35 y 34 trabajando sobre su archivo principal de configuración, elasticsearch.yml.
Conexión a Elasticsearch desde red
Por defecto Elasticsearch está configurado para aceptar únicamente conexiones locales desde la propia máquina Fedora 36, pero si queremos interactuar con el servicio desde red, tendremos que editar elasticsearch.yml:
~$ sudo nano /etc/elasticsearch/elasticsearch.yml
Buscamos la directiva network.host:
... #network.host: 192.168.0.1 ...
Está desactivada, así que será necesario activarla eliminando el carácter # inicial y dándole el valor de la dirección IP que corresponda al adaptador de red de la máquina Fedora 36 por el que entrarán las conexiones, o 0.0.0.0 si la dirección no es estática, hay varias redes, etc.:
... network.host: 0.0.0.0 ...
Como Elasticsearch puede trabajar en grupo con varios servidores, tendremos que especificar la lista de los mismos en la directiva discovery.seed_hosts:
... #discovery.seed_hosts: ["host1", "host2"] ...
Activamos la directiva y añadimos las direcciones de los otros servidores, o «localhost» si el servicio trabaja en solitario:
... discovery.seed_hosts: ["localhost"] ...
Guardamos los cambios y reiniciamos el servicio:
~$ sudo systemctl restart elasticsearch
Configurar el firewall de Fedora 36/35/34 para Elasticsearch
Por defecto el firewall de Fedora 36 suele estar activado, así que será necesario configurar una excepción para Elasticsearch, permitiendo las conexiones entrantes al puerto 9200/TCP:
~$ sudo firewall-cmd --permanent --add-port=9200/tcp
Recargamos la configuración del firewall para aplicar los cambios:
~$ sudo firewall-cmd --reload
Cómo probar la conexión a Elasticsearch en Fedora 36/35/34 desde red
Para comprobar que la conexión al servicio Elasticsearch desde red es posible realizaremos algo parecido a la prueba local anterior, conectando desde un navegador en el que indicaremos la dirección IP, nombre DNS, dominio, etc. del servidor Fedora 36 especificando el puerto 9200:
Conclusión
Ahora que sabes cómo instalar ElasticSearch en Fedora 36, 35 y 34 ya puedes trabajar con este potente motor de búsquedas y analíticas en tu sistema, ya sea para tus propios desarrollos o para aplicaciones en producción.
Si tienes alguna duda o pregunta, quieres realizar alguna sugerencia, notificar algún error, etc. puedes dejar un comentario. Los comentarios están moderados para evitar el SPAM, pero se revisan prácticamente a diario.
¡Apoya comoinstalar.me!
¿Ya puedes trabajar con este motor de búsqueda sobre tu propia máquina gracias a nuestra guía? En tal caso, si quieres agradecérnoslo colaborando con el mantenimiento de este sitio y la creación de nuevos artículos y tutoriales, puedes hacerlo dejando tan solo 1 $ de propina en PayPal:
O, si te sientes especialmente agradecido, invitándonos a un café:
¡Gracias!