Mise en oeuvre de SolrCloud (Solr 4.0)

solr

Objectifs

Après avoir présenté les principes de SolrCloud dans l’article « Présentation de SolrCloud« , dans cet article nous procéderons à l’installation d’un cluster SolrCloud avec 4 noeuds et un ensemble Zookeeper de 3 éléments. Pour l’exercice, nous installons tout sur un serveur physique unique, mais dans la réalité, plusieurs serveurs sont utilisés. Les explications sont synthétiques car nous supposons que Java, Tomcat et Solr (en mode non SolrCloud) sont des compétences maitrisées. Pour une installation standard de Solr 4.3.0, il est possible de se référer à l’article « Installer Solr 4.3.0 sous Tomcat 7« .

Les pré-requis minimum pour un serveur hébergeant un noeud SolrCloud :

  • Oracle Java 6 ou 7
  • Tomcat 6.0.x ou 7.0.x
  • Processeur quad-core
  • 4 Go de ram

Les pré-requis usuels pour une serveur hébergeant un élément d’un ensemble Zookeeper :

  • Oracle Java 6 ou 7
  • Processeur dual-core
  • 2 Go de ram

Pour SolrCloud, chaque noeud est constitué de :

  • 1 instance Solr 4.x
  • 1 serveur Tomcat 7

Normalement chaque noeud fonctionne sur son propre serveur physique et pour tous le serveur Tomcat utilise certainement le même port (8080 ou 8180 en général). Pour une installation de 4 noeuds sur un même serveur, chaque serveur Tomcat utilise un port différent (8180, 8280, 8380 et 8480).

Sur ce serveur, on installe également un ensemble Zookeper de 3 éléments.

Un autre point à prendre en compte est la bande passante réseau entre toutes les composantes du Cloud, c’est a dire entre les serveur hébergeant un noeud Solr ou une instance Zookeeper. Lors d’une indexation de données, un noeud qui est destinataire de l’appel REST fait par l’application cliente a toute les chances de devoir transmettre les données à indexer au vrai noeud final, puis ces données seront répliquées. Lors d’une recherche, c’est identique, le noeud destinataire de l’appel REST doit transmettre la requête à un ou plusieurs autres noeuds (shards de la collection). En conséquence, la traffic réseau interne au Cloud peut être très important car forcément un multiple du traffic réseau en provenance ou à destination de l’extérieur du Cloud. Donc pour un Cloud de production fortement sollicité, un réseau intra-cloud Gigabit est impératif et peut être même 10 Gigabits.

Installation

Récupérer Solr, Zookeeper et Tomcat

  • Télécharger Zookeeper 3.4.5 sur http://zookeeper.apache.org et le décompresser dans /opt/downloads/
  • Télécharger Solr 4.3.x sur http://lucene.apache.org et le décompresser dans /opt/downloads/
  • Télécharger Tomcat 7.0.x sur http://tomcat.apache.org et le décompresser dans /opt/downloads/

Augmenter les limites systèmes

Dans « /etc/security/limits.conf » file, ajouter cette ligne et rémarrer le serveur

Installer l’ensemble Zookeeper

  • on choisi comme répertoire d’installation “/opt/zookeeper”

  • créer le fichier de configuration “/opt/zookeeper/conf/zoo1.cfg” avec le contenu suivant

  • copier ce fichier en zoo2.conf et zoo3.conf et modifier les paramètres dataDir et clientPort avec respectivement :

et

  • créer des répertoires data pour les 3 instances Zookeeper de l’ensemble
  • Créer les fichiers myid dans chaque répertoire data. Ce fichier ne contient uniquement une ligne qui est le numéro de l’instance Zookeeper qui utilise ce répertoire de données (un chiffre de 1 à 255).
  • démarrer l’ensemble
  • tester Zookeeper

Installation d’un noeud SolrCloud

