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
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.
Arrêtez le processus Solr si nécessaire (exemple : PID 12084) :
kill -9 12084
Démarrez le service Solr :
sudo service solr start
Vérifiez le statut du service :
sudo service solr status
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.
- 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.
- 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
Vérifiez le statut et la mémoire :
sudo service solr status
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"
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.
Ensuite, ouvrez votre navigateur sur http://192.168.10.15:8983/ (ou l’IP configurée) pour accéder au tableau de bord 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.
Connectez-vous avec solr / SolrRocks. Sous « Security » vous verrez le plugin basic_auth activé.
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.
Méthodologie de mise en production (mini SOP)
- Préparer l’environnement de test: reproduire la topologie réseau et dimensionner la mémoire.
- Installer Solr et valider les fonctions basiques (indexation, recherche, réplication si applicable).
- Effectuer un test de charge léger (ingestion de documents, requêtes concurrentes).
- Surveiller les métriques : utilisation CPU, heap JVM, GC pauses, descripteurs de fichiers.
- Activer la sécurité (auth, TLS) et valider l’accès via clients applicatifs.
- 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 :
- Vérifier le service: sudo service solr status ou sudo journalctl -u solr -n 200.
- Vérifier les logs Solr: /var/solr/logs/; chercher ERROR ou Stack traces.
- Vérifier l’utilisation de la mémoire: top, free -h, ou jmap/jstat si besoin.
- Vérifier port: sudo ss -ltnp | grep 8983; s’il est occupé, identifier le process.
- Tester l’authentification: curl -u solr:SolrRocks http://127.0.0.1:8983/solr/admin/ping.
- Si erreur de permission, valider /etc/security/limits.conf et ulimit pour l’utilisateur solr.
- 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.
Matériaux similaires

Corriger Memory integrity is off sur Windows

Installer ONLYOFFICE sur Manjaro (v6.1)

Installer Windows 11 depuis USB via Invite de commandes

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

Pixlr : maximiser votre créativité photo
