Guide des technologies

Installer Apache Solr sur AlmaLinux 9

8 min read Administration Mis à jour 01 Oct 2025
Installer Apache Solr sur AlmaLinux 9
Installer Apache Solr sur AlmaLinux 9

  • Ce guide explique pas à pas comment installer et sécuriser Apache Solr 9.2.1 sur AlmaLinux 9, configurer la mémoire JVM, régler les ulimits, ouvrir le pare-feu et activer l’authentification de base.
  • Inclut une checklist d’exploitation, des commandes exactes, une méthodologie de mise en production et un runbook de dépannage.

Important: adaptez les adresses IP, les noms d’utilisateur et la quantité de mémoire aux capacités et à la politique de sécurité de votre infrastructure.

Introduction

Apache Solr (ou simplement Solr) est une plateforme de recherche d’entreprise basée sur la bibliothèque Apache Lucene. Solr offre indexation distribuée, haute disponibilité via réplication, tolérance aux pannes et performances élevées. Ce guide traduit et complète un tutoriel d’installation pour AlmaLinux 9 en couvrant les étapes d’installation, d’optimisation, de sécurisation basique et d’exploitation.

Fait notable:

  • Version utilisée: 9.2.1 (binaire téléchargé).
  • Port par défaut: 8983.
  • Exemple de mémoire JVM: 4 GB.
  • Répertoire SOLR_HOME par défaut: /var/solr/data.

Définition rapide: JVM heap (tas JVM) — mémoire allouée à la machine virtuelle Java pour exécuter Solr; insuffisant provoque des erreurs OutOfMemoryError.

Objectifs de ce guide

  • Installer Java OpenJDK 11.
  • Installer Solr 9.2.1 via le binaire officiel.
  • Configurer SOLR_HEAP et les variables d’hôte.
  • Ajuster les ulimits et firewalld.
  • Activer l’authentification basique (BasicAuth).
  • Créer un core/index initial et fournir des procédures d’exploitation et dépannage.

Prérequis

  • Un serveur AlmaLinux 9 avec au moins 2–4 Go de RAM; cet exemple utilise un serveur nommé almalinux9 avec 8 Go de RAM.
  • Un compte non-root avec privilèges sudo/root.

Installation de Java OpenJDK 11

Solr 9.x nécessite Java 11 ou supérieur. Installez OpenJDK 11 depuis les dépôts AppStream d’AlmaLinux :

sudo dnf install java-11-openjdk java-11-openjdk-devel

Installation d'OpenJDK 11

Vérifiez l’installation :

java --version

La commande doit retourner la version de Java 11 installée.

Installation d’Apache Solr (binaire officiel)

Installez quelques utilitaires requis puis téléchargez le binaire Solr 9.2.1 :

sudo dnf install curl lsof chkconfig -y

Téléchargez l’archive officielle :

curl -qO https://downloads.apache.org/solr/solr/9.2.1/solr-9.2.1.tgz

Extrait uniquement le script d’installation depuis l’archive :

tar xzf solr-9.2.1.tgz solr-9.2.1/bin/install_solr_service.sh --strip-components=2

Vous devriez voir le script install_solr_service.sh dans le répertoire courant.

Image illustrative du script d’installation :

Picture

Lancez le script d’installation :

sudo bash ./install_solr_service.sh solr-9.2.1.tgz

Quand l’installation réussit, la sortie indique le port (8983), le répertoire SOLR_HOME (/var/solr/data) et le PID du processus Solr.

Installation de Solr

Arrêtez le processus Solr si nécessaire (exemple : PID 12084) :

kill -9 12084

Démarrez le service Solr :

sudo service solr start

Démarrage du service Solr

Vérifiez le statut du service :

sudo service solr status

Vérifier Solr

Remarque: si vous utilisez systemd, les commandes systemctl (systemctl status solr) sont équivalentes.

Optimisation de l’installation Solr

Objectif: configurer la mémoire JVM et les variables réseau pour un fonctionnement fiable en production.

Important: n’affectez pas plus de mémoire JVM que la mémoire physique disponible sur le serveur; conservez suffisamment pour le système et d’autres processus.

  1. Ajuster le partage mémoire (shmmax) et les hugepages :
sudo sh -c 'echo 4294967295 > /proc/sys/kernel/shmmax'
sudo sh -c 'echo 1536 > /proc/sys/vm/nr_hugepages'

Note: echo seul sous sudo peut ne pas écrire dans /proc sans sh -c; la forme ci-dessus évite ce piège.

Définitions brèves:

  • shmmax: taille maximale d’un segment de mémoire partagée.
  • nr_hugepages: nombre de pages mémoire « hugepages » réservées; améliore la gestion mémoire pour de lourdes JVM.
  1. Modifier la configuration Solr :
sudo nano /etc/default/solr.in.sh

Editez ou décommentez :

SOLR_HEAP="4g"
SOLR_HOST="192.168.10.15"
SOLR_JETTY_HOST="192.168.10.15"

