Guía de tecnologías

Instalar y asegurar Apache Solr en AlmaLinux 9

10 min read DevOps Actualizado 01 Oct 2025
Instalar y asegurar Apache Solr en AlmaLinux 9
Instalar y asegurar Apache Solr en AlmaLinux 9

Introducción

Logotipo de Apache Solr en una terminal con salida de comandos

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.

Salida de comando java --version mostrando OpenJDK 11

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.

Instalación de Apache Solr mediante el script install_solr_service.sh

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.

Salida de servicio solr start mostrando que el servicio ha iniciado

Verificación del estado del servicio 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).

Configuración de Solr mostrando parámetros y reinicio

Salida que muestra que el -Xmx está establecido a 4g

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.

Salida ulimit comprobando valores altos para nofile y nproc

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.

Salida de firewalld con el puerto 8983 añadido

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.

Panel de administración de Apache Solr con core y estado

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.

Pantalla de inicio de sesión de Apache Solr solicitando usuario y contraseña

Tras autenticarse, en el menú Security verás que el plugin basic_auth está habilitado.

Configuración de seguridad mostrando que basic_auth está activo

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.

Verificación del core test1_core en Core Admin

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)

  1. Verifica el estado del servicio: sudo service solr status
  2. Revisa logs: sudo journalctl -u solr –no-pager | tail -n 200
  3. Revisa /var/solr/logs/ y los GC logs para problemas de memoria.
  4. Si el problema es OOM de la JVM, reduce temporalmente SOLR_HEAP y reinicia para permitir que el servicio entre en línea.
  5. Escala verticalmente o redistribuye índices si se detecta que la carga es superior al diseño.

Mini metodología para actualizaciones (upgrade) de Solr

  1. Respaldar SOLR_HOME y los índices (snapshots).
  2. Verificar compatibilidad de versión de Java con la nueva versión de Solr.
  3. Probar la actualización en un entorno staging con un snapshot realista.
  4. Actualizar nodos uno a uno para mantener disponibilidad: detener nodo, actualizar, iniciar, validar; repetir.
  5. 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.

Autor
Edición

Materiales similares

Memory integrity desactivada en Windows: solución
Seguridad Windows

Memory integrity desactivada en Windows: solución

ONLYOFFICE en Manjaro: instalar v6.1
Guías

ONLYOFFICE en Manjaro: instalar v6.1

Instalador USB de Windows 11 con CMD
Guías Windows

Instalador USB de Windows 11 con CMD

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

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

Maximiza tu creatividad con Pixlr
Edición fotográfica

Maximiza tu creatividad con Pixlr

Instalar y asegurar Apache Solr en AlmaLinux 9
DevOps

Instalar y asegurar Apache Solr en AlmaLinux 9