Cómo instalar Apache Solr en AlmaLinux 9
Apache Solr o Solr es una plataforma de búsqueda de nivel empresarial basada en la biblioteca Apache Lucene. SOlr son las siglas de Searching On Lucene with Replication (Búsqueda en Lucene con Replicación) y es una plataforma de búsqueda gratuita y de código abierto escrita en Java. Solr es una de las plataformas de búsqueda más populares del sector y ofrece alta disponibilidad mediante replicación y conmutación por error y recuperación automáticas.
Solr es una plataforma de búsqueda altamente escalable y fiable para crear aplicaciones empresariales y ofrece un alto rendimiento. Admite la indexación distribuida y ofrece tolerancia a fallos. Algunas grandes empresas de Internet como Adobe, Netflix, Instagram, Magento y Bloomberg utilizan Apache Solr como plataforma de búsqueda para sus productos.
En este tutorial aprenderás a instalar Apache Solr en un servidor AlmaLinux 9. También configurarás MaxHeapMemory para Solr, establecerás límites y configurarás la autenticación básica para Solr.
Requisitos previos
Para completar esta guía, asegúrate de que tienes lo siguiente:
- Un servidor AlmaLinux 9 con al menos 2/4 GB de memoria. Este ejemplo utiliza un AlmaLinux con nombre de host almalinux9 y memoria de 8 GB.
- Un usuario no root con privilegios de administrador sudo/root.
Instalación de Java OpenJDK 11
En el momento de escribir esto, la última versión de Apache Solr es la v9.x y requiere Java JRE (Java Runtime Environment) al menos v11 o superior. En este primer paso, instalarás el Java OpenJDK 11 a través del repositorio appstream de AlmaLinux.
Introduce el siguiente comando dnf para instalar Java OpenJDK 11 en tu servidor AlmaLinux. Cuando se te solicite, introduce y para confirmar y pulsa ENTER.
sudo dnf install java-11-openjdk java-11-openjdk-devel
Una vez instalado Java OpenJDK, ejecuta el siguiente comando para verificar la versión de Java y asegurarte de que la instalación se ha realizado correctamente.
java --version
La siguiente salida confirma que Java OpenJDK 11 está instalado.
Instalación de Apache Solr
Tras instalar Java OpenJDK 11, iniciarás la instalación de Apache Solr. Existen varios paquetes binarios de Apache Solr para varios sistemas operativos, como Linux, macOS y Windows.
En esta sección, instalarás Apache Solr mediante el paquete binario oficial en tu servidor AlmaLinux.
Antes de descargar Apache Solr, instala los siguientes paquetes en tu servidor AlmaLinux utilizando el siguiente comando.
sudo dnf install curl lsof chkconfig -y
A continuación, descarga el paquete binario de Apache Solr 9.2.1 utilizando el siguiente comando curl.
curl -qO https://downloads.apache.org/solr/solr/9.2.1/solr-9.2.1.tgz
Ejecuta el siguiente comando para extraer el script instalador del paquete binario de Apache Solr‘solr-9.2.1.tgz‘.
tar xzf solr-9.2.1.tgz solr-9.2.1/bin/install_solr_service.sh --strip-components=2
Deberías ver el script instalador de Apache Solr ‘install_solr_service.sh’ en tu directorio actual.
Imagen
A continuación, instala Apache Solr ejecutando el script de instalación » install_solr_service.sh » de la siguiente manera:
sudo bash ./install_solr_service.sh solr-9.2.1.tgz
Cuando la instalación se realice correctamente, la salida que recibirás debería ser similar a ésta
Apache Solr se está ejecutando en el puerto por defecto 8983 con el directorio SOLR_HOME /var/solr/data. Y en este momento, se está ejecutando en el PID (ID de proceso) 12084.
Ahora, ejecuta el siguiente comando para detener el proceso actual de Apache Solr que se está ejecutando en el PID 12084.
kill -9 12084
A continuación, puedes iniciar el servicio Apache Solr utilizando el siguiente comando.
sudo service solr start
Por último, verifica el servicio Apache Solr utilizando el siguiente comando.
sudo service solr status
Si Apache Solr se ejecuta, aparecerá una salida similar en tu terminal.
Optimización de la instalación de Apache Solr
En esta sección, configurarás y optimizarás cómo debe ejecutarse Apache Solr. En este ejemplo, Apache Solr se ejecutará con una memoria heap máxima de 4 GB y una dirección IP interna de«192.168.10.15«.
En primer lugar, aumenta los valores shmmax y nr_hugepages ejecutando el siguiente comando.
sudo echo 4294967295 > /proc/sys/kernel/shmmax sudo echo 1536 > /proc/sys/vm/nr_hugepages
Abre el archivo ‘/etc/default/solr.in.sh’ utilizando el comando editor nano.
sudo nano /etc/default/solr.in.sh
Descomenta el parámetro SOLAR_HEAP y cambia el valor por la memoria heap máxima que quieras utilizar. Asegúrate de ajustar el valor con la memoria total de tu servidor.
SOLR_HEAP="4g"
Descomenta los parámetros SOLR_JETTY_HOST y SOLR_HOST y cambia el valor con tu dirección IP interna. En este ejemplo, el Apache Solr se ejecutará en ‘192.168.10.15’.
SOLR_HOST="192.168.10.15" SOLR_JETTY_HOST="192.168.10.15"
Guarda los cambios y cierra el editor cuando hayas terminado.
A continuación, ejecuta el siguiente comando para reiniciar el servicio Apache Solr y aplicar los cambios.
sudo service solr restart
Por último, ejecuta el siguiente comando para verificar el estado de Apache Solr. Si la configuración de Apache Solr se ha realizado correctamente, deberías ver que se ha modificado la memoria heap máxima. En este ejemplo, ha cambiado a 4 GB.
sudo service solr status
Configurar límites y Firewalld
Otra configuración importante del sistema para ejecutar Apache Solr es configurar los procesos máximos y los archivos abiertos máximos, que requieren al menos 65.000. Para conseguirlo, tienes que modificar el archivo‘/etc/security/limits.conf‘. Y después, también necesitas configurar firewalld y abrir el puerto 8983 para Apache Solr.
Abre el archivo ‘/etc/security/limits. conf’ utilizando el comando editor nano que aparece a continuación.
sudo nano /etc/security/limits.conf
Añade la siguiente configuración al final de la línea.
solr soft nofile 65000 solr hard nofile 65000 solr soft nproc 65000 solr hard nproc 65000
Guarda el archivo y cierra el editor.
Ahora, ejecuta el siguiente comando para comprobar el máximo de procesos y el máximo de archivos abiertos en tu sistema. Si es correcto, deberías ver un valor de 65.000 en ambas configuraciones.
sudo -H -u solr bash -c "ulimit -aH"
Ahora ejecuta el siguiente comando para comprobar que la configuración de ulimit es correcta.
sudo service solr restart
Los mensajes de advertencia de ulimit desaparecen, lo que confirma que la configuración se ha realizado correctamente.
A continuación, abre el puerto 8983 en el firewalld utilizando el siguiente comando.
sudo firewall-cmd --add-port=8983/tcp --permanent
A continuación, recarga firewalld para aplicar los cambios y verificar la lista de reglas de firewalld.
sudo firewall-cmd --reload sudo firewall-cmd --list-all
Si la configuración de firewalld se ha realizado correctamente, deberías ver el puerto 8983 en la lista de reglas de firewalld.
Por último, inicia tu navegador web y navega hasta la dirección IP de tu servidor seguida del puerto 8983 (es decir: http://192.168.10.15:8983/). Deberías obtener el panel de control de Apache Solr como el siguiente:
Proteger Apache Solr con autenticación básica
Por defecto, Apache Solr se instala sin autenticación. Para protegerlo, puedes utilizar varios métodos, como la autenticación básica, la autenticación Kerberos, la autenticación JWT y la autenticación basada en reglas. En este ejemplo, asegurarás Apache Solr mediante autenticación básica.
Crea un nuevo archivo security.json en el directorio de datos de Apache Solr /var/solr/data/ utilizando el editor nano que aparece a continuación.
sudo nano /var/solr/data/security.json
Introduce la siguiente configuración para crear un nuevo usuario solr con contraseña SolrRocks.
{ "authentication":{ "blockUnknown": true, "class":"solr.BasicAuthPlugin", "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}, "realm":"My Solr users", "forwardCredentials": false }, "authorization":{ "class":"solr.RuleBasedAuthorizationPlugin", "permissions":[{"name":"all", "role":"admin"}], "user-role":{"solr":"admin"} } }
Guarda y sal del editor cuando hayas terminado.
A continuación, ejecuta el siguiente comando para reiniciar Apache Solr y aplicar los cambios.
sudo service solr restart
En este punto, Apache Solr ya está funcionando con la autenticación básica activada.
Ahora vuelve al navegador web y actualiza el panel de administración de Apache Solr. O simplemente visita es decir: http://192.168.10.15:8983/. Si lo consigues, deberías obtener la página de inicio de sesión de Apache Solr como ésta:
Introduce el usuario de Apache Solr solr y la contraseña SolrRocks, y haz clic en Iniciar sesión. Si la autenticación se realiza correctamente, aparecerá el panel de control de Apache Solr.
Además, haz clic en el menú Seguridad y verás que Apache Solr se está ejecutando con el plugin basic_auth activado.
Crear el primer índice
Con todo configurado, estás listo para crear un primer índice Solr.
En primer lugar, abre el archivo /etc/default/solr.in.sh utilizando el siguiente comando del editor nano.
sudo nano /etc/default/solr.in.sh
Descomenta el parámetro SOLR_AUTH_TYPE y SOLR_AUTHENTICATION_OPTS.
SOLR_AUTH_TYPE="basic" SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"
Guarda el archivo y sal de él cuando hayas terminado.
Ahora ejecuta el siguiente comando para reiniciar Apache Solr y aplicar los cambios.
sudo service restart solr
A continuación, crea un nuevo índice Solr llamado test_core utilizando el siguiente comando.
su - solr -c "/opt/solr/bin/solr create -c test1_core -n Test1Core"
Una vez creado, deberías obtener una salida«Creado nuevo núcleo test1_core«.
Vuelve al panel de administración web de Apache, haz clic en el menú Core Admin y deberías tener disponible el núcleo test1_core.
Conclusión
¡Enhorabuena! Ya has instalado correctamente Apache Solr en el servidor AlmaLinux 9. También has configurado ulimit para optimizar Apache Solr y firewalld para asegurar Apache Solr. Por último, también has habilitado la autenticación básica en Apache Solr, has accedido al panel de administración web de Apache Solr y has creado el primer Índice Solr.