Changez la valeur de SOLR_HEAP selon la mémoire disponible (ex. 4g pour 4 Go). SOLR_HOST et SOLR_JETTY_HOST doivent correspondre à l’IP interne utilisable pour les clients et nœuds du cluster.

Redémarrez Solr pour appliquer :

sudo service solr restart

Configuration de Solr

Vérifiez le statut et la mémoire :

sudo service solr status

Vérifier heap Solr

Configuration des ulimits et de firewalld

Solr nécessite généralement un grand nombre de descripteurs de fichiers et de processus (ex. 65 000). Modifiez /etc/security/limits.conf pour l’utilisateur solr :

sudo nano /etc/security/limits.conf

Ajoutez à la fin :

solr   soft   nofile   65000
solr   hard   nofile   65000
solr   soft   nproc    65000
solr   hard   nproc    65000

Sauvegardez et fermez.

Vérifiez les limites en tant qu’utilisateur solr :

sudo -H -u solr bash -c "ulimit -aH"

Vérifier ulimit

Redémarrez Solr pour que les changements prennent effet :

sudo service solr restart

Si les messages d’avertissement ulimit disparaissent, la configuration est appliquée.

Ouvrez le port Solr (8983) dans firewalld :

sudo firewall-cmd --add-port=8983/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Vérifiez que le port 8983 est présent dans la liste.

Configuration firewalld

Ensuite, ouvrez votre navigateur sur http://192.168.10.15:8983/ (ou l’IP configurée) pour accéder au tableau de bord Solr.

Tableau de bord Apache Solr

Sécuriser Solr avec l’authentification basique

Par défaut, Solr est livré sans authentification. L’exemple suivant active Basic Authentication et une règle d’autorisation simple.

Créez le fichier security.json dans SOLR_HOME (/var/solr/data) :

sudo nano /var/solr/data/security.json

Insérez la configuration suivante pour créer l’utilisateur solr avec le mot de passe 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"}  
  }  
}

Sauvegardez, fermez et redémarrez Solr :

sudo service solr restart

Actualisez la page d’administration Solr; vous devrez maintenant vous authentifier.

Page de connexion Apache Solr

Connectez-vous avec solr / SolrRocks. Sous « Security » vous verrez le plugin basic_auth activé.

Solr Authentication

Sécurité importante: le mot de passe en clair dans les exemples doit être remplacé par un mot de passe fort et géré par un coffre-fort de secrets en production. Envisagez également HTTPS, restrictions IP, et l’usage de certificats pour chiffrer les communications.

Créer le premier index (core)

Activez l’authentification dans /etc/default/solr.in.sh pour que les outils en ligne de commande utilisent les bonnes options :

sudo nano /etc/default/solr.in.sh

Décommentez et modifiez :

SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"

Sauvegardez et redémarrez Solr :

sudo service solr restart

Créez un core nommé test1_core :

su - solr -c "/opt/solr/bin/solr create -c test1_core -n Test1Core"

La commande renverra “Created new core test1_core” si tout se passe bien.

Vérifiez dans le tableau de bord sous Core Admin que test1_core est présent.

Vérifier le core test1_core

Méthodologie de mise en production (mini SOP)

  1. Préparer l’environnement de test: reproduire la topologie réseau et dimensionner la mémoire.
  2. Installer Solr et valider les fonctions basiques (indexation, recherche, réplication si applicable).
  3. Effectuer un test de charge léger (ingestion de documents, requêtes concurrentes).
  4. Surveiller les métriques : utilisation CPU, heap JVM, GC pauses, descripteurs de fichiers.
  5. Activer la sécurité (auth, TLS) et valider l’accès via clients applicatifs.
  6. Déployer en production pendant une fenêtre de maintenance avec rollback planifié.

Critères d’acceptation

  • Le service Solr répond sur le port attendu (8983).
  • Le core principal est listé et accepte des requêtes de recherche simples.
  • Les métriques JVM montrent une heap stable sans OOM pendant 24h de tests.
  • Les règles de firewall et ulimits sont appliquées et validées.

Runbook de dépannage (incident)

Étapes rapides si Solr est inaccessible :

  1. Vérifier le service: sudo service solr status ou sudo journalctl -u solr -n 200.
  2. Vérifier les logs Solr: /var/solr/logs/; chercher ERROR ou Stack traces.
  3. Vérifier l’utilisation de la mémoire: top, free -h, ou jmap/jstat si besoin.
  4. Vérifier port: sudo ss -ltnp | grep 8983; s’il est occupé, identifier le process.
  5. Tester l’authentification: curl -u solr:SolrRocks http://127.0.0.1:8983/solr/admin/ping.
  6. Si erreur de permission, valider /etc/security/limits.conf et ulimit pour l’utilisateur solr.
  7. En cas de corruption d’un core, restaurer depuis le dernier snapshot (si disponible) ou recréer le core et réindexer.

Conseils: ne tuez pas immédiatement le processus Solr sans valider les raisons; préférez un redémarrage contrôlé.

