Site icon Eolya Consulting

Environnement SolrCloud (Solr 4.0) minimal de développement ou de test

Afin de s’initier à SolrCloud ou disposer d’un environnement minimal de test la meilleur solution est d’utiliser Jetty et le Zookeeper interne de Solr. Voici un exemple d’installation d’un environnent à 2 noeuds.

Nous allons installer le cloud dans le répertoire « /opt/solrcloud-test ».

Installation du cloud

Créer le répertoire d’installation

cd /opt
mkdir solrcloud-test
cd solrcloud-test

Copier dans la distribution Solr 4.3.1 dans solrcloud-test

On a alors le fichier /opt/solrcloud-test/solr-4.3.1.tgz et on extrait son contenu.

tar xf solr-4.3.1.tgz

Créer le noeud 1

cp -r solr-4.3.1/example node1

Faire un peu de nettoyage

rm -rf node1/example-DIH node1/multicore/ node1/solr/collection1

Supprimer la déclaration du core collection1 dans node1/solr/solr.xml en éffaçant la ligne suivante

<core name="collection1" instanceDir="collection1" />

Copier les librairies complémentaires

Si vous prévoyez d’utiliser des extensions Solr tel que le DIH, il faut créer un répertoire lib dans node1/solr et y copier les jar nécessaires et leurs dépendances

mkdir node1/solr/lib
cp solr-4.3.1/dist/solr-dataimporthandler-* node1/solr/lib/.
cp /<quelque_part>/mysql-connector-java-5.0.4-bin.jar/node1/solr/lib/.

Dupliquer le noeud 1 en un noeud 2

cp -r node1 node2

Scripts de démarrage

Créer des scripts de démarrage des 2 noeuds dans /opt/solrcloud-test

start-node1.sh

#!/bin/sh
cd node1
java -DzkRun -jar start.jar

start-node2.sh

#!/bin/sh
cd node2
java -Djetty.port=8993 -DzkHost=localhost:9983 -jar start.jar

Avec ces scripts :

Attention, à cette étape, le cloud fonctionne mais l’administration Solr indique une erreur car aucun core n’est encore opérationnel dans les noeuds

http://localhost:8983/solr/#/~cloud

Créer une collection

Pour cela, on va charger le répertoire conf de la collection dans Zookeeper. Nous utilisons pour l’exemple la collection « collection1 » fournie avec la distribution Solr.

java -classpath .:node1/lib/ext/*:node1/solr-webapp/webapp/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:9983 -confdir solr-4.3.1/example/solr/collection1/conf -confname collection1

Remarque : le wiki SolrCloud, indique comme classpath pour cette opération « -classpath node1/solr-webapp/WEB-INF/lib/* ». Or avec ce classpath, on obtient des erreurs de chargement des dépendances.

Puis, nous créons une collection « collection1 » avec la configuration chargée dans Zookeeper. Cette collection est constituée d’un shard unique mais également d’un réplica. Elle utilise donc les 2 noeuds.

curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=collection1&numShards=1&replicationFactor=2&maxShardsPerNode=1&collection.configName=collection1'

On peut suivre le travail de création dans les consoles Jetty des 2 noeuds

Remarque : Afin de charger les librairies des extensions que l’on a copié dans les répertoires solr/lib de chaque noeud, il faut que le fichier solrconfig.xml sache les trouver. Il faut donc avoir la ligne suivante

<lib dir="../solr/lib"/>

Pour tout réinitialiser

Si vous souhaiter pourvoir réinitialiser complètement le cloud, il faut:

rm -rf node1/solr/zoo_data
rm -rf node1/solr/collection1_shard1_replica1
rm -rf node2/solr/collection1_shard1_replica2
Quitter la version mobile