Comme nous l’avons déjà dit, un noeud SolrCloud est constitué d’un serveur Tomcat et de Solr 4.0. Une procédure d’installation standard (non SolrCloud) est d’écrite dans l’article « Installer Solr 4.3.0 sous tomcat 7« .

Chaque noeud est installé dans un répertoire “/opt/nodeN”

  • Créer l’arborescence pour le noeud 1
  • Mettre en place le fichier “/opt/node1/solr/home/solr.xml”

Le fichier solr.xml contient la définition des cores de l’instance Solr. Pour l’instant, il ne contient pas de déclaration de core et aucun core avec des fichiers de configuration ou de répertoire “data” pour les index ne doivent être créés. SolrCloud réalise ces taches lui-même lors de l’utilisation de la Collections API pour créer les collections. Chaque core correspond à un shard d’une collection ou à un de ces replicas.

  • Mettre en place le fichier “/opt/node1/solr/webapp/solr.war”
  • Mettre en place le fichier de configuration des logs
  • Copier Tomcat dans “/opt/node1/tomcat” de manière à ce que l’on ai directement dans ce répertoire les répertoires bin, conf, log, webapps, …
  • Mettre en place les dépendances Solr dans Tomcat
  • Mettre en place un fichier “/opt/node1/tomcat/bin/setenv.sh” (avec l’attribut +x) pour Tomcat

Afin d’éviter les erreurs habituelles « Out of heap size memory » et « Out of permgen memory », on fixe ici d’autres paramètres importants pour Solr, tels que :

  • Modifier le fichier “catalina.sh”

Le but est d’éviter l’erreur habituelle « Too many open files ». On place cette ligne au début du fichier.

  • Modifier le fichier “server.xml” de Tomcat (opt/node1/tomcat/conf/server.xml)
    • mettre le port d’écoute à 8180 et le port d’arrêt à 8185
    • ajouter « URIEncoding= »UTF-8″ » au connecteur
    • mettre le connecteur AJP/1.3 en commentaire
  • Déclacer Solr dans Tomcat

Il s’agit de copier un fragment de configuration JNDI dans le répertoire “conf/Catalina/localhost” de Tomcat. Créer dans ce répertoire un fichier “solr.xml” avec le contenu suivant :

Dupliquer le noeud Solr en 3 autres noeuds

Le principe pour dupliquer le noeud 1 en un autre noeud est le suivant :

  • dupliquer /opt/node1
  • mettre à jour les fichiers de configuration Solr

Changer le port dans /opt/nodeN/solr/home/solr.xml (hostPort)

  • mettre à jour les fichiers de configuration Tomcat

Changer les ports dans :

/opt/nodeN/tomcat/conf/server.xml
/opt/nodeN/tomcat/bin/setenv.sh (-Dport=…)

Changer le répertoire home de Sorl dans /opt/nodeN/tomcat/bin/setenv.sh

-Dsolr.solr.home=…

Modifier la configuration jndi de Solr dans Tomcat (/opt/nodeN/tomcat/conf/Catalina/localhost/solr.xml)

Démarrer les 4 nodes

Conclusion

On doit avoir maintenant une configuration SolrCloud de 4 noeuds démarrés avec un ensemble Zookeeper de 3 éléments.

L’étape suivante est de charger des configurations Solr dans Zookeeper et de créer des collections. Nous verrons ceci dans un prochain article.

16 Commentairess

  1. jackboy70 1 août 2013
  2. admin 1 août 2013
  3. jackboy70 1 août 2013
  4. admin 1 août 2013
  5. jackboy70 1 août 2013
  6. jackboy70 1 août 2013
  7. admin 1 août 2013
  8. jackboy70 2 août 2013
  9. admin 2 août 2013
  10. jackboy70 5 août 2013
  11. admin 5 août 2013
  12. jackboy70 7 août 2013
  13. admin 7 août 2013
  14. jackboy70 8 août 2013
  15. admin 8 août 2013
  16. admin 8 août 2013

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *