Instalar y asegurar Apache Solr en AlmaLinux 9

Introducción
Apache Solr (o simplemente Solr) es una plataforma de búsqueda empresarial basada en la biblioteca Apache Lucene. Solr es software libre y de código abierto escrito en Java. Ofrece alta disponibilidad mediante replicación, tolerancia a fallos y recuperación automática, y es ampliamente usado para búsquedas rápidas y escalables en aplicaciones empresariales.
En este tutorial práctico aprenderás a instalar Apache Solr en un servidor AlmaLinux 9, ajustar la configuración de memoria (MaxHeap), aplicar límites de sistema (ulimit), abrir puertos en firewalld y habilitar autenticación básica para proteger el panel de administración.
Definición breve: Solr es un motor de búsqueda distribuido construido sobre Lucene que indexa y consulta grandes volúmenes de datos de forma eficiente.
Qué cubre esta guía
- Instalación de OpenJDK 11
- Instalación de Apache Solr 9.2.1 desde el paquete binario
- Configuración de SOLR_HEAP y binding a una IP interna
- Ajuste de parámetros del kernel y ulimits
- Apertura de puerto en firewalld (8983) y verificación del panel
- Habilitar autenticación básica (basic auth)
- Crear el primer core (índice)
- Buenas prácticas, comprobaciones y resolución de problemas comunes
Requisitos previos
- Un servidor AlmaLinux 9 con al menos 2–4 GB de memoria; este ejemplo usa un servidor con hostname “almalinux9” y 8 GB de RAM.
- Un usuario no root con privilegios sudo.
- Acceso a la red para descargar paquetes desde los mirrors de Apache.
1. Instalar OpenJDK 11
Apache Solr 9 requiere Java (JRE/JDK) versión 11 o superior. En AlmaLinux instala OpenJDK 11 desde appstream:
sudo dnf install java-11-openjdk java-11-openjdk-devel
Luego verifica la instalación:
java --version
Salida esperada: información de la versión de OpenJDK 11. Si el comando falla, revisa que el repositorio AppStream esté habilitado y que el paquete se haya descargado correctamente.
Notas:
- Si necesitas multiples JDKs, usa alternatives para seleccionar la versión por defecto.
- Para entornos de producción es recomendable instalar el JDK (no solo el JRE) si piensas compilar o ejecutar herramientas auxiliares.
2. Descargar e instalar Apache Solr (paquete binario)
Instala utilidades necesarias y descarga el paquete binario de Solr. Este ejemplo usa la versión 9.2.1.
sudo dnf install curl lsof chkconfig -y
curl -qO https://downloads.apache.org/solr/solr/9.2.1/solr-9.2.1.tgz
Extrae el script de instalación desde el tarball:
tar xzf solr-9.2.1.tgz solr-9.2.1/bin/install_solr_service.sh --strip-components=2
Debes tener el script install_solr_service.sh en el directorio actual. A continuación ejecuta el instalador:
sudo bash ./install_solr_service.sh solr-9.2.1.tgz
Salida de ejemplo: el instalador crea el usuario “solr”, configura el servicio systemd y establece el directorio SOLR_HOME en /var/solr/data.
El servicio inicial puede arrancar automáticamente en el puerto 8983. Si el instalador indica un PID en ejecución, anota el número de proceso para acciones posteriores.
Para detener un proceso Solr que se haya iniciado manualmente o por el instalador (ejemplo PID 12084):
kill -9 12084
Inicia el servicio gestionado por systemd:
sudo service solr start
Verifica el estado del servicio:
sudo service solr status
Si hay problemas para iniciar, revisa los logs en /var/solr/logs o journalctl -u solr.
3. Optimizar la instalación de Apache Solr
Objetivo: ajustar heap, binding de red y parámetros del kernel para entornos con grandes índices.
Ejemplo de objetivos en este tutorial:
- SOLR_HEAP = 4g
- IP interna = 192.168.10.15
Primero incrementa shmmax y nr_hugepages en el kernel (ajusta valores según la memoria física):
sudo sh -c 'echo 4294967295 > /proc/sys/kernel/shmmax'
sudo sh -c 'echo 1536 > /proc/sys/vm/nr_hugepages'
Nota: escribimos usando sh -c con sudo para evitar problemas de redirección al archivo del kernel.
Edita el archivo de configuración de Solr:
sudo nano /etc/default/solr.in.sh
Modifica o descomenta las siguientes líneas (ajusta la memoria total según tu servidor):
SOLR_HEAP="4g"
SOLR_HOST="192.168.10.15"
SOLR_JETTY_HOST="192.168.10.15"
Guarda y reinicia el servicio para aplicar cambios:
sudo service solr restart
Verifica que el servicio muestra el heap configurado en el estado:
sudo service solr status
En el log o salida del servicio deberías ver la JVM iniciada con -Xmx4g (max heap).
Consejos:
- No asignes más del 75–80% de la memoria total del sistema al heap si el servidor ejecuta otros servicios.
- Para máquinas con contenedores o limitaciones cgroup, verifica las opciones de la JVM para detectar memoria disponible.
4. Configurar ulimits y firewalld
Solr requiere un número alto de descriptores de archivo y procesos para cargas de trabajo intensas. Recomendación mínima: 65.000 para nofile y nproc.
Edita las reglas de límites del sistema:
sudo nano /etc/security/limits.conf
Añade al final del archivo:
solr soft nofile 65000
solr hard nofile 65000
solr soft nproc 65000
solr hard nproc 65000
Guarda y cierra. Para comprobar los límites desde la cuenta del usuario solr:
sudo -H -u solr bash -c "ulimit -aH"
Reinicia Solr para que los cambios surtan efecto:
sudo service solr restart
Si los mensajes de advertencia sobre ulimit desaparecen en los logs, la configuración fue aplicada correctamente.
Configura firewalld para permitir el puerto 8983 (HTTP del panel de Solr):
sudo firewall-cmd --add-port=8983/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Verifica que 8983/tcp aparece en la lista de reglas. Si tu entorno usa otra solución de firewall (iptables, nftables o un firewall externo), aplica la regla correspondiente.
Abre tu navegador y visita: http://192.168.10.15:8983/ para acceder al panel de administración. Debes ver la interfaz web de Solr.
Importante: Exponer el panel de administración sin HTTPS es un riesgo. Recomendamos encarecidamente usar TLS (HTTPS) y VPN o reglas de firewall restrictivas en producción.
5. Asegurar Apache Solr con autenticación básica
Por defecto Solr no viene con autenticación. Este ejemplo habilita Basic Authentication usando el plugin built-in.
Crea o edita el archivo security.json en SOLR_HOME (/var/solr/data):
sudo nano /var/solr/data/security.json
Ejemplo de configuración que crea el usuario “solr” con la contraseña “SolrRocks” (la contraseña en este ejemplo está ya codificada como hash en el ejemplo original). Inserta el siguiente JSON exactamente como se indica:
{
"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 reinicia Solr:
sudo service solr restart
Accede de nuevo al panel en http://192.168.10.15:8983/. Deberías ver la pantalla de login. Usa las credenciales configuradas (usuario: solr / contraseña: SolrRocks en este ejemplo) para iniciar sesión.
Tras autenticarse, en el menú Security verás que el plugin basic_auth está habilitado.
Notas de seguridad:
- Basic auth envía credenciales en base64 con HTTP. Usa HTTPS para cifrar el transporte.
- Para entornos reales, considera integrar Kerberos, TLS con certificados, o servicios de identidad (OAuth/OIDC) según el tamaño y políticas de la organización.
- No almacenes contraseñas en texto claro ni en repositorios.
6. Crear el primer índice (core)
Actualiza el archivo /etc/default/solr.in.sh para que los comandos de cliente incluyan las credenciales cuando sea necesario. Edita:
sudo nano /etc/default/solr.in.sh
Asegúrate de descomentar y ajustar las siguientes variables:
SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"
Guarda y reinicia correctamente el servicio (nota: orden correcto):
sudo service solr restart
Crea un core llamado test1_core con el ejemplo Test1Core:
su - solr -c "/opt/solr/bin/solr create -c test1_core -n Test1Core"
Salida esperada: “Created new core test1_core”.
En el panel web, en Core Admin, deberías ver test1_core listada.
Buenas prácticas para producción
- Siempre proteger el panel con TLS y restringir acceso por IP o VPN.
- Respaldos regulares del SOLR_HOME y de los índices (snapshots). Verifica el tiempo de restauración.
- Monitoreo: expone métricas JMX o puntos de métricas (Prometheus) para vigilar heap, GC, latencias y uso de disco.
- Dimensiona el heap según carga y número de shards/replicas.
- Prueba la recuperación automática reiniciando nodos y observando la re-replicación.
- Automatiza la rotación de logs y la política de retención.
Lista de verificación (preparación para pasar a producción)
- Java 11 instalado y verificado
- Solr instalado como servicio systemd
- SOLR_HEAP configurado acorde a la memoria del servidor
- shmmax y nr_hugepages ajustados
- ulimits para solr establecidos (nofile,nproc >= 65000)
- Puerto 8983 protegido por firewall y/o disponible según políticas
- Autenticación habilitada y confirmada en panel
- HTTPS/TLS configurado para el panel y para la comunicación entre colecciones si es necesario
- Backups automáticos y monitorización configurados
Modelo mental: cómo pensar Solr en infraestructuras distribuidas
- Core = unidad lógica de indexación (similar a índice en otros motores).
- Shard = partición de un core para distribuir datos.
- Replica = copia redundante de un shard para alta disponibilidad.
- Zookeeper (o coord services embebidos en versiones antiguas) coordina la configuración del cluster.
Estrategia recomendada:
- Empieza con 3 nodos para tolerancia a fallos.
- Divide índices grandes en shards y añade réplicas según RPO/RTO.
Cuándo esta guía no es suficiente (contraejemplos)
- Si necesitas autenticación integrada con Active Directory/Kerberos: aquí solo se muestra basic auth; deberás configurar Kerberos o SSSD.
- Para clusters a gran escala con requisitos de latencia extrema y muchas réplicas, esta guía inicial debe ampliarse con arquitectura de shards, balanceo y autoscaling.
- Si tu entorno exige cumplimiento estricto (PCI/DSS, HIPAA), debes añadir controles adicionales y auditoría sobre el acceso a los indices y metadatos.
Solución de problemas comunes
Solr no arranca después de cambiar heap:
- Revisa /var/solr/logs/ y journalctl -u solr.
- Asegúrate de que noXmx excede memoria física disponible.
Advertencia de ulimit en logs:
- Verifica /etc/security/limits.conf y que el usuario iniciado es solr.
- Comprueba que el servicio se inicia en una sesión que lee limits.conf (algunos gestores no lo aplican si arrancan muy temprano).
Error de puerto ocupado 8983:
- Usa lsof -i:8983 para identificar el proceso y liberar el puerto o reconfigurar SOLR_PORT.
Problemas con autenticación:
- Revisa /var/solr/data/security.json y permisos del archivo.
- Si cambias credenciales, actualiza SOLR_AUTHENTICATION_OPTS para las utilidades CLI.
Runbook de incidente breve (arranque fallido)
- Verifica el estado del servicio: sudo service solr status
- Revisa logs: sudo journalctl -u solr –no-pager | tail -n 200
- Revisa /var/solr/logs/ y los GC logs para problemas de memoria.
- Si el problema es OOM de la JVM, reduce temporalmente SOLR_HEAP y reinicia para permitir que el servicio entre en línea.
- Escala verticalmente o redistribuye índices si se detecta que la carga es superior al diseño.
Mini metodología para actualizaciones (upgrade) de Solr
- Respaldar SOLR_HOME y los índices (snapshots).
- Verificar compatibilidad de versión de Java con la nueva versión de Solr.
- Probar la actualización en un entorno staging con un snapshot realista.
- Actualizar nodos uno a uno para mantener disponibilidad: detener nodo, actualizar, iniciar, validar; repetir.
- Validar integridad de replicas y re-balanceo tras completar la actualización.
Cuadro de datos clave
- Puerto por defecto: 8983
- Variable de entorno de heap: SOLR_HEAP (ej. “4g”)
- Límite recomendado de nofile/nproc: >= 65.000
- Usuario de servicio: solr
- Directorio SOLR_HOME por defecto: /var/solr/data
Glosario de 1 línea
- SOLR_CORE: Unidad lógica que contiene índices y configuración.
- SOLR_HEAP: Tamaño máximo de heap que la JVM asigna a Solr.
- ulimit: Límite del sistema para procesos y descriptores de archivo.
Resumen
Has aprendido a instalar y configurar Apache Solr 9 en AlmaLinux 9, incluyendo la instalación de Java, la configuración de SOLR_HEAP, ajustes del kernel y ulimits, apertura de puertos en firewalld, habilitación de autenticación básica y creación del primer core. Además se proporcionaron buenas prácticas, una lista de verificación para producción y pasos de resolución de problemas.
Importante: en entornos productivos, añade TLS, auditoría y controles de acceso más robustos además de las medidas descritas aquí.
Si quieres, puedo generar comandos para automatizar estos pasos en un script Ansible o systemd unit file para despliegues repetibles.
Materiales similares

Memory integrity desactivada en Windows: solución

ONLYOFFICE en Manjaro: instalar v6.1

Instalador USB de Windows 11 con CMD

Descargar vídeos de Internet: métodos y herramientas

Maximiza tu creatividad con Pixlr