Checklist par rôle

Administrateur système

  • Vérifier Java 11 installé et à jour.
  • Appliquer ulimits et allocated hugepages.
  • Configurer firewalld/selinux selon la politique.
  • Surveiller logs et métriques.

Ingénieur plateforme / DevOps

  • Automatiser l’installation via scripts ou templates (ansible, terraform).
  • Intégrer la configuration Solr dans la gestion des secrets (auth).
  • Tester la montée en charge et la réplication.

Développeur

  • Valider les schémas de champs et analyzers avant l’indexation massive.
  • Utiliser les paramètres de requête et pagination pour limiter la charge.
  • Implémenter des retries/backoff côté client.

Quand cette approche échoue (contre-exemples)

  • Besoin de recherche full managed sans gestion d’infra: préférez un service cloud managé (Solutions as a Service).
  • Contraintes fortes de multi-tenant isolé où des règles d’authentification fines sont nécessaires: envisagez une couche de proxy/ACL ou Kerberos/JWT.
  • Très faible latence sur des requêtes critiques: optimisez caches, shard local, ou utilisez un moteur spécialisé.

Alternatives et extensions

  • Alternatives open-source: Elasticsearch (API différente), OpenSearch.
  • Authentification avancée: Kerberos, JWT, ou intégration avec LDAP/Active Directory.
  • HA et scalabilité: configurer SolrCloud avec ZooKeeper pour la gestion de cluster et la réplication automatique.

Heuristiques et bonnes pratiques

  • Heap = ~50% mémoire disponible pour JVM sur un nœud dédié (ajuster selon la charge).
  • Toujours monitorer GC (type et durée) avant d’augmenter le heap.
  • Provisionner suffisamment de descripteurs de fichiers pour éviter des erreurs ‘Too many open files’.
  • Chiffrer le trafic entre clients et Solr (HTTPS) en production.

Diagramme de décision (flux) pour choisir l’authentification

flowchart TD
  A[Besoin d'authentification?] -->|Oui| B{Nécessite SSO ou Kerberos}
  B -->|Oui| C[Kerberos ou intégration AD]
  B -->|Non| D{Peu de nœuds et gestion simple}
  D -->|Oui| E[BasicAuth + TLS]
  D -->|Non| F[JWT ou proxy d'API]
  A -->|Non| G[Accès public limité par réseau]

Exemples de tests d’acceptation

  • Ping admin: curl -u solr:SolrRocks http://127.0.0.1:8983/solr/admin/ping — doit répondre 200.
  • Création de core: la commande create retourne “Created new core test1_core”.
  • Recherche simple: indexer un document test puis effectuer une q=: et vérifier le document renvoyé.

Sécurité et conformité

  • En production, ne pas exposer l’interface Solr sans authentification et TLS.
  • Gérer les secrets avec un gestionnaire (Vault, AWS Secrets Manager, etc.).
  • Envisager le chiffrement au repos pour les disques contenant SOLR_HOME selon la politique de conformité.

Notes GDPR: si vos index contiennent des données personnelles, appliquez les principes de minimisation, chiffrement et procédures de suppression/portabilité conformes à la réglementation locale.

FAQ

Q: Quelle version de Java est requise pour Solr 9.x?

A: Java 11 ou supérieur est requis.

Q: Quel est le port par défaut de l’interface d’administration Solr?

A: Le port par défaut est 8983, configurable via la paramétrage réseau.

Q: Comment activer l’authentification pour les outils en CLI?

A: Définissez SOLR_AUTH_TYPE et SOLR_AUTHENTICATION_OPTS dans /etc/default/solr.in.sh puis redémarrez Solr.

Résumé

  • Installation: Java 11 + binaire Solr 9.2.1.
  • Optimisation: SOLR_HEAP, shmmax, hugepages et ulimits.
  • Sécurité: activez BasicAuth pour les environnements test et remplacez-la par une solution centralisée en production.
  • Exploitation: runbook, checklist par rôle et tests d’acceptation fournis.

Félicitations — vous disposez maintenant d’un serveur Apache Solr fonctionnel sur AlmaLinux 9 prêt pour des tests et une montée en production contrôlée.

Auteur
Édition

Matériaux similaires

Corriger Memory integrity is off sur Windows
Sécurité Windows

Corriger Memory integrity is off sur Windows

Installer ONLYOFFICE sur Manjaro (v6.1)
Linux

Installer ONLYOFFICE sur Manjaro (v6.1)

Installer Windows 11 depuis USB via Invite de commandes
Windows

Installer Windows 11 depuis USB via Invite de commandes

Télécharger n'importe quelle vidéo : méthodes fiables
Téléchargement

Télécharger n'importe quelle vidéo : méthodes fiables

Pixlr : maximiser votre créativité photo
Design

Pixlr : maximiser votre créativité photo

Installer Apache Solr sur AlmaLinux 9
Administration

Installer Apache Solr sur AlmaLinux 9