En esta ocasión vamos a ver cómo instalar Elasticsearch en Fedora 30 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 30
Para poder completar los pasos de esta guía de instalación de Elasticsearch en Fedora 30 es necesario partir de los siguientes requisitos:
- Una instalación actualizada de Fedora 30.
- El entorno de ejecución de Java, o JRE.
- Un usuario con permisos de sudo.
- Conexión a Internet.
Si no dispones aún del entorno necesario sería muy recomendable consultar previamente nuestra guía de instalación de Java en Fedora 30.
Cómo configurar el repositorio de Elasticsearch para Fedora 30
Vamos a configurar el repositorio oficial de Elasticsearch para Fedora 30, ya que los paquetes existentes en el repositorio de la distribución no están al día.
Creamos el archivo de configuración del nuevo repositorio:
~$ sudo nano /etc/yum.repos.d/elasticsearch.repo
Con el contenido:
[elasticsearch] name=Elasticsearch 7.x para Fedora 30 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
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 30
Vamos a instalar Elasticsearch en Fedora 30 desde el repositorio que acabamos de descargar, para lo que necesitaremos únicamente el paquete elasticsearch:
~$ sudo yum install -y elasticsearch-oss
El paquete supera los 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 30, llamado elasticsearch.service o elasticsearch a secas. 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.
La configuración por defecto de Elasticsearch para Fedora 30 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.
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
:
Error de tiemout al iniciar Elasticsearch en Fedora 30
Si la máquina Fedora 30 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 es 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 30.
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" : "fedora30.local.lan", "cluster_name" : "elasticsearch", "cluster_uuid" : "ysftRz06TEW6hS6hj4p9tA", "version" : { "number" : "7.10.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "51e9d6f22758d0374a0f3f5c6e8f3a7997850f96", "build_date" : "2020-11-09T21:30:33.964949Z", "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 30
Aunque ya hemos visto algunos ajustes, vamos a ver cómo configurar Elasticsearch en Fedora 30 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 30, 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 30 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 30 para Elasticsearch
Por defecto el firewall de Fedora 30 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 30 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 30 especificando el puerto 9200:
Conclusión
Ahora que sabes cómo instalar ElasticSearch en Fedora 30 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.
¡Apoya comoinstalar.me!
¿Ya puedes trabajar con ElasticSearch en Fedora 30 gracias a esta 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 invitándonos a un café:
O, si lo prefieres, dejando 1 $ de propina en PayPal:
¡Gracias!