Solr : Installation et bonnes pratiques

Logo Solr
Cet article décrit la procédure et les bonnes pratiques pour une installation en mode standard ou en mode SolrCloud de Solr version 7 ou plus.

 

Pré-Requis

Logiciel

Solr est une application Java. Le premier des pré-requis est de disposer d’un environnement Java. Nous préconisons les versions Oracle ou OpenJDK 1.8 ou 1.9. En complément, il est nécessaire d’installer les packages suivants :

  • lsof. Cet utilitaire permet de connaitre tous les fichiers ouverts par un processus et est utilisé lors du démarrage de Solr
  • haveged. Ce package permet d’augmenter l’entropie du serveurs pour de meilleurs performances de Solr

Hardware

Les pré-requis matériels pour un bon fonctionnement de Solr dépendent d’un très grand nombre de paramètres liés à l’usage qui va en être fait. Parmis ces paramètres, les principaux sont évidement liés à la volumétries des données indexées et des requêtes effectuées. Ils sont également liés aux multiples cas d’usage de Solr comme :

  • les stratégies de mises à jour
  • le besoins ou pas de recherche en temps réel (near real-time search)
  • l’utilisation ou pas de certaines fonctionnalitées : affichage de facettes (faceting), mis en évidence des termes (terms highlighting), regroupements de résultats, …

Les caractéristiques matérielles qui influencent le plus les performances de Solr sont :

  • La mémoire disponible
  • Le nombre et la puissances des processeurs
  • Les I/O disque en écriture et en lecture (principalement si le cas d’usage implique des mise à jours fréquentes ou continues des données)
  • La performance du réseau entre les serveurs dans le cas d’une architecture SolrCloud

Zookeeper

Dans le cas d’une installation en mode SolrCloud un ensemble Zookeeper doit être disponible. Pour une installation de Zookeeper, voir l’article « Zookeeper : Installation et bonnes pratiques« .

Bonnes pratiques

Le respect des bonnes pratiques suivantes sont impératives pour un fonctionnement optimal de Solr

  • Utilisé des serveurs dédiés
  • Disposer de suffisamment de RAM pour le système, la mémoire Heap de la JVM, la mise en cache de la totalité des index et les fonctionnalité Solr utilisant la mémoire hors heap (facet JSON, docValues) par exemple. La formule de calcul de la mémoire RAM minimum est : RAM minimum = 1 Go + mémoire Heap de la JVM (Xmx) + taille des index sur le disque.
  • Désactiver le swap des serveurs (vm.swappiness=1)
  • Augmenter le nombre maximum de « memory map areas » (vm.max_map_count=262144)
  • Augmenter la limite « nofile » à 65500 (1024 par défaut) dans « /etc/security/limits.conf »
  • Augmenter la limite « nproc» à 65500 (1024 par défaut) dans « /etc/security/limits.conf »
  • Dans le cas d’une utilisation en mode SolrCloud, rendre Solr indépendant des DNS en utilisant le fichier « /etc/hosts »
  • Activer les logs de GC de la JVM et les analyser régulièrement avec le site gceasy.io
  • Installer des outils de monitoring du système (CPU, I/O disques, …) afin des contrôler le bon fonctionnement et les performances du système. Nous préconisons « sar » qui fait parti du package sysstat
  • Disposer d’un espace disque dédié et performant pour stocker la totalité des index à moyen termes

Mémoire et I/O disques

Lorsque la mémoire RAM disponible respecte les conseils de bonne pratique (1 Go + mémoire Heap de la JVM + taille des index sur le disque + …)

  • les I/O disques sont critiques aussi bien en écriture qu’en lecture lorsque l’usage de Solr implique des mises à jours des données fréquentes voir permanentes.
  • les I/O disques ne sont pas critiques si l’usage implique des mises à jours des données peu fréquentes
  • les I/O disques ne sont pas critiques si l’usage implique des mises à jours des données volumineuses mais à des heures de faible affluence en recherche

Si la mémoire RAM disponible ne respecte pas les conseils de bonne pratique, les I/O disque sont critiques dans tous les cas.

Lorsque le cas d’usage implique des I/O disques critiques, utiliser des disques SSD est à envisager.

Installation

  • créer un utilisateur solr
  • Dans le cas d’une installation en mode Solrcloud, mettre en place le fichier /etc/hosts avec le contenu suivant. Le but est d’être totalement indépendant des DNS (pannes ou problème de configuration) tant pour résoudre les noms des serveurs Solr que le nom des serveurs Zookeeper
  • extraire l’archive dans un répertoire temporaire
  • Créer un répertoire de log
  • Configurer /etc/default/solr.in.sh

/etc/default/solr.in.sh est le fichier de configuration de Solr. Les principaux paramètres à modifier sont ceux-ci.

Script de démarrage

Le script de démarrage de Solr est /etc/init.d/